バッチモードを使用する sftp は、mput および mget コマンド応答エコーを抑制します。

バッチモードを使用する sftp は、mput および mget コマンド応答エコーを抑制します。

最近、OpenSSHを6.0から7.5にアップグレードしました。

私のコードはput/getコマンド応答エコーをキャプチャし、確認のために処理します。

パスワード:

exec 3>&1 4>&2
  exec > $TempSessionLog 2>&1
  set -x 
  cd $LocalDir
  sftp -o PreferredAuthentications=hostbased,publickey -P $rport -b $batfile "$ruser"@"$ripaddress" > $TempLogFile  << EndFTP  
EndFTP
  retval="$?"  
    exec 1>&3 2>&4
  set +x

OpenSSH 6.0では、応答は次TempLogFileのようにキャプチャされます。

sftp> cd /user/data/errors/support/01
sftp> pwd
Remote working directory: /user/data/errors/support/01
sftp> mput "EVERYTHING_GAA_20131029_113243_R9976594.txt.D20131029.T1520.txt"
**Uploading EVERYTHING_GAA_20131029_113243_R9976594.txt.D20131029.T1520.txt to /user/data/errors/support/01/EVERYTHING_GAA_20131029_113243_R9976594.txt.D20131029.T1520.txt**
sftp> bye

OpenSSH 7.5にアップグレードした後、エコーが停止しました。

sftp> cd /user/data/errors/support/01
sftp> pwd
Remote working directory: /user/data/errors/support/01
sftp> mput "EVERYTHING_GAA_20131029_113243_R9976594.txt.D20131029.T1520.txt"
sftp> bye

応答エコーを復元する方法を知っていますか?

答え1

OpenSSH 6.3以降(犯罪)、その-b意味は実際には-q次の-qとおりです。

「sftp -q」を使用して、ラベルに示されているとおりに実行してください。エラーを除くすべてを非表示にします。

case 'b':
    // ...
    showprogress = 0;
    quiet = batchmode = 1;
if (!quiet)
    printf("Uploading %s to %s\n", g.gl_pathv[i], abs_dst);

この動作を復元する方法はありません。


ただし、スクリプトがデフォルトで単一のコマンドを実行し、出力を使用して結果を確認した場合は、バッチモードなしで実行できます。標準入力を使用してコマンドを渡すだけです。

関連情報