배치 모드를 사용하는 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);

이 동작을 복원할 수 있는 방법은 없습니다.


그러나 스크립트가 기본적으로 단일 명령을 실행하고 출력을 사용하여 결과를 확인하는 경우 배치 모드 없이도 수행할 수 있습니다. 표준 입력을 사용하여 명령을 전달하면 됩니다.

관련 정보