최근에 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);
이 동작을 복원할 수 있는 방법은 없습니다.
그러나 스크립트가 기본적으로 단일 명령을 실행하고 출력을 사용하여 결과를 확인하는 경우 배치 모드 없이도 수행할 수 있습니다. 표준 입력을 사용하여 명령을 전달하면 됩니다.