在bash脚本循环FTP(Looping FTP in a bash script)

2019-10-23 18:53发布

我需要不断地发送文件自动通过FTP。 本来我只是有送入到标准输入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.$$

连接脚本打开连接正常,但一旦它运行再次关闭它。 任何办法避免这种情况?

我要澄清,我没有上传文件的列表,而是由另一个脚本更新,更新后发送一个文件。 这一个文件在尽可能接近实时地发送一遍又一遍。

Answer 1:

你可以upoload一个文件夹中的所有文件与下面的脚本

#!/bin/bash

HOST='your host'
USER="your user"
PASSWD="pass"
REMOTEPATH='/upload'

function usage(){
    echo "Usage $0 <folder>"
}

function ftp(){
  ftp -n $HOST <<END_SCRIPT
  quote USER $USER
  quote PASS $PASSWD
  cd $REMOTEPATH
  lcd $1
  mput *
  quit
  END_SCRIPT
}

if [[ $# -ne 1 ]]
    then
        usage
    else
        ftp $1 
        exit 0
fi


文章来源: Looping FTP in a bash script
标签: bash loops ftp