From: http://www.cnblogs.com/sunss/archive/2010/12/23/1914763.html
在工作中,我需要把远程服务器上的文件,拷贝到本地,可是scp的时候必须输入密码,用here文档又不能实现,终于找到一个好东东,expect ,可以实现自动登录,我们可以借助expect在ssh,ftp,scp等地方实现自动登录,加入到脚本中,可以自动完成一些事情,先把我的测试通过的脚本贴出来:
#!/bin/bash
for i in a b c
do
/usr/bin/expect<<EOF
set timeout 1200;
spawn /usr/bin/scp root@192.168.0.26:/home/sunss/backup/$i/* /root/sss/$i/
expect "root@192.168.0.26's password:"
send "123456\r"
expect eof
EOF
done
ssh远程登录做些操作:
#!/bin/bash
#远程登录重启mysql
/usr/bin/expect<<EOF
set timeout 120;
spawn /usr/bin/ssh root@192.168.0.26
expect "*password:"
send "123456\r"
sleep 1
send "/etc/init.d/mysqld restart\r"
sleep 2
send "exit\r"
expect eof
EOF