それぞれのサーバーで定義されたサービスを再起動するスクリプトが必要です。以下のようにパラメータをスクリプトに渡したい:例:
sh execute.sh [server1:nginx,mysqld],[server2:mysqld,apache2],[server3:mongodb,apache2]
したがって、server1 に移動し、そこで nginx および mysqld サービスを再起動する必要があります。次にserver2に移動し、そこでmysqldとapacheを再起動する必要があります。
以下のようなスクリプトがあります。
#!/bin/bash
# create an array of server:services
a=($(echo "$1" | gawk 'BEGIN { FS="[]],[[]" } ; { print $1, $2, $3 }' | tr -d '[]'))
# add a for loop here to iterate values in array with code below
for var in "${a[@]}" ; do
# get server name
server1=$(echo $a[0] | cut -d ':' -f1)
# get your services as space separated
servs1="$(echo $a[0] | cut -d ':' -f2 | tr ',' ' ')"
# loop your services
for s in $servs1; do
ssh $server1 "service $s restart"
done
done
上記のスクリプトは、最初のサーバー名とサービスのみを grep できます。他の人を得るのを手伝ってください。
元の質問: