SFTP shell脚本

时间:2017-01-13 20:58:48

标签: bash sftp expect

我在RHEL 5系统上有一个Bash脚本,用于在服务器和许多外部系统之间执行各种安全文件传输操作。通常情况下,脚本运行正常,并使用expect生成一个ftp会话来执行像MGET这样的事情,然后从目标服务器中获取文件。但是,在成功进行MGET传输后尝试删除文件时,脚本偶尔会出现输出“无法统计远程文件:没有此类文件或目录”的错误。乍一看,此错误很简单,似乎表明该文件不存在。但脚本输出显示文件存在并已正常传输:

SFTP protocol version 3
sftp> get /home/sistran/parchment/*.xml /nfs/ftp-banp/college_xml
Fetching /home/sistran/parchment/TQB10G4D.xml to /nfs/ftpbanp/college_xml/TQB10G4D.xml
Fetching /home/sistran/parchment/TQB1343C.xml to /nfs/ftp-banp/college_xml/TQB1343C.xml 

然后我的输出显示统计错误:

sftp> quit
Result of error check: 617
!SFTP - Successful File Transfer Performed.
Connecting to abc.xyz.edu...

sftp> 
sftp> rm /home/sistran/parchment/TQB10G4D.xml
Couldn't stat remote file: No such file or directory
Removing /home/sistran/parchment/TQB10G4D.xml
Couldn't delete file: No such file or directory
sftp> quit
\r

在批处理操作中的许多文件的文件传输过程中,有时会发生这种情况。不幸的是,我不能在外部服务器上进行故障排除。下面是执行mget和rm的脚本片段:

 ....if [ "$F1" = "$ftp_success_string" ]; then
            if [ "$password_option" = "1" ]; then
 # ----- SFTP command here (password) -----
 /usr/bin/expect - << EOF
 spawn /usr/bin/sftp -oPort=$PORT $userid@$dest
 expect "assword: "
 send "${send_password}\r"
 expect "sftp> "
 send "rm $F2\r"
 expect "sftp> "
 send "bye \r"
 EOF
   err=$?
 else
    # ----- SFTP command here (public Key) -----
    echo "
    rm $F2
    quit
    "|sftp -oPort=$PORT -oPubkeyAuthentication=yes $userid@$dest 2>&1
  fi....

帮助!如果有更好的方法,我也愿意不使用expect。

0 个答案:

没有答案