1
我有一堆虛擬機,我想用Bash腳本安裝。我得到了一個包含所有虛擬機的所有IP地址的文本文件,並且在每行的前面都寫有「ssh VM-Name」,所以當我的腳本讀取每一行時,它將通過SSH連接到每個虛擬機,然後在該虛擬機內執行我的命令。它以某種方式打破了循環,並在SSH進入第一臺虛擬機後停止。我如何退出第一臺虛擬機,以便它可以進入下一個虛擬機? nodes.txtBash腳本循環問題(SSH到虛擬機)
ssh [email protected]
ssh [email protected]
ssh [email protected]
ssh [email protected]
它確實SSH進入第一VM的
#!/bin/bash
#set -x
cat nodes.txt|while read sshlink
do
echo -------------------------------------------------------
echo Creating Users on: $sshlink
$sshlink 'echo connecting...; sleep 2; echo Creating...; sleep 1; sudo apt
install ntp; uname -a; sleep 1; sleep 2; echo disconnecting...; exit;'
done
內容,它將執行我指定的命令,但它不會退出,並循環到下一個等。
MyUsername$ ./setupnodes.sh
-------------------------------------------------------
Creating Users on: ssh [email protected]
connecting...
Creating...
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Reading package lists...
Building dependency tree...
Reading state information...
ntp is already the newest version (1:4.2.8p4+dfsg-3ubuntu5.6).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Linux node-1 4.4.0-93-generiC#116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017
x86_64 x86_64 x86_64 GNU/Linux
disconnecting...
你可以編寫一個期望腳本來做到這一點更簡單https://unix.stackexchange.com/questions/288099/how-to-write-expect-in-shell – MohitC
你可以使用'ssh -v ...'打印更多日誌以深入挖掘。 – georgexsh
'斷開... DEBUG2:通道0:空OBUF DEBUG2:通道0:close_write DEBUG2:通道0:輸出漏極 - >關閉 DEBUG2:通道0:幾乎死 DEBUG2:通道0:GC:通知用戶 DEBUG2:通道0:GC:用戶分離 DEBUG2:通道0:發送關閉 DEBUG2:通道0:是死 DEBUG2:通道0:垃圾收集 DEBUG1:通道0:自由:客戶端會話,nchannels 1 DEBUG1 :fd 0清零O_NONBLOCK 傳送:發送3940,接收到3908字節,在6.4秒內 字節每秒:發送611.1,收到606.1 debug1:退出狀態0 + exit' – benice