如何在python中以编程方式检查apache tomcat是否正在运行?

时间:2017-09-25 09:47:16

标签: python tomcat

有没有办法在python中检查来自另一台机器的apache tomcat服务器的状态?

例如,在8086端口中使用apache tomcat服务器的机器上运行了一个restful API。

enter image description here

现在,我想要的是在python中以编程方式从我的电脑检查指定机器的apache tomcat服务的状态。

是的,我可以通过在python中使用os.system进行ping操作来检查机器是否正在运行。

import os
hostname = "xxx.xxx.xxx.xxx" #example
response = os.system("ping -c 1 " + hostname)

#and then check the response...
if response == 0:
    print hostname, 'is up!'
else:
    print hostname, 'is down!'

但是,我感兴趣的是,是否可以在python中以编程方式检查服务的状态( real_ip:8086 / BotAPI )而不是机器的活跃度?

更新:使用paramiko我得到了以下追溯

channel.exec_command('ps -ef| grep tomcat')
Traceback (most recent call last):
File "<pyshell#67>", line 1, in <module>
channel.exec_command('ps -ef| grep tomcat')
File "E:\python\lib\site-packages\paramiko\channel.py", line 63, in _check
return func(self, *args, **kwds)
File "E:\python\lib\site-packages\paramiko\channel.py", line 241, in exec_command
self._wait_for_event()
File "E:\python\lib\site-packages\paramiko\channel.py", line 1197, in _wait_for_event
raise e
paramiko.ssh_exception.SSHException: Channel closed.

1 个答案:

答案 0 :(得分:1)

您可以使用fabric或paramiko远程连接到tomcat计算机,然后检查进程是否正在运行

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname', username='user', password='password')

transport = ssh.get_transport()
channel = transport.open_session()
channel.exec_command('ps -ef | grep tomcat')

status = channel.recv_exit_status()