Python调用ping命令

PING命令

subprocess模块可以调用系统命令,可以进行单个ip和多个ip的ping命令以及从文本读取数据和将结果写入文件来进行保存

Ping单个域名

#-8- coding:utf-8 -*-
import subprocess
import shlex
import time
sata_time = time.time()
ping = subprocess.run(shlex.split('ping -w 1 '+'www.baidu.com'))
print(f"累计花费时间:{int(time.time()-sata_time)}s")

Ping单个ip

#-8- coding:utf-8 -*-
import subprocess
import shlex
import time
sata_time = time.time()
ping = subprocess.run(shlex.split('ping -w 1 '+'36.152.44.96'))
print(f"累计花费时间:{int(time.time()-sata_time)}s")

Ping多个ip或者多个域名

#-8- coding:utf-8 -*-
import subprocess
import shlex
import time
sata_time = time.time()
line = ['www.baidu.com','www.qq.com','v.qq.com']
line2 = ['36.152.44.96','183.194.238.117','117.169.100.145']
for i in line:
    ping = subprocess.run(shlex.split('ping -w 1 '+i))
for i2 in line2:
    ping2 = subprocess.run(shlex.split('ping -w 1 '+i2))
print(f"累计花费时间:{int(time.time()-sata_time)}s")

Ping结果输出

#-8- coding:utf-8 -*-
import subprocess
import shlex
import time
sata_time = time.time()
line = ['www.baidu.com','www.qq.com','v.qq.com']
line2 = ['36.152.44.96','183.194.238.117','117.169.100.145']
for i in line:
    ping = subprocess.run(shlex.split('ping -w 1 '+i),stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    p_ping = ping.stdout.decode('gbk')
    print(p_ping)
for i2 in line2:
    ping2 = subprocess.run(shlex.split('ping -w 1 '+i2),stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    p_ping2 = ping2.stdout.decode('gbk')
    print(p_ping2)
print(f"累计花费时间:{int(time.time()-sata_time)}s")

从文本读取ip或域名并且输出到文本

#-8- coding:utf-8 -*-
import subprocess
import shlex
import time
sata_time = time.time()
with open('ip.txt','r') as f:
    liness = f.readlines()
    for i in liness:
        print(i.strip())
        ping = subprocess.run(shlex.split('ping -w 1 '+i),stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        p_ping = ping.stdout.decode('gbk')
        with open('ip_ping.txt','a+') as f2:
            f2.write(p_ping)
            f2.close()
f.close()
print(f"累计花费时间:{int(time.time()-sata_time)}s")
### 使用 Python 执行系统 Ping 命令 在网络工程中,Ping 测试是验证网络连接的重要手段之一。为了实现这一功能,在 Python 中可以通过多种方式来调用系统的 `ping` 命令。 #### 方法一:使用 `subprocess.Popen` 这种方法允许更灵活地控制命令执行过程以及处理输出流。下面是一个简单的例子: ```python import subprocess def ping_host(host, count=4, timeout=1000): param = '-n' if platform.system().lower()=='windows' else '-c' command = ['ping', param, str(count), '-w', str(timeout), host] process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) output, error = process.communicate() return output.decode() print(ping_host('www.example.com')) # 替换为目标地址 ``` 此代码片段展示了如何构建一个跨平台兼容的函数来发起 ICMP 请求,并获取返回的结果[^2]。 #### 方法二:利用 `subprocess.run()` 函数 (推荐用于 Python 3.5+) 对于较新的 Python 版本而言,官方更加推崇使用 `subprocess.run()` 来替代旧版本中的其他 API 接口。这种方式不仅简化了语法结构而且提供了更好的异常处理机制。 ```python from subprocess import run, PIPE result = run(['ping', '-c', '4', 'example.org'], capture_output=True, text=True) if result.returncode == 0: print("Success:", result.stdout) else: print("Error occurred while pinging.") ``` 这段脚本同样实现了对指定主机发出四个数据包大小默认设置下的 ICMP Echo Request 操作,并打印成功与否的信息[^4]。 这两种方法都可以有效地完成从 Python 程序内部触发外部程序的功能需求;其中第二种更适合现代开发环境的要求。当选择具体实施方案时应考虑实际应用场景和个人偏好等因素做出决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

[~*$#¥^O^]

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值