2015-04-23 112 views
0

无法通过SSH连接到主机。我使用下面的shell脚本来使用ssh使用脚本中的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。有用。 另外,如果我有几个主机,我怎样才能一一调用它们?

+0

按我的[尝试](错误http://prntscr.com/ 6x3vlc)它工作得很好。我不明白你为什么不是。 – Skynet

+0

也适合我。投票结束。 – alfasin

+0

你的脚本有DOS行结尾,需要用'dos2unix'之类的东西转换成Unix行结尾。从DOS行结束的回车是'host_list'的一部分,这会导致错误。请注意奇怪的错误消息,其中':名称或服务未知“会覆盖错误消息的开头。 – chepner

回答

5

错误消息应该

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 
+0

你能告诉我该怎么办?你的意思是我只能在linux中编辑文件吗?其实我不完全明白你的答案。 :) –

+1

简单地说,'host_list'的值不是'c15-0330-14.ad.mtu.edu',而是'c15-0330-14.ad.mtu.edu \ r'。额外的回车来自于你将文件保存在Windows中,它使用'\ r \ n'来终止行,而Linux'bash'只需要'\ n'终止行,所以'\ r'被认为是该行的一部分,而不是行结尾的一部分。在Linux版本的'bash'可以正确执行之前,您需要更改脚本的行结束符。 – chepner

+0

我在windows'host_list =“c15-0330-14.ad.mtu.edu \ r”ssh“$ host_list”'下创建了一个新的shell脚本。但它返回':名称或服务未知名称c15-0330-14.ad.mtu。edu \\ r' –

相关问题