expect脚本实现telnet、ssh交互输入用户名密码

更新时间:2023-06-06 23:31:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

嘴里叼着一根嫩绿的小草,惬意的微闭双眼,嘴角轻扬起一个优美的弧度。阳光洒在那浅浅的笑容上

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]这一命令,用于往屏幕打印提示信息,与 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 易博

本文来源:https://www.bwwdw.com/article/ztj1.html

Top