expect是Unix系统中用来进行自动化控制和测试的软件工具,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。
用法
Linux中我们经常写脚本处理一些繁琐的任务,但不幸的是很多交互式的命令我们不得不人肉响应。
expect可以代替我们实现与系统的交互。
我们可以通过expect实现远程自动更改用户密码,而不需要手动输入旧密码和新密码:
#!/bin/bash usr_passwd='old_passwd' new_passwd='new_passwd' while read ip do /usr/bin/expect <<-EOF set timeout -1 spawn ssh -t mina.xiang@$ip expect { "*yes/no*" { send "yes\r";exp_continue } "*assword:" { send "$usr_passwd\r" } } expect "*~]$*" { send "hostname\r" } expect "*~]$*" { send "passwd\r" } expect "(current)*password:" { send "$usr_passwd\r" } expect "New password:" { send "$new_passwd\r" } expect "Retype*password:" { send "$new_passwd\r" } expect "*~]$*" { send "exit\r" } expect eof EOF done < /home/mina.xiang/serverip.txt