![具有批处理模式的 sftp 抑制 mput 和 mget 命令响应回显](https://linux22.com/image/156247/%E5%85%B7%E6%9C%89%E6%89%B9%E5%A4%84%E7%90%86%E6%A8%A1%E5%BC%8F%E7%9A%84%20sftp%20%E6%8A%91%E5%88%B6%20mput%20%E5%92%8C%20mget%20%E5%91%BD%E4%BB%A4%E5%93%8D%E5%BA%94%E5%9B%9E%E6%98%BE.png)
我最近将 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
和 the-q
确实相当:
让“sftp -q”按照标签上的说明执行操作:除了错误之外,隐藏所有内容;
case 'b':
// ...
showprogress = 0;
quiet = batchmode = 1;
if (!quiet)
printf("Uploading %s to %s\n", g.gl_pathv[i], abs_dst);
没有办法恢复该行为。
但是,如果您的脚本基本上执行单个命令,并且您使用输出检查结果,则可以不使用批处理模式。只需使用标准输入传递命令即可。