From: Takashi Yano <takashi.yano@nifty.ne.jp>
To: "'cygwin@cygwin.com'" <cygwin@cygwin.com>
Cc: "suzuki.masaomi@fujitsu.com" <suzuki.masaomi@fujitsu.com>,
"'soft-mpop-qqm@ml.css.fujitsu.com'"
<soft-mpop-qqm@ml.css.fujitsu.com>
Subject: Re: scp command fails to transfer file and returns 1.
Date: Wed, 13 Jul 2022 23:38:33 +0900 [thread overview]
Message-ID: <20220713233833.96744de926432f10ab45bd22@nifty.ne.jp> (raw)
In-Reply-To: <TYCPR01MB6818607796F45A8DB98EF21B87899@TYCPR01MB6818.jpnprd01.prod.outlook.com>
On Wed, 13 Jul 2022 07:41:25 +0000
> Cygwinサポート ご担当様
>
> お世話になっております。
> 沈 テイです。
>
> 下記の問題の解決について、ご協力をお願いします。
>
> ■環境
> OS: Windows Server 2019
> Cygwinバージョン: 3.3.5
>
> ■問題が起きた背景
> 当方のアプリケーションプログラムでは、リモートシステム(OS: Linux)へ
> SSH通信やファイル転送を行う目的で、Cygwinに含まれるssh, scpコマンドを
> 子プロセスとして実行する実装にしています。
> ※実証内容の詳細は、"■当方のアプリケーションプログラム"を参照
> ※事前準備として、SSH公開鍵を設定し、パスワードの問い合わせ無しで
> SSH接続できることを確認しています。
>
> ■問題の内容
> URL(https://www.cygwin.com/)からダウンロードした最新バージョン(3.3.5)の
> CygwinをOSに導入した後、当方のアプリケーションプログラムを実行すると、
> scpコマンドは毎回、戻り値"1"で復帰し、ファイル転送が失敗します。
>
> 当方のアプリケーションプログラムをデバックした結果、
> scpコマンドは下記のメッセージを返却していました。
>
> /usr/bin/scp: dest open ""/tmp/a"": No such file or directory
> /usr/bin/scp: failed to upload file /cygdrive//C/test/a to "/tmp/a"
>
> ■問題の補足
> ・scpコマンドを、当方のアプリケーションプログラムから子プロセスとして
> 実行するのではなく、コマンドプロンプトやCygwin Bash Shellから直接的に
> 実行した場合は、戻り値"0"で復帰し、ファイル転送は成功します。
>
> ・旧バージョン(3.2.0)のCygwinを同じOSに導入した後、
> 当方のアプリケーションプログラムを実行した場合は、scpコマンドは
> 戻り値"0"で復帰し、ファイル転送は成功します。
>
> 以上のことから、我々は、最新バージョン(3.3.5)と旧バージョン(3.2.0)の
> Cygwinで、scpコマンドの動作仕様に何らかの非互換があるのではないか、と
> 推測しています。
>
> ■依頼事項
> 上記の問題に対して、考えられる原因および対処方法はありますか?
>
> <回答先>
> soft-mpop-qqm@ml.css.fujitsu.com
>
> ■当方のアプリケーションプログラム
> ・子プロセスの実行方法
> Windows APIのCreateProcess()を以下の様に使用し、子プロセスを実行します。
>
> CreateProcess(NULL,
> fullPathCmd, /* ssh,scpのcommond line */
> NULL, /* process security attributes */
> NULL, /* primary thread security attributes */
> TRUE, /* handles are inherited */
> NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW, /* creation flags */
> NULL, /* use parent's environment */
> NULL, /* use parent's current directory */
> &si, /* STARTUPINFO pointer */
> &pi); /* receives PROCESS_INFORMATION */
>
> ・sshコマンドを実行する時のコマンドライン
> 上記に示したCreateProcess()の第2パラメタfullPathCmdを、以下の様に
> 指定しています。
>
> <Cygwinのインストールディレクトリ>\bin\ssh.exe -q -l root -p 22 ホスト名 "echo aaa && /bin/sh -c \"/bin/uname -n\""
>
> ・scpコマンドを実行する時のコマンドライン
> 上記に示したCreateProcess()の第2パラメタfullPathCmdを、以下の様に
> 指定しています。
>
> <Cygwinのインストールディレクトリ>\bin\scp.exe "/cygdrive//C/test/a" "root"@ホスト名:""/tmp/a""
>
>
> 以上、よろしくお願いします。
>
>
> 以降は英訳文章です。
> ******************************************************************
> Cygwin Support Dear Representatives
>
> Thank you for your support.
> I am Shen Ting.
>
> We ask for your cooperation in solving the following problem.
>
> ■Environment
> OS: Windows Server 2019
> Cygwin Version : 3.3.5
>
> ■Background of the problem
> In our application program, for the purpose of SSH communication and file transfer to a remote system (OS: Linux),
> the ssh and scp commands included in Cygwin are executed as child processes.
> (*) For details of the demonstration contents, refer to "■Our Application Program"
> (*)As a preliminary preparation, we set the SSH public key and
> confirm that we can connect to SSH without inquiring about the password.
>
> ■The problem
> In the OS, after installing the latest version (3.3.5) of Cygwin downloaded from the URL(https://www.cygwin.com/),
> when we execute our application program, the scp command returns "1" every time, and the file transfer fails.
>
> As a result of debugging our application program, the scp command returned the following message.
>
> /usr/bin/scp: dest open ""/tmp/a"": No such file or directory
> /usr/bin/scp: failed to upload file /cygdrive//C/test/a to "/tmp/a"
>
> ■Problem supplement
> ・If the scp command is executed directly from the command prompt or Cygwin Bash Shell
> instead of being executed from our application program as a child process,
> "0" will be returned and the file transfer will succeed.
>
> ・If we execute our application program after introducing the old version Cygwin(3.2.0) to the same OS,
> the scp command will return "0" and the file transfer will be successful.
>
> From the above, we speculate that there may be some incompatibility in the operating specifications of
> the scp command in the latest version Cygwin(3.3.5) and the old version Cygwin(3.2.0).
>
> ■Requests
> Are there any possible causes and workarounds for the above problem?
>
> <Respondents>
> soft-mpop-qqm@ml.css.fujitsu.com
>
> ■Our Application Program
> ・How child processes run
> Use the Windows API CreateProcess() as follows to execute the child process.
>
> CreateProcess(NULL,
> fullPathCmd, /* ssh,scpのcommond line */
> NULL, /* process security attributes */
> NULL, /* primary thread security attributes */
> TRUE, /* handles are inherited */
> NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW, /* creation flags */
> NULL, /* use parent's environment */
> NULL, /* use parent's current directory */
> &si, /* STARTUPINFO pointer */
> &pi); /* receives PROCESS_INFORMATION */
>
> ・Command line when executing ssh command
> The second parameter of CreateProcess() shown above, fullPathCmd, is specified as follows.
>
> <Cygwin Installation Directory>\bin\ssh.exe -q -l root -p 22 ホスト名 "echo aaa && /bin/sh -c \"/bin/uname -n\""
>
> ・Command line when executing scp command
> The second parameter of CreateProcess() shown above, fullPathCmd, is specified as follows.
>
> <Cygwin Installation Directory>\bin\scp.exe "/cygdrive//C/test/a" "root"@ホスト名:""/tmp/a""
I cannot reproduce your problem. Could you please provide
simple test case in C-lang?
--
Takashi Yano <takashi.yano@nifty.ne.jp>
next prev parent reply other threads:[~2022-07-13 14:39 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-13 7:41 suzuki.masaomi
2022-07-13 14:38 ` Takashi Yano [this message]
2022-07-16 14:10 ` Cyrille Lefevre
2022-07-19 2:40 ` [soft-mpop-qqm:27201] " suzuki.masaomi
2022-07-19 4:18 ` Takashi Yano
2022-07-19 4:53 ` Takashi Yano
2022-07-20 1:42 ` suzuki.masaomi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220713233833.96744de926432f10ab45bd22@nifty.ne.jp \
--to=takashi.yano@nifty.ne.jp \
--cc=cygwin@cygwin.com \
--cc=soft-mpop-qqm@ml.css.fujitsu.com \
--cc=suzuki.masaomi@fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).