python調用ping
A. python 判斷是否ping通
通過mac查ip
方法一:用ARP -A 查詢
這種方法只能查到與本機通訊過(20分鍾內)的主機MAC地址和IP地址。可在遠程主機所屬網段中的任一台主機上運行此命令,這樣可查出IP欺騙類病毒的主機。
方法二:用專用軟體查,如nbtscan
命令方式是:nbtscan -r 網路號/掩碼位,這種方法可查詢某網段的所有IP與MAC對應關系,但裝有防火牆的主機則禁止查詢。
方法三: 如果所連交換機有網管功能,可用ARP SHOW 命令顯示交換機的arp緩存信息,這種方式基本可查詢所有的IP 與MAC地址,但只有網管才有這個許可權。
方法四:用sniffer類的嗅探軟體抓包分析,packet中一般都含用IP地址與MAC地址。
方法五:用solarwinds類軟體中的MAC ADDRESS DISCOVERY查詢,但這個工具好象不能跨網段查詢。
B. python 判斷ip是否能ping通
python編程下,檢查IP是否能ping通,並且分別導入兩個文件,代碼如下:
#!/usr/bin/python
#-*- coding:gb18030 -*-
'''
Created on 2015-7-7
#判斷文件中的ip是否能ping通,並且將通與不通的ip分別寫到兩個文件中
#文件中的ip一行一個
'''
import time,os
start_Time=int(time.time()) #記錄開始時間
def ping_Test():
ips=open('host.txt','r')
ip_True = open('ip_True.txt','w')
ip_False = open('ip_False.txt','w')
count_True,count_False=0,0
for ip in ips.readlines():
ip = ip.replace('\n','') #替換掉換行符
return1=os.system('ping -n 2 -w 1 %s'%ip) #每個ip ping2次,等待時間為1s
if return1:
print 'ping %s is fail'%ip
ip_False.write(ip) #把ping不通的寫到ip_False.txt中
count_False += 1
else:
print 'ping %s is ok'%ip
ip_True.write(ip) #把ping通的ip寫到ip_True.txt中
count_True += 1
ip_True.close()
ip_False.close()
ips.close()
end_Time = int(time.time()) #記錄結束時間
print "time(秒):",end_Time - start_Time,"s" #列印並計算用的時間
print "ping通數:",count_True," ping不通的ip數:",count_False
ping_Test()
C. python2.7 請幫忙寫一個函數確定某個ip是否能ping通。我的這個不行
你這樣直接使用os.system("ping")==0是不行的,執行ping命令後跟cmd執行一樣,也會返回類似於ttl=245 time=36.798 ms這樣的信息。所以你要做的是:
在os.system("ping -n 1 "+ip)的返回結果中查找是否存在"TTL="這樣的字元,如果存在表示ping通了,不存在就表示超時
D. python執行cmd命令,怎麼讓他執行類似Ctrl+C效果將其結束命令
python執行cmd命令,怎麼讓他執行Ctrl+C的效果結束命令?
我在用ping監控一個伺服器的網路狀態,我執行了ping命令後,他會一直這么ping下去,不停止,怎麼讓他在10秒後執行ctrl+c的效果
def re(cmd): while True:
os.system(cmd);re("ping 192.168.1.1 -t")
他會這樣一直ping下去,想了半天也想不出怎麼讓他10秒後執行ctrl+c結束的執行效果,請教大神,怎麼讓他執行結束命令;
10秒後停止命令,類似執行ctrl+c的效果;
[root@jenkins xxxx]# time ping .com -w 10s
PING .com (220.181.57.217) 56(84) bytes of data.64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=1 ttl=52 time=4.07 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=2 ttl=52 time=26.9 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=3 ttl=52 time=6.78 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=4 ttl=52 time=12.9 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=5 ttl=52 time=3.86 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=6 ttl=52 time=3.30 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=7 ttl=52 time=5.63 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=8 ttl=52 time=11.2 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=9 ttl=52 time=4.30 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=10 ttl=52 time=4.17 ms
--- .com ping statistics ---10 packets transmitted, 10 received, 0% packet loss, time 9013ms
rtt min/avg/max/mdev = 3.300/8.328/26.972/6.954 ms
real 0m10.006s
user 0m0.003s
sys 0m0.006s
不知道能不能滿足你的需求
E. 初學者Python os.system自動ping請幫忙看看怎麼修改
def ping(host): '''ping 1次指定地址''' import subprocess,traceback, platform if platform.system()=='Windows': cmd = 'ping -n %d %s'%(1,host) else: cmd = 'ping -c %d %s'%(1,host) try: p = subprocess.Popen(args=cmd, shell=True, s...
F. python3 判斷IP地址是否ping通
os.system(『comand』) 會執行括弧中的命令,如果命令成功執行,這條語句返回0,否則返回1。
要想得到標准輸出,可以使用os.popen(cmd)
import os
p=os.popen("ping 192.168.2.129")
x=p.read()
p.close()
if x.count('temeout'):
print("ping不通")
else:
print("ping通了")
G. python編寫ping程序出現socket.error: [Errno 10013] 錯誤
錯誤號的解釋
以一種訪問許可權不允許的方式做了一個訪問套接字的嘗試。
試試管理員許可權,不行換到xp上試試。
H. 我想使用python寫一個循環執行terminal下面的命令,比如我現在要ping 192.168.1.1,我要循環ping 3次
>>> import os
>>> os.system('ping -c 3 10.34.40.22')
PING 10.34.40.22 (10.34.40.22) 56(84) bytes of data.
64 bytes from 10.34.40.22: icmp_seq=1 ttl=64 time=0.501 ms
64 bytes from 10.34.40.22: icmp_seq=2 ttl=64 time=0.289 ms
64 bytes from 10.34.40.22: icmp_seq=3 ttl=64 time=0.277 ms
--- 10.34.40.22 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.277/0.355/0.501/0.105 ms
0
非常簡單的,哈哈