sftp上传备份脚本 使用账号密码登录
时间: 2023-10-08 17:12:47 浏览: 90
你可以使用以下脚本来进行SFTP上传备份,使用账号密码进行登录:
```bash
#!/bin/bash
# 设置SFTP服务器信息
SFTP_HOST="sftp.example.com"
SFTP_PORT="22"
SFTP_USER="username"
SFTP_PASS="password"
SFTP_REMOTE_DIR="/path/to/remote/dir"
# 设置本地备份文件路径
LOCAL_BACKUP_DIR="/path/to/local/backup/dir"
# 获取最新备份文件名
BACKUP_FILE=$(ls -Art $LOCAL_BACKUP_DIR | tail -n 1)
# 使用expect命令来自动化SFTP上传过程
expect -c "
spawn sftp -oPort=$SFTP_PORT $SFTP_USER@$SFTP_HOST
expect \"password:\"
send \"$SFTP_PASS\r\"
expect \"sftp>\"
send \"cd $SFTP_REMOTE_DIR\r\"
expect \"sftp>\"
send \"put $LOCAL_BACKUP_DIR/$BACKUP_FILE\r\"
expect \"sftp>\"
send \"exit\r\"
interact
"
```
在脚本中,我们使用了`expect`命令来模拟用户在终端中输入命令的过程,从而自动化SFTP上传过程。具体来说,我们在`expect`命令中执行以下操作:
1. 使用`spawn`命令启动`sftp`程序,并传递SFTP服务器的IP地址、端口号和登录用户名。
2. 当程序提示输入密码时,使用`send`命令发送密码。
3. 当程序提示`sftp>`时,使用`send`命令发送命令来切换到远程目录。
4. 当程序提示`sftp>`时,使用`send`命令发送命令来上传本地备份文件。
5. 当程序提示`sftp>`时,使用`send`命令发送命令来退出`sftp`程序。
6. 使用`interact`命令结束`expect`命令。
注意,在使用`expect`命令时,需要将SFTP登录密码明文写在脚本中,这可能存在安全风险。如果你需要更加安全的登录方式,可以考虑使用SSH密钥认证方式登录SFTP服务器。