Linux 基础教程

Linux 参考手册

Linux 笔记

Linux expect


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