我是一个普通的 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
完成后我将退出,所有这些交互也应保存在文件中以进行交叉验证。
目前我安装了expect但是无法通过。请帮忙
最佳答案
亲爱的 Stackoverflow 论坛,
在我绞尽脑汁将近一个星期后找到了解决方案。
***问题陈述
我需要从 S1(服务器 1)登录到 S2(服务器 2)提供交互式命令并获取在我的 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
我相信这个脚本会指导其他可能遇到类似问题的人。
亲爱的论坛虽然我几乎所有的问题都来自你,但在这种情况下我是独自一人。
关于linux - 远程登录传递命令然后等待并传递命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35085291/