写一个shell脚本,定时发送sftp文件
时间: 2023-07-20 07:44:10 浏览: 66
好的,以下是一个简单的shell脚本,用于定时发送sftp文件:
```
#!/bin/bash
# 设置变量
SFTP_USERNAME="your_username"
SFTP_PASSWORD="your_password"
SFTP_HOST="sftp.example.com"
SFTP_PORT="22"
LOCAL_FILE="/path/to/local/file"
REMOTE_FILE="/path/to/remote/file"
# 连接sftp服务器并发送文件
sftp -P $SFTP_PORT $SFTP_USERNAME@$SFTP_HOST <<EOF
put $LOCAL_FILE $REMOTE_FILE
quit
EOF
```
将上面的脚本保存为一个文件,例如`send_sftp_file.sh`,然后使用`crontab`命令添加一个定时任务,例如每天晚上7点自动发送文件:
```
0 19 * * * /bin/bash /path/to/send_sftp_file.sh
```
注意将上面的路径替换为实际的文件路径。这样,当定时任务触发时,脚本将会连接到指定的sftp服务器,并将本地文件发送到指定的远程路径。
相关问题
写一个shell脚本,定时发送sftp多个文件到多个地址,并创建当前时间文件夹
好的,以下是一个简单的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服务器,并在每个远程目录下创建当前时间的文件夹,然后将本地目录中的所有文件发送到各自的远程目录中。
使用shell脚本编写一个sftp自动上传文件的脚本
好的,以下是一个使用sftp自动上传文件的shell脚本示例:
```bash
#!/bin/bash
# sftp服务器信息
sftp_user="username"
sftp_host="hostname"
sftp_port="port"
sftp_key="path/to/private/key"
# 本地文件路径和文件名
local_file="path/to/local/file"
remote_dir="path/to/remote/directory"
remote_filename="filename"
# 连接sftp服务器并上传文件
sftp -i $sftp_key -P $sftp_port $sftp_user@$sftp_host <<EOF
cd $remote_dir
put $local_file $remote_filename
EOF
echo "文件上传完成"
```
解释一下脚本的各个部分:
- sftp服务器信息:需要填写sftp服务器的用户名、主机名、端口号和私钥文件路径(如果使用密码登录,则可以不填写私钥文件路径,改为使用密码登录)。
- 本地文件路径和文件名:需要填写要上传的本地文件的完整路径和文件名,以及要上传到远程服务器的目录和文件名。
- 连接sftp服务器并上传文件:使用sftp命令连接到服务器,并执行cd切换到要上传的目录,然后使用put命令上传本地文件到远程服务器。
- 最后输出上传完成的提示信息。
这个脚本可以根据实际情况进行修改,比如可以加上错误处理、日志记录等功能。