expect 是 Unix 系统中用来进行自动化控制和测试的软件工具,由 Don Libes 编写,作为 Tcl(Tool Command Language)脚本语言的一个扩展,应用在交互式软件中,如 telnet,ftp,Passwd,fsck,rlogin,tip,ssh 等等。该工具利用 Unix 伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;也可利用 Tk 工具,将交互程序包装在 X11 的图形用户界面中。
expect 命令
要使用 expect,要熟练掌握 expect 中定义的命令,如 expect,spawn,send,wait 等等。
expect 中最关键的四个命令是 send,expect,spawn,interact。
- send:用于向进程发送字符串。
- expect:从进程接收字符串。
- spawn:启动新的进程。
- interact:允许用户交互。
SSH 自动登陆示例
首先,编写 expect 脚本,主要是四个关键命令,示例如下:
#!/usr/bin/expect
# 启动一个 ssh 进程
spawn ssh -p 60022 user@10.1.1.1
# 接收字符串 password
expect "*password:"
# 发送实际 密码,\r 代表回车命令
send "inputpsd\r"
# 允许用户交互
interact
然后,将脚本保存后(如 auto_ssh),直接执行 expect 脚本,示例如下:
expect auto_ssh