linux - 在 telnet session 中使用变量

标签 linux bash telnet

我有一个脚本,可用于使用 telnet session 发送多个命令。我不确定我是否需要转义字符。如果我直接在 telnet session 中键入命令,它会工作并且我会得到预期的响应。但是,当我将它放在脚本中时,它不起作用。

真正奇怪的是,我将其中一个命令放入 echo 中,我得到的结果与我从 telnet 提示符中得到的结果相同...这让我相信我需要转义某些字符,但是一直是我的问题。

我尝试过使用 sleep 命令,但是这似乎并没有改变任何东西......

这是片段:

pushSAT() {
    #This is what the command should look like:
    #EPHM:FPSH,satellite,ephemeris_code,file_name,cmd_action<cr><lf>

    HOST=$1
    SATS=( $(grep O3B_M* $DIR/$FILE2ACU) )

    for i in "${SATS[@]}"
    do
       echo "$i"
       echo "EPHM:FPSH,$i,202,$FILE2ACU,@"; 
       (sleep 2
        echo "EPHM:FPSH,$i,202,$FILE2ACU,@";
        sleep 1
        echo "TGTS:FLST,?";
        sleep 1
        echo "^]";
        sleep 1
        echo "logout";
       ) | telnet $HOST 6100 | tee acuresponse.txt

       log user.info "Pushed $FILE2ACU to $HOST for $i."
    done
}

这是来自 echo 和 telnet 的响应;注意它被切断的地方……奇怪!

Loading satellites to ant-3-acu
O3B_M001
,202,ephemeris.txt,@"

这就是问题所在;为什么会被切断?

而且,这是我对失败命令的期望:

Connected to ant-3-acu (ip).
Escape character is '^]'.
EPHM:FPSH,O3B_M001,202,ephemeris.txt,@
ephm:fpsh,0,0

最佳答案

^] 表示控制/]。你没有正确发送。将其作为文字文本“^]”发送将不起作用。所以注销可能永远不会发生。

无论剩下的问题是什么,我确信它们存在,我怀疑它们与您的头衔有任何关系。您的问题实际上只是关于脚本。

关于linux - 在 telnet session 中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16659077/

相关文章:

linux - 从 bash 中的循环开始的后台进程是否可以从以后的迭代中获取值?

php - 无法从 PHP 向 TMUX session 发送命令

linux - 命令在终端上有效,但在 shell 脚本中无效

linux - 使用 unix 编写脚本以获取用户运行的进程

Java远程登录服务器

java - 从服务器到客户端的 DataOutputStream 文本缩进很奇怪,并生成 4

linux - 在 Linux 中以编程方式限制文件系统的使用

bash - 如何创建包含文件夹中所有文件名称的数组?

linux - 如何检查 RPM .spec 文件中是否存在文件?

Python 扭曲的 TCP/IP 连接