如何将 telnet 输出获取到变量?

问题描述 投票:0回答:1

我有一个 Bash 脚本,它使用 telnet 发送一个值并接收一些返回的数据。如何将收到的数据放入变量中?

手动运行命令时,我得到以下结果。

$telnet 192.168.11 12345
>> 5 :234568
>>Adjust:False,offset 0

第一行是我的输入,第二行是我收到的响应。我想将此响应分配给一个变量。 在我尝试使用的 bash 脚本中,

    response=$(echo -e "$message" | telnet "$TELNET_SERVER" "$TELNET_PORT" 2>&1)
    echo "Response from server: $response"

成功发送数据(“消息”)。我无法获得分配给变量的响应。尝试在终端中运行命令时,输出为空。

任何人都可以给我一些解决方案吗?谢谢你。

bash telnet
1个回答
0
投票

您可以使用 bash 的 TCP/IP 堆栈来代替

telnet
:

{
    echo -e "$message" >&3
    response=$(cat <&3)
} 3<>/dev/tcp/"$TELNET_SERVER"/"$TELNET_PORT"

# or

exec 3<>/dev/tcp/"$TELNET_SERVER"/"$TELNET_PORT"
echo -e "$message" >&3
response=$(cat <&3)
exec 3<&-
© www.soinside.com 2019 - 2024. All rights reserved.