一、单ping
import subprocess
import time
import threading
def ping(host, count=4):
cmd = f"ping {host} -n {count}"
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return process
def main():
host = "114.114.114.114"
count = 1000
process = ping(host, count)
def stop_process():
time.sleep(5)
process.terminate()
thread = threading.Thread(target=stop_process)
thread.start()
stdout, stderr = process.communicate()
print(stdout.decode('gbk'))
if __name__ == "__main__":
main()
二、多ping
import subprocess
import threading
def ping_ip(ip):
"""
定义一个函数ping_ip,接收一个IP地址作为参数,使用ping命令检查该IP是否可达。
如果ping成功,打印"{ip}通";如果失败,打印"{ip}不通"。
"""
try:
response = subprocess.check_output(['ping', '-c', '4', ip])
print(f"{ip}通")
except subprocess.CalledProcessError:
print(f"{ip} 不通")
ips = ['61.54.228.146','61.54.288.147','61.54.228.148','61.54.228.149','61.54.228.150','61.54.228.154','61.54.228.155','61.54.228.156','61.54.228.157','61.54.228.158',]
threads = []
for ip in ips:
t = threading.Thread(target=ping_ip, args=(ip,))
threads.append(t)
t.start()
for t in threads:
t.join()