Expect 是 Unix 系统中用来进行自动化控制 和测试的软件工具,由 DonLibes 制作,作为 Tcl 代码语言的一个扩展,应用在交互式软件中如 tel,ftp,Passwd,fsck,rlogin,tip,ssh 等
等。该工具利用 Unix 伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;也可
利用 Tk 工具,将交互程序包装在 X11 的图形用户界面中。
使用 expect 前,需要先安装两个 rpm 包, 下 载 : csdn/detail/wang7dao/4416172rpm-ihvexpect
-5.43.0-8.el5.i386.rpmrpm-ihvexpect-devel-5.43.0-8.el5.i386.rpm
!/usr/bin/expect-fsend_userYouarethebest\r\n
嘴里叼着一根嫩绿的小草,惬意的微闭双眼,嘴角轻扬起一个优美的弧度。阳光洒在那浅浅的笑容上
settimeout30sethost192.168.1.170// 要 IPsetnameroot\r// 登 陆 登 的 陆 的 账 号
setloginStrongLionlogin: spawntel$hostexpect$loginsend$name interact
1.[!/usr/bin/expect-f]这一行告诉操作 系统代码里的代码使用那一个 shell 来执行。这 里的 expect 其实和 linux 下的 bash、windows 下的 cmd 是一类东西。注意:这一行需要在代码
的第一行。2.[send_userYouarethebest\r\n]这一命令,用于往屏幕打印提示信息,与 send_tty 同效果
嘴里叼着一根嫩绿的小草,惬意的微闭双眼,嘴角轻扬起一个优美的弧度。阳光洒在那浅浅的笑容上
3. [ sethost192.168.1.170|setnameroot\r|setl oginStrongLionlogin:]这些命令,即 set+名称+ 字符串为了后面使用方便,类似于定义变量,当
然 settimeout10 为定义超时4.[spawntel$host]spawn 是进入 expect 环境后才可以执行的 expect 内部命令,如果没
有装 expect 或者直接在默认的 SHELL 下执行是 找不到 spawn 命令的。所以不要用“whichspawn “之类的命令去找 spawn 命令。好比 windows 里 的 dir 就是一个内部命令,这个命令由 shell 自
带,你无法找到一个 dir 或 dir.exe 的可执行文件。此处执行的运程登陆指令 tel,具体参数可
以 后 面 添 加 , 具 体 用 法 另 外 查 询 5.[expect$login]这里的 expect 也是 expect 的
嘴里叼着一根嫩绿的小草,惬意的微闭双眼,嘴角轻扬起一个优美的弧度。阳光洒在那浅浅的笑容上
一个内部命令,有点晕吧,expect 的 shell 命令 和内部命令是一样的,但不是一个功能,习惯就 好了。这个命令的意思是判断上次输出结果里是 否包含$login,即“StrongLionlogin:”的字符
串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的 30 秒 6.
[send$name]这里就是执行交互动作,与手工输入密码的动作等效。温馨提示:命令字符串结
尾别忘记加上“\r”,如果出现异常等待的状态 可以核查一下。因为我目前使用的开发板需要密 码,所以只有账号 root 即可,
具体情节自己根 据语法添加 7.[interact]执行完成后保持交互状态,
把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是
嘴里叼着一根嫩绿的小草,惬意的微闭双眼,嘴角轻扬起一个优美的弧度。阳光洒在那浅浅的笑容上
留在远程终端上。如果你只是登录过去执行!/usr/bin/expect 注意安装的路径,不确定 whereisexpect 一 下 Changealoginshelltobashsetuser[lindex$arg
v0]spawnbash$userexpect]:send/bin/bashexpecteofexit1c03f5ca 易博