如何在Shell脚本中的变量中捕获telnet命令的输出

问题描述

我需要使用shell脚本在远程服务器上运行telnet命令,并且必须捕获输出。当我执行以下命令时,它并没有完成,而是被挂起了。有人可以建议执行后如何使用Shell脚本终止或超时telnet命令。

telnet_output=`telnet $server $port`
echo "Output is $telnet_output"

我也尝试将其写入文件。但这在远程服务器中执行时也会挂起。

opfile="telop.log"
telnet_output=`telnet $server $port | tee $opfile`
op=`cat $opfile`
echo "$op"

解决方法

尝试一下:

telnet_output="$({ sleep 1; echo $'\e'; } | telnet $server $port 2>&1)"
printf "Output is\n%s\n" "$telnet_output"

echo $'\e'telnet发送一个转义字符以终止它。