Python中的SSH服务器状态
我想知道是否有办法在使用Python的系统中找到Python中的SSH服务器状态,python,python-2.7,ssh,openssh,Python,Python 2.7,Ssh,Openssh,我想知道是否有办法在使用Python的系统中找到ssh服务器的状态。我只想知道服务器是否处于活动状态(只是“是/否”)。即使只是一个linux命令,它也会有所帮助,这样我就可以从子流程模块使用python的popen并运行该命令 谢谢 PS:我在linux(Ubuntu12.04)上使用openssh服务器,运行服务sshd状态(例如,通过Popen())并阅读它告诉你的内容。如果你想知道进程是否正在运行,你可以使用PS def IsThisProcessRunning( ps_name ):
ssh服务器的状态。我只想知道服务器是否处于活动状态(只是“是/否”)。即使只是一个linux命令,它也会有所帮助,这样我就可以从子流程模块使用python的popen
并运行该命令
谢谢
PS:我在linux(Ubuntu12.04)
上使用openssh服务器
,运行服务sshd状态
(例如,通过Popen()
)并阅读它告诉你的内容。如果你想知道进程是否正在运行,你可以使用PS
def IsThisProcessRunning( ps_name ):
ps = subprocess.Popen("ps axf | grep %s | grep -v grep" % ps_name,
shell=True, stdout=subprocess.PIPE)
output = ps.stdout.read()
ps.stdout.close()
ps.wait()
if re.search(ps_name, output) is None:
return False
else:
return True
IsThisProcessRunning('/usr/sbin/apache2') # True, if Apache2 is running.
如果你有一个常用的名字;您可以指定位置,例如/usr/sbin/apache2
为了安全起见,您可以结合查找进程名称,也可以查找pid文件。这是脚本中使用的常用技术
你是说本地服务器吗?你已经尝试了什么?@wRAR,是的,就是我运行python脚本的那台机器。。我已经尝试ping端口22(使用python的Popen)和类似的东西。。想知道一些简单的事情…当我在控制台上尝试该命令时,它会说,sshd:unrecognedservice
。然后我尝试了服务ssh status
,它成功了。。说,ssh启动/运行,进程787
。是的,我认为这取决于您使用的发行版和服务名称。无论如何,我希望这会有帮助,您可以解析它的输出(或者深入了解该命令的工作原理,以便您可以执行该命令)。为什么我需要用[]
包装第一个字母?否则它将返回ps命令,例如,grep--color=auto-ssh
@sandeepraju我更新了源代码,用一种方法删除grep,而不需要括号。还有。或者,您可以自己搜索/proc
文件系统。是的,如果程序有一个pid文件,您也可以检查它是否存在,但我更喜欢使用pid+ps。
try:
pf = file('/var/run/my_program.pid', 'r')
pid = int(pf.read().strip())
pf.close()
except IOError:
pid = None
if pid:
# Process is running.