你与优秀程序员的差别,Expect实现远程自动登录

作为一个程序员,每天都需要登录远程开发机或者正式机器进行很多操作。正常流程都是打开shell终端输入ssh连接服务器输入密码,登录后执行操作。这样的工作不仅每天都在重复,而且还需要记住很多服务器的IP地址、密码等等,简直是苦不堪言。Expect就是这样一个将你解脱出来的工具。

Expect是Unix/Linux/Mac系统中用来进行自动化控制和测试的软件工具,由Don Libes制作。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制。

Expect中最关键的四个命令是send,expect,spawn,interact。

send:用于向进程发送字符串
expect:从进程接收字符串
spawn:启动新的进程
interact:允许用户交互

用Expect实现登录一个192.168.1.7服务器,在~/目录下建立login.sh. 写入下方登录代码

#!/usr/bin/expect
spawn ssh striver@192.168.1.7
expect "*Password:"
send "123456\r"
expect "*#"
interact

然后chmod +x login.sh 将脚本改为可执行。~/login.sh 实现了一键自动登录。
除了登录外,我们还可以递归的登录,此外还可以在登录后进入某个目录如cd ~主目录,输出时间等等。能有使我们自动化很多工作。

#!/usr/bin/expect
spawn ssh striver@192.168.1.7
expect "*Password:"
send "123456\r"
expect "*#"
send "cd ~\r"
expect "*#"
send "date \r"
expect "*#"
interact

有了Expect,每天日常工作中,登录远程服务器并显示相关日志,连接数据库查看相关信息等等就可以精简为一个命令,然后敲个命令悠然的喝着咖啡等待自动化执行了。可以帮助你提升工作效率,轻轻松松完成日常固定性操作,也许你与优秀程序员的差别就在这里了!

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>