linux - 远程登录传递命令然后等待并传递命令

标签 linux shell ssh expect

我是一个普通的 unix 用户,但无法找到以下问题的解决方案。

问题陈述:

  1. 从我的终端运行这个命令(注意我不能改变这个命令或改变)

    ssh -N -f -L 50003:127.0.0.1:23 x.x.x.x; telnet 127.0.0.1 50003 
    
  2. 这将登录到 x.x.x.x 机器并显示一些横幅消息,它会要求我从可用端口列表中进行选择,例如,

    Select a terminal from the list below:
    (17,18,20,21,22,24)
    

    现在我需要传递这些自由端口号中的任何一个,即 17 或 20 或 24

  3. 提供此号码后,它将显示以下内容:

    Connection established as terminal 17.
    > 
    
  4. 现在我需要通过 login:uid=someusername 并按下回车键

  5. 会显示以下内容

    Command entered at terminal #17.
    ;
    Enter Password :
    
  6. 现在我需要传递密码,一旦我将登录到另一个终端,它将显示以下内容:

    ;
    Command Executed
    >
    
  7. 现在我需要输入命令,例如 runjob

    一旦提供了上述命令,它将运行一段时间,比如 2 分钟或 5 分钟

  8. 完成后会显示

    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/

相关文章:

linux - 我可以在 linux 中恢复我不小心执行了 "rm"的文件吗?

linux - 脚本检测变量作为命令

shell - 如何读取文件的最后一个字并附加 ","(如果不存在)。 UNIX系统

git - 在另一台计算机上使用 Github

azure - 为什么尝试从 Ubuntu 22.04 通过 SSH 连接到 Azure Linux 虚拟机时总是超时?

linux - 如何记录所有终端 session 并在关闭窗口后正确退出

linux - 在 Linux 上连接和使用多个蓝牙加密狗?

windows - 我们如何在 Windows 中使用 Perl 配置 SSH?

linux - 在 bash 脚本中退出 ssh session 后保持进程在远程机器上运行

linux - 如何避免 bash 脚本中的换行符输出