2016-05-06 117 views
0

我正在使用bash爲Mikrotik設備做一個備份腳本。我想使用一個while循環來讀取文件。Bash儘管循環不循環

從中讀取數據的文件的內容將是這樣的:

1.1.1.1 router1 
2.2.2.2 router2 

這裏是我的示例腳本:

while read -r ip name 
do 

sshpass -p "pass" ssh -o StrictHostKeyChecking=no export\@$ip "/export;/quit" 2> errors.log >> $name.export 

done < iplistandnamefile 

的問題是,該腳本將只對第一個IP地址的工作在iplistandnamefile文件上但不會循環到第二個IP。

有什麼建議嗎?

+0

的'while'環路正常工作,我不知道'sshpass'命令的語法,正確的語法是'sshpass -p 「通行證」 的ssh -o StrictHostKeyChecking =沒有用戶@主機command_to_run'。你想用'export'實現什麼? – Inian

+0

由於ive生成列表中第一個IP的導出文件,因此sshpass正在工作。 yah export是我想運行的命令。我想使用while循環,以便在讀取文件時可以使用多個變量。目前我有一個工作循環腳本,從只包含IP地址的文件讀取。 – John

回答

0

SSH是吃的文件,因爲它默認的其餘部分讀取標準輸入

添加-n延伸到SSH命令。

sshpass -p "pass" ssh -no StrictHostKeyChecking=no [email protected] command_to_run 
+0

它的工作..但我不能完全掌握-n標誌的功能。 – John

+0

-n將/ dev/null重定向到stdin,而如果沒有它,文件的全部內容將成爲標準輸入到ssh – Cwissy