13. 自动化运维——批量关闭tomcat服务

生产环境中往往在多台机器上运行同一个服务(tomcat),本案例的需求是批量关闭这多台机器上的tomcat服务。假设以下场景:

1)提供一个机器IP和tomcat用户的密码列表(/data/ip-passwd.txt),格式如下:

10.111.22.101  passwd1  
10.111.22.102  passwd2  
10.111.22.103  passwd3  
...

2)tomcat所在路径是 /opt/tomcat/ ;

3)关闭tomcat服务的命令是 /opt/tomcat/bin/shutdown.sh ;

4)远程机器上只有tomcat一个java应用,即进程java只是关于tomcat的。

参考脚本如下:

#!/bin/bash
#批量关闭远程机器上的tomcat服务

ipfile=/data/ip-passwd.txt

cat >> kill_tomcat.exp << EOF
#!/usr/bin/expect
set passwd [lindex \$argv 0]
set host [lindex \$argv 1]
spawn ssh tomcat@\$host

expect{
    "yes/no" { send "yes\r"; exp_continue}          # \r表示回车;exp_continue表示再一次交互
    "password:" { send "\$passwd\r" }
}

expect "]*"
send "/opt/tomcat/bin/shutdown.sh\r"

expect "]*"
send "if ps aux |grep -q tomcat;then killall -9 java;fi"

expect "]*"
send "exit\r"
expect eof
EOF

chmod a+x kill_tomcat.exp

cat $ipfile |while read line
do
    ip=`echo $line |awk '{print $1}'`
    pw=`echo $file |awk '{print $2}'`
    ./kill_tomcat.exp $pw $ip
done

脚本中,

  1. expect脚本中,set设置变量,spawn后面跟要执行的命令

  2. expect脚本中,第一个参数用[lindex $argv 0]表示,第二个参数用[lindex $argv 1]表示,依次类推

  3. ]* 匹配 ]# 和 ]$ ,不管是root用户还是普通用户


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值