#脚本用途:检测Activemq集群的端口监听情况及其队列通畅情况#!/usr/bin/env python#coding=utf-8 import paramikoimport timeimport sysimport stompAip = ("第一台mq服务器")Bip = ("第二台mq服务器")Cip = ("第三台mq服务器")list = []def Checknetstat():    for i 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端口的脚本一模一样,就是里面的命令改一下,所以在正常情况下启动本脚本的效果就是这样的:

或者是: