public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
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>

  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).