我使用shell脚本通过FTP传输文件,我的shell工作正常。 但问题是我的shell脚本挂起,如果FTP连接在传输之间掉落,则不会退出。
这就是我的shell脚本的样子。
echo "open $ip" > ${cmd_File}
echo "user $usrnm $psswd" >> ${cmd_File}
echo "cd $location" >> ${cmd_File}
echo "binary" >> ${cmd_File}
echo "put $filename" >> ${cmd_File}
echo "bye" >> ${cmd_File}
progress=$(ftp -vin < ${cmd_File} 2>&1) 1> /dev/null
如果有人能帮助我处理错误,我会很高兴,我的代码工作得很好,除非连接介于两者之间。 这段代码只挂起,我需要在发生这样的事情时退出代码。
谢谢, 作者Abhijit
答案 0 :(得分:1)
我使用lftp
代替ftp
解决了问题。
在我的情况下,我试图在GoDaddy在线存储FTP上传文件。出于某种原因,最大文件(500 MB)的传输永远悬空。
照常安装(存在于主发行版中):
yum install lftp
(CentOS)
zypper install lftp
(openSuse)
...
然后创建你的脚本:
#!/bin/sh
echo FTP begin at : $(date)
lftp -u myUser,myPassword myFTPSite <<EOF
put myfile.gz
bye
EOF
echo $(date) : FTP ended
echo Validating RAID
cat /proc/mdstat
exit 0
答案 1 :(得分:0)
在ftp命令中使用-q quittime
选项:
根据mn ftp:
-q quittime
Quit if the connection has stalled for quittime seconds.
尝试此命令,例如:
progress=$(ftp -q 30 -vin < ${cmd_File} 2>&1) 1> /dev/null
答案 2 :(得分:0)