第一部分:expect讲解
expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令。当然若是使用不带密码的密钥验证同样可以实现自动登录和自动远程执行命令。但当不能使用密钥验证的时候,我们就没有办法了。所以,这时候只要知道对方机器的账号和密码就可以通过expect脚本实现登录和远程命令。
expect可以实现:1 远程同步文件,借助rsync命令
2 远程执行命令,使用SSH远程登陆执行命令
使用expect之前,需要先安装expect:
yum install -y expect
#! /usr/bin/expect #抬头和SHELL类似
set host "192.168.11.102" #expect语句,等同于host=192.168.11.102
set passwd "123456" #passwd=123456
spawn ssh root@$host #expect语句,后面就是shell登陆机器的命令了
expect { #expect语句模块,第一次登陆时,会提示yes或no。自动执行
"yes/no" { send "yes\r"; exp_continue} 如果不是第一次登陆,则不执行。
"assword:" { send "$passwd\r" } #匹配最后几个字符assword,发送密码变量。
}
interact
以上为expect的固定语法,其中expect语句模块是必须要有的。
脚本保存为 1.expect
增加执行权限 chmod +x 1.expect
执行脚本 ./1.expect(注意没有空格且需要X权限)或者expece 1.expect(不需要X权限)
注意脚本中\r 是回车的意思