Activemq判断队列存活脚本(二)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#脚本用途:检测Activemq集群的端口监听情况及其队列通畅情况
#!/usr/bin/env python
#coding=utf-8 
import  paramiko
import  time
import  sys
import  stomp
Aip = ( "第一台mq服务器" )
Bip = ( "第二台mq服务器" )
Cip = ( "第三台mq服务器" )
list = []
 
def Checknetstat():
     for  in  (Aip,Bip,Cip):
         hostname =i
         username= "root"
         password= "服务器密码"     #这里默认三台服务器的密码是一样的
         paramiko.util.log_to_file( "syslogin.log" )
         ssh =paramiko.SSHClient()
         ssh .load_system_host_keys()
         ssh .connect( hostname = hostname ,username=username,password=password)
         stdin,stdout,stderr= ssh .exec_command( "netstat -ntpl | grep 61613 | wc -l" )
         word=str(stdout. read ().strip( '\n' ))     #考虑一下这里为什么会有一个strip?
         list.append(word)    #把for循环的结果变成一个list
         ssh .close()
     print list
     
def GoListen(xip):
     class MyListener(object):
         def on_error(self, headers, message):
             print( 'received an error %s'  % message)
         def on_message(self, headers, message):
             print( 'received a message %s'  % message)
     conn = stomp.Connection([(xip,61613)])
     conn.set_listener( '' , MyListener())
     conn.start()
     conn.connect( 'mq的账户' , 'mq的密码' )
     conn.subscribe(destination= '/queue/队列名称' id =1, ack= 'auto' )
     conn.send(body= '具体的消息内容' , destination= '/queue/队列名称' )
     time . sleep (2)
     conn.disconnect()
     
def Remotecommand():
     if  list == [ '1' '0' '0' ]:
         print ( "第一台机器的61613端口处于监听状态,现在尝试往里面发送消息..." )
         try:
                 GoListen(Aip)
         except stomp.exception.ConnectFailedException:
                 print ( "发送信息失败,请重启Activemq进程..." )
     elif  list == [ '0' '1' '0' ]:
         print ( "第二台机器的61613端口处于监听状态,现在尝试往里面发送消息..." )
         try:
                 GoListen(Bip)
         except stomp.exception.ConnectFailedException:
                 print ( "发送信息失败,请重启Activemq进程..." )
     elif  list == [ '0' '0' '1' ]:
         print ( "第三台机器的61613端口处于监听状态,现在尝试往里面发送消息..." )
         try:
                 GoLinten(Cip)
         except stomp.exception.ConnectFailedException:
                 print ( "发送信息失败,请重启Activemq进程..." )
     else :
         print ( "activemq的61613端口处于异常,现在重启这三台mq..." )
         pass     #这里可以单独写一个远程activemq重启的脚本
         
if  __name__ ==  "__main__" :
         Checknetstat()
         Remotecommand()
 
print( "整个脚本执行结束,感谢您的使用!" )


基本上来说,整个脚本的结构就是这样的,里面汉字的内容可以依照实际情况填写进去。


远程重启activemq脚本这里就不写了,跟远程查询61613端口的脚本一模一样,就是里面的命令改一下,所以在正常情况下启动本脚本的效果就是这样的:

wKiom1hY_Q3xIV3jAAA-X3gEd9Y997.png


或者是:

wKioL1hbi37Te7BGAAB3mkNelF4640.png


 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1884415


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值