我需要不断地通过FTP自动发送文件。最初,我只是有一个脚本,它为FTP提供了stdin,但是意识到每次我这样做,我都需要关闭然后重新打开服务器和客户端之间的连接。重新连接需要比实际发送文件更多的时间。我试着通过制作一个单独的脚本来打开连接并运行一个脚本来循环发送文件来避免这种情况。在bash脚本中循环使用FTP
问题如下:运行连接脚本后,ftp会自动断开连接。这是连接脚本。
#!/bin/bash
HOST='192.168.1.2'
USER='user'
PASSWD='passwd'
echo "open $HOST
user $USER $PASSWD
ascii" > /tmp/ftp.$$
ftp -ivn < /tmp/ftp.$$ >> ftplog.txt
rm /tmp/ftp.$$
并且这是发送文件的脚本。
#!/bin/bash
echo "put localfile.txt remotfile.txt" > /tmp/ftp.$$
ftp -ivn < /tmp/ftp.$$ >> ftplog.txt
rm /tmp/ftp.$$
连接脚本打开连接正常,但一旦运行就关闭它。任何方式来避免这种情况?
我应该说明我没有上传文件列表,而是一个由另一个脚本更新并在更新后发送的文件。这一个文件尽可能接近实时地反复发送。
嗨,这似乎不必要的复杂性在里面扔在这里。为什么让3个脚本通过输入/输出重定向一个接一个地执行,而您只需使用内置函数将脚本参数化为FTP? –
你能深入一点吗?我愿意接受其他解决方案,只是为了避免每次发送文件时不断关闭和重新打开我的连接。 –
您可以使用FTP的mput在一个连接中上传多个文件,但为了自动执行此操作,所有文件都应位于单个文件夹中 –