如果我批处理 SSH 这个命令:
echo close | /usr/bin/telnet IPADDRESS 657
然后我得到这个输出:
No environment-specified terminal type.
但为什么?我通过 SSH 连接的操作系统是 Linux,我通过 SSH 连接的操作系统是 AIX。
答案1
因为Telnet被设计为一个与智能终端交互的交互工具。当从管道馈送时,它不会接收正确的终端数据(TERM 环境变量等)。此外,它还与远程主机协商终端参数,这可能会干扰通信。
对于像您这样的应用程序(非交互式 TCP 连接)来说,正确的工具是 NetCat nc
,.
尝试
echo close | /usr/bin/nc IPADDRESS 657
并从现在开始将其用于此类应用程序。通过避免一些源自 Telnet“幕后”操作的非常难以追踪的错误,您将在将来为自己省去许多麻烦。