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

 

posted @ 2021-10-12 20:46  UNkey  阅读(841)  评论(0)    收藏  举报