需要使用到expect。
#!/usr/bin/expect -f
set password 123456
set date [exec date "+%Y%m%d"]
#upload
spawn scp -C /data/dbdump/file/db$date.backup.gz user@1.2.3.4:/home/meng/backup-file/
set timeout 300 #超时等待300秒
expect "assword:"
set timeout 300 #超时等待300秒
send "$password\r"
#expect "100%"
set timeout 3600 #超时等待3600秒
send "exit\r"
expect eof
crontab设置
30 2 * * * /dbdump/remotedump.sh >>/var/log/remotedump.log 2>&1
expect简介
expect是一款自动化的脚本解释型的工具。
expect基于tcl脚本,expect脚本的运行需要tcl的支持。
expect对一些需要交互输入的命令很有帮助,比如ssh ftp scp telnet。
远程登录linux服务器的时候,ssh命令需要手工输入密码,当登录多台机器的时候就会非常繁琐。
expect就可以根据设定的规则,自动帮我们输入密码,大大节省了时间。
expect安装
一般机器不会自带expect,需要手动安装。
系统为RHEL/CentOS:
yum install expect