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

Posted

技术标签:

【中文标题】如何在 Shell 脚本的变量中捕获 telnet 命令的输出【英文标题】:How to capture the output of telnet command in a variable in Shell script 【发布时间】:2021-01-25 11:58:25 【问题描述】:

我需要使用 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"

【问题讨论】:

【参考方案1】:

试试这个:

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

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

【讨论】:

以上是关于如何在 Shell 脚本的变量中捕获 telnet 命令的输出的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本telnet登陆交换机备份配置

Shell脚本成功telnet登录,之后如何发出命令?

如何在 shell 脚本中捕获 Gradle 退出代码?

如何在 Shell 脚本中建立远程连接时捕获错误

如何在shell脚本中,判断一个基本命令执行是不是成功

如何从 shell 脚本中捕获 Spark 错误