Python中的SSH服务器状态

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 ):

我想知道是否有办法在使用Python的系统中找到
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.