【问题标题】:"Name or service not knownname" using SSH from script [closed]“名称或服务未知名称”使用脚本中的 SSH [关闭]
【发布时间】:2015-07-01 00:52:07
【问题描述】:

无法通过 SSH 连接到主机。

我正在使用以下 shell 脚本来使用 ssh

host_list="c15-0330-14.ad.mtu.edu"
ssh "$host_list"

但它总是说: Name or service not knownname c15-0330-14.ad.mtu.edu

我试过ssh c15-0330-14.ad.mtu.edu。有用。 另外,如果我有多台主机,如何一一调用呢?

【问题讨论】:

  • 根据我的try,它运行良好。我不明白为什么你的不是。
  • 对我也很好。投票结束。
  • 您的脚本有 DOS 行尾,需要转换为 Unix 行尾,例如 dos2unix。 DOS 行结尾的回车符是host_list 的一部分,这会导致错误。请注意奇怪的错误消息,其中: Name or service not known 覆盖了错误消息的开头。
  • @chepner。我在windows系统下编辑shell脚本。并在linux系统下运行。这真的很重要吗?
  • @chepner 你是对的。我在linux下创建shell脚本。它现在有效。我总是使用 windows 系统来做我的工作并在 linux 中运行程序。如何在windows下为linux创建一个“好”的shell脚本?

标签: linux shell ssh


【解决方案1】:

错误信息应该

ssh: Could not resolve hostname c15-0330-14.ad.mtu.edu: Name or service not known

除了脚本中的 DOS 行结尾外,会在 host_list 的值末尾存储一个额外的回车符。当作为错误消息的一部分打印时,此回车会使光标返回到行首,从而产生您实际看到的错误消息。注意两半是如何排列的(回车紧接在冒号之前):

ssh: Could not resolve hostname c15-0330-14.ad.mtu.edu
: Name or service not known

导致你的错误

: Name or service not knownname c15-0330-14.ad.mtu.edu

【讨论】:

  • 您能告诉我该怎么做吗?你的意思是我只能在linux中编辑文件吗?其实我并不完全理解你的回答。 :)
  • 简单来说host_list的值不是c15-0330-14.ad.mtu.edu,而是c15-0330-14.ad.mtu.edu\r。额外的回车来自您将文件保存在 Windows 中的事实,它使用 \r\n 来终止行,而 Linux bash 期望行仅由 \n 终止,因此 \r 被认为是一部分行的一部分,而不是行尾的一部分。在bash 的Linux 版本可以正确执行之前,您需要更改脚本的行尾。
  • 我在windows下新建了一个shell脚本host_list="c15-0330-14.ad.mtu.edu\r" ssh "$host_list"。但它返回: Name or service not knownname c15-0330-14.ad.mtu.edu\\r
  • 这不是文字反斜杠 + r;它是代表回车的单个 ASCII 字符。我只是用\r来代表它。
  • 太好了,将换行符从 CRLF(\r\n) 更改为 LF(\n) 对我有用!
猜你喜欢
  • 1970-01-01
  • 2016-11-10
  • 2013-08-10
  • 2013-08-08
  • 2016-01-06
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多