4

expect可以和远程终端以及本机后台进程同时交互吗?

 2 years ago
source link: https://ask.csdn.net/questions/7523528
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

expect可以和远程终端以及本机后台进程同时交互吗?

expect常用的方式就是交互式远程登录,spawn产生登录请求,等待对方返回一个“password”之类的验证要求,然后程序把提前录入的密码自动补上去。
但是如果对方返回的是一个随机码,要求我利用得到的随机码和本机的密码生成器,生成一个新的登录密码,这个时候又该怎么做呢?

我想大致步骤只能是:
在不中断现有的expect会话的前提下
1.用新的shell进程提取随机码
2.执行密码生成的命令
3.将新密码传参给当前的expect进程
4.expect进程输出新密码

这是真实的生产环境,我本意只是想练习一下shell脚本,但是水平太有限了,写不出来,现在已经不知道这是否可行了。
鉴于真实生产环境,贴出来不太好,我把流程写一下,自己的脚本就不贴了,因为错的太多了自己都懵的。

1.telnet ip port //远程连接设备
2.远端返回验证请求,需要输入用户名,含有提示信息login_user: 需要输入用户名:admin 然后回车
3.远端继续返回一个随机码和密码输入请求,我就任意写一个了,交互信息的最后两行如下:
randomcode:123456789
password:
4.在本机上通过getpasswd 命令获取新密码,当然必须新开一个终端,例如:
getpasswd 123456789
屏幕返回一个密码:
newpasswd=abc123
5.复制密码abc123并粘贴到远程的交互窗口,即变成
randomcode:123456789
password:******
6.回车确认,登录到远端设备。

写了那么多,不知道有没有人看,有缘人请略指点一二。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK