2013-10-23 100 views
-2

看一些細節關於PPP連接,可以運行以下命令:如何檢查是否PPP連接忙

$ ifconfig ppp 
ppp0  Link encap:Point-to-Point Protocol 
      inet addr:197.108.58.82 P-t-P:10.64.64.64 Mask:255.255.255.255 
      UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 
      RX packets:479 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:479 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:3 
      RX bytes:68118 (68.1 KB) TX bytes:32771 (32.7 KB) 

爲了檢查是否有任何數據傳輸,可以重新運行該命令,同時注意接收數據包發送數據包,看看是否有變化(也許有更好的方法來做到這一點?)。

總之,我可以用Python做同樣的事情,但這很麻煩(使用子進程,然後解析輸出),所以我想知道是否有更好的方法。我會喜歡使用netifaces這一點,但它提供了更多的有限信息:

$ python -c "import netifaces; print netifaces.ifaddresses('ppp0')" 
{2: [{'peer': '10.64.64.64', 'netmask': '255.255.255.255', 'addr': '197.108.58.82'}]} 

回答

2

你可以看一下在/proc的數據,如果是比調用ifconfig容易。

def GetPacketCount(dev_name): 
    '''Return (received_packets, transmitted_packets) for network device dev_name''' 
    with open('/proc/net/dev') as fp: 
     for line in fp: 
      line = line.split() 
      if line[0].startswith(dev_name): 
       return int(line[2]), int(line[10]) 

if __name__ == '__main__': 
    import sys 
    print GetPacketCount(sys.argv[1]) 

裁判:https://www.kernel.org/doc/Documentation/filesystems/proc.txt