expect 是一种语言,有自己的语法,expect可以轻松解决交互问题,让交互自动化,如安装软件,ssh连接,使用scp传输文件等等都需要人去操作,输入密码什么的,expect就能自动化输入
安装expect : yum -y install expect脚本开头解释器应写:#!/usr/bin/expect在这里插入代码片打开一个会话:spawn,如:spawn ssh root@192.168.1.4自动化输入语法: expect { "输入定位关键字(自己应该实际操作一遍,找关键字)" {send "模拟键盘输入的信息"} #模拟输入该信息 #...可以写多个跟上面结构一样 }上面描述的不清楚,举个例子: 找关键字: 这里的yes/no就可以作为关键字,然后send 后面写“yes\r”,换行符"\r"一定要输入
结束会话:expect eof
密钥储存位置:/root/.ssh/known_hosts ,可以删除里面的密钥
ssh的自动化连接程序:
#!/usr/bin/expect set ip [lindex $argv 0] #位置传参0表示第一个位置,依次类推 spawn ssh root@$ip expect { "yes/no" { send "yes\r" ; exp_continue } "password:" { send "hxd123HXD\r"} } #interact 保持会话 expect "#" send "pwd\r" send "cat test.sh\r" send "exit\r" expect eof