最近使用的脚本中需要输入用户名密码,所以使用了expect,归纳一下使用方法和注意的点
首先,expect需要安装后使用,安装方法非常简单,使用yum install expect即可完成安装。
脚本大致如下:
#!/bin/bash
/usr/bin/expect <<EOF
spawn su - username
expect {
"口令:"
{
send "password\r"
send "sleep 1 \r"
}
}
expect eof
spawn scp -r backup username@ipaddress:/backup/ldap/
expect {
"password:"
{
send "this is password\r"
}
}
expect eof
interact
EOF
expect后面第一个括号中写的是在遇到什么字符时触发,send后面的双引号中为要输入的字符。需要注意的是send不会自动换行,需要添加\r。
如果是scp之类的传输文件,注意需要用set timeout 60设置超时时间,60为秒,不设置的话默认为10秒。