"telnet" 命令在 shell 脚本中执行时失败并显示 "bad port",但在命令提示符下有效

"telnet" command fails with "bad port" when executed in shell script, but works on command prompt

这可能真的很简单。我正在使用 PuTTY 和 运行ning 一个 telnet 12.34.56.789 22 命令登录远程服务器来测试端口 22 上的 TCP 连接。

这在我手动键入命令时工作正常,但我有一系列目的地要检查,我认为为此使用脚本会更好。我创建了一个非常基本的 shell 脚本,它只是我想要一个接一个 运行 的命令列表。当我 运行 来自 PuTTY 的这个脚本时,我收到一条错误消息

: bad port

任何人都可以向我解释为什么当我手动输入命令时该命令有效,但当我 运行 脚本时却产生错误吗?

脚本:

telnet 10.52.33.46 22  
telnet 10.52.33.47 22  
telnet 10.52.33.48 22  
telnet 10.52.33.49 22  
telnet 10.52.33.50 22  
telnet 10.52.33.51 22  
telnet 10.52.33.52 22  
telnet 10.52.33.53 22  
telnet 10.52.33.54 22  
telnet 10.52.33.55 22

这是带有错误消息的 PuTTY window 的屏幕截图。我将上面的脚本 (159999.sh) 保存到主机服务器上,然后从那里 运行 它。

Here is some of the commands running after I type them manually (in this case they are supposed to fail to connect)

您的脚本文件有 Windows CR/LF 行结尾,而 *nix 系统仅使用 LF。

额外的 CR 被视为 telnet 命令的一部分,特别是作为最后一个 "port" 参数的一部分。因此 "bad port" 错误。

请确保您:

  • 在上传前使用 *nix 行尾保存脚本或
  • 使用文本模式传输上传脚本或
  • convert the file on the server.