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-...@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-...@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.y...@nifty.ne.jp>

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to