2016-07-04 116 views
2

如何从Python中ping服务器?Python:如何ping服务器?

我想获得一个ping脚本工作。我使用pxssh登录到服务器,并且一旦登录,ping一个IP地址。我需要检查是否有任何损失等..以下是我的脚本,但看到一些错误...可以帮助任何人。我正在使用sendline将命令发送到服务器。

def pingGW(self): 
       s.sendline('ping 127.0.0.1 -c 5 > /etc/dhcp/ping.txt') 
       s.prompt() 
       s.sendline('cd /etc/dhcp/') 
       s.prompt() 

       str = '100% packet loss' 
       jes = open((s.sendline('vi /etc/dhcp/ping.txt')), 'r') 
       for line in jes: 
         if re.search(str, line): 
           print 'Cannot reach the gateway' 

       print "Ping success" 

:错误消息:

JES =开放((s.sendline( '六/etc/dhcp/ping.txt')),“R

s= pxssh.pxssh() 
class DhcpServer: 

     def connect(self,**kwargs): 
       self.dhcp_server = kwargs.get('dhcp_server',None) 
       self.username = kwargs.get('user_name', None) 
       self.password = kwargs.get('password',None) 
       s.login(self.dhcp_server,self.username,self.password) 
       print "Connected to server" 

def pingGW(self): 
       s.sendline('ping 127.0.0.1 -c 5 > /etc/dhcp/ping.txt') 
       s.prompt() 
       s.sendline('cd/etc/dhcp/') 
       s.prompt() 

       str = '100% packet loss' 
       jes = open((s.sendline('vi /etc/dhcp/ping.txt')), 'r') 
       for line in jes: 
         if re.search(str, line): 
           print 'Cannot reach the gateway' 
正确indendation后

“)类型错误:强迫为Unicode:需要字符串或缓冲区,诠释发现[jesgeorg @ INS-qasvr-18 LIB] $

+2

你可以张贴的错误? – enthus1ast

+1

'def pingGW'没有正确缩进。 – enthus1ast

+1

我对pxssh不熟悉,但是''pingGW()'方法没有正确缩进,'sendline('cd')'命令需要cd和path之间的空格。 –

回答

0

如果你是用Python中执行ping只是感兴趣:

import ping 
ping.verbose_ping("example.com") 

https://pypi.python.org/pypi/ping/0.2

关于你原来的问题,sendline()不会做你的想法。它写入“伪终端”会话,就像有人正在打字一样。你不需要这样做来打开文件。

如果你要打开的文件,只需

fd = open('/etc/dhcp/ping.txt') 
+0

我需要使用sendline()向服务器发送命令。 ping.txt文件存储在服务器的/ etc/dhcp flder内部。如果我做一个正常的fd = open(// etc/dhcp ..')它不会从服务器打开文件..它会看本地机器..这不是我想要的 –