服务器名称为:node101~node105、node110、node113
#!/bin/bash
array=(102 103 104 105 110 113 101)
for((i=0;i<${#array[*]};i++))
do
echo " ---- 关闭 node${array[i]} ---- "
if [ ping -c 1 -w 1 node${array[i]} > /dev/null ]
# -c表示次数;-w表示等待时间(s)
then
ssh node${array[i]} shutdown
else
echo "node${array[i]}网络断开连接,操作失败"
fi
done
注意事项:
①该脚本所在服务器名称必须是数组array的最后一个元素;
例如:若将上面的脚本放到node101上,array中的最后一个元素也应该是101。
②服务器名称要与ip地址进行绑定,否则要将数组array中的内容改为ip地址形式,并将所有的node$array[i]改为$array[i]。
③批量重启服务器,只要将脚本中的shutdown改为reboot即可。
在上面的脚本中添加 将执行过程写入日志功能
#!/bin/bash
echo -e "\n`date`\n执行脚本shutdown.sh" >> /root/shell/log.txt
#在日志/root/shell/log.txt中打印脚本执行时间
function doWork()
{
array=(102 103 104 105 110 113 101)
for (( i=0;i<${#array[*]};i++ ))
do
echo " --- 关闭 node${array[i]} --- "
if ping -c 1 -w 1 node${array[i]} > /dev/null ; then
ssh node${array[i]} shutdown
else
echo " node${array[i]} 网络断开连接,操作失败"
fi
done
}
doWork | tee -a /root/shell/log.txt #将doWork()函数在每次调用时打印的内容存入日志中