写一个shell脚本,定时发送sftp多个文件到多个地址,并创建当前时间文件夹
时间: 2024-03-21 20:43:19 浏览: 54
好的,以下是一个简单的shell脚本,用于定时发送多个文件到多个sftp地址,并在每个地址的远程目录下创建当前时间的文件夹:
```
#!/bin/bash
# 设置变量
SFTP_USERNAME="your_username"
SFTP_PASSWORD="your_password"
LOCAL_DIR="/path/to/local/directory"
REMOTE_DIR="/path/to/remote/directory"
# 获取当前时间
TIME=$(date +"%Y-%m-%d-%H-%M-%S")
# 遍历多个sftp地址
for SFTP_HOST in "sftp1.example.com" "sftp2.example.com" "sftp3.example.com"; do
# 连接sftp服务器并创建当前时间的目录
sftp -b - $SFTP_USERNAME@$SFTP_HOST <<EOF
mkdir $REMOTE_DIR/$TIME
quit
EOF
# 遍历多个本地文件
for LOCAL_FILE in $(ls $LOCAL_DIR); do
# 连接sftp服务器并发送文件
sftp -b - $SFTP_USERNAME@$SFTP_HOST <<EOF
put $LOCAL_DIR/$LOCAL_FILE $REMOTE_DIR/$TIME/$LOCAL_FILE
quit
EOF
done
done
```
将上面的脚本保存为一个文件,例如`send_sftp_files.sh`,然后使用`crontab`命令添加一个定时任务,例如每天晚上7点自动发送文件:
```
0 19 * * * /bin/bash /path/to/send_sftp_files.sh
```
注意将上面的路径替换为实际的文件路径。这样,当定时任务触发时,脚本将会连接到多个指定的sftp服务器,并在每个远程目录下创建当前时间的文件夹,然后将本地目录中的所有文件发送到各自的远程目录中。
阅读全文