我有一个 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 的 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<&-