Expect调用SSH远程执行sudo命令
一、Except搭配SSH可以远程连接机器执行命令,功能强大,笔者希望采用这种Expect脚本批量管理多台Linux机器。
二、Expect环境的搭建:
1、Expect与Tcl源码文件下载、解压。
2、编译、安装,最终生成Expect可执行文件。详见:https://www.cnblogs.com/zhanggaofeng/p/6804482.html
3、与上述链接文章中不同的是,笔者并未做软链接,而是将Expect拷贝至本机/bin目录下进行使用。
三、Expect调用SSH连接远程主机,并执行sudo命令,代码如下:
#!/bin/expect set user new set host 192.168.100.1 set password 1234 set timeout 10 spawn ssh $user@$host expect "*assword:*" send "$password\r" expect "*~$*" //匹配UNIX shell提示符,如果是"#" 则改成 expect "#" 如果是"$",改成 expect "#" send "echo '1234' | sudo -S reboot\r" //采用管道输入sudo之后的密码 expect "*~$*"
四、参考文献:exploring expect