我想要一个脚本,它将在各自的服务器上重新启动定义的服务。我想将如下参数传递给脚本:例如:
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 第一个服务器名称和服务。请帮助获得其他人。
原始问题: