TweentyOneGuns 2021-10-03 19:02 采纳率: 75%
浏览 39
已结题

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.回车确认,登录到远端设备。

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

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月11日
    • 赞助了问题酬金 10月3日
    • 赞助了问题酬金 10月3日
    • 创建了问题 10月3日

    悬赏问题

    • ¥15 高价求中通快递查询接口
    • ¥15 解决一个加好友限制问题 或者有好的方案
    • ¥15 关于#java#的问题,请各位专家解答!
    • ¥15 急matlab编程仿真二阶震荡系统
    • ¥20 TEC-9的数据通路实验
    • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
    • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
    • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
    • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
    • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?