我是普通的unix用户,但无法找到解决以下问题的方法。
问题陈述:
从我的终端运行此命令(注意我无法更改此命令或更改)
ssh -N -f -L 50003:127.0.0.1:23 x.x.x.x; telnet 127.0.0.1 50003
这将使用一些横幅消息登录x.x.x.x机器,它将要求我从空闲端口列表中选择,例如,
Select a terminal from the list below:
(17,18,20,21,22,24)
现在我需要传递任何这些自由端口号,即17或20或24
提供此号码后,将显示以下内容:
Connection established as terminal 17.
>
现在我需要传递login:uid=someusername
并按下回车键
将显示以下内容
Command entered at terminal #17.
;
Enter Password :
现在我需要传递密码一旦我将登录到另一个显示以下内容的终端:
;
Command Executed
>
现在我需要输入我的命令,例如runjob
一旦提供上述命令,它将运行一段时间,比如2分钟或5分钟
完成后会显示
Command Completed.
;
这里我需要提供命令为ctrlkey+]
(控制键加上方括号)
然后它将显示以下内容:
telnet>
我再次需要传递quit
并按Enter键
一旦完成,我将退出,所有这些交互也应保存在文件中以进行交叉验证。
目前我安装了期望但无法通过。请帮忙
答案 0 :(得分:0)
亲爱的Stackoverflow论坛,
在打破了我的脑袋近一个星期之后找到了解决方案。
从S1(Server1)我需要登录到S2(server2)提供交互式命令并获取在我的S1中捕获的输出。***
[weblogic@ tmp]$ cat test1.sh
#!/bin/bash
ssh -N -f -L 50002:127.0.0.1:23 10.64.246.124; telnet 127.0.0.1 50002
[weblogic@ tmp]$
[weblogic@ tmp]$ cat check.sh
#!/usr/bin/expect
spawn "./test1.sh"
expect "Select*" { send "24\r" }
sleep 1
expect "Connection*" { send "login:uid=inventory\r" }
expect "Enter*" { send "flask1234!\r" }
sleep 1
expect "Command*" { send "rtrv-stp\r" }
sleep 90
expect "Command*" { send "" }
expect "telnet" {send "q\r" }
interact
[weblogic@ tmp]$
以下命令将捕获我的所有日志以检查是否成功
[weblogic@ tmp]$ ./check.sh >>out.log
我相信此脚本会引导可能遇到类似问题的其他人。
亲爱的论坛,虽然我得到了你几乎所有的疑问,但在这种情况下,我独自一人。