我有一個bash腳本,通過SSH連接到服務器來運行命令。該腳本從文件獲取IP地址。如何在bash中一次讀取和運行10行命令?
問題:如果文件中有500個IP,我不想同時打開或嘗試打開500個連接。我想說的是,爲了節省資源,一次10個。
如何通過SSH 10服務器一次運行命令?
這裏是我的腳本:
#/bin/bash
nodes="big_list_of_nodes.txt"
while read node; do
# Running in background
(uptime=`ssh -o ConnectTimeout=5 $node uptime 2>&1`
if [ $? -eq 0 ]; then
echo "$node uptime: $uptime"
else
echo "Connection timeout for node $node"
fi) &
done < $nodes
# Wait for all jobs to finish
wait
保留一個計數器,並添加10個IP對數組。當計數達到10時,建立連接,等到他們完成後,取消設置陣列,將計數重置爲0,重複。 –
您是否安裝了[GNU parallel](https://en.wikipedia.org/wiki/GNU_parallel)? (或者您是否願意安裝它?) – ruakh