ksh 对于 telnet 命令的行为有所不同

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

我正在尝试在 ksh 脚本中远程登录 Linux 主机,但是当将相同的脚本作为 bash 脚本执行时,输出似乎有所不同。大家有什么想法吗?

当脚本作为 bash 执行时

#!/bin/bash
echo -e '\x1dclose\x0d' | telnet myhost myport > /dev/null 2>&1
echo $?

输出$?是 0

与 ksh 执行相同的脚本结果 $ 值?是 1

#!/bin/ksh
echo -e '\x1dclose\x0d' | telnet myhost myport > /dev/null 2>&1
echo $?

有人有什么想法吗?

提前致谢,

bash ksh telnet
2个回答
0
投票

如果远程主机关闭连接(或发生任何远程或网络错误),则

telnet
的返回值为1;如果本地客户端成功关闭连接,则返回值为0。我的猜测是,
bash
ksh
更快地终止客户端,因此在
ksh
版本中,远程主机关闭会话的速度可能会更快一些。话虽这么说,如果您给客户端系统施加了一些重负载,
bash
中的版本也可能返回 1。
telnet
的返回值并不像您想象的那么有帮助。

此外,

telnet
是一个交互式程序,不太适合在脚本中使用。如果交互很简单,请使用
nc
;如果交互变得更复杂,请使用
expect


0
投票

printf \x
ksh 和 bash 之间的行为不同,尝试使用八进制表示法

printf '\035close\x0d' | telnet myhost myport > /dev/null 2>&1
© www.soinside.com 2019 - 2024. All rights reserved.