2015-04-23 46 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' –

相關問題