Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅输出激活_Python_Python 3.x - Fatal编程技术网

Python 仅输出激活

Python 仅输出激活,python,python-3.x,Python,Python 3.x,我正试图使这个IP扫描器只显示活动的IP,它ping任何帮助是可怕的。 多谢各位 # Script to ping all IP addresses in a /24 subnet import os network = input ("Enter IP Network to scan: ") print(network) # Iterate over all usable IPs in this subnet for host in range (1, 254): print("Ping

我正试图使这个IP扫描器只显示活动的IP,它ping任何帮助是可怕的。 多谢各位

# Script to ping all IP addresses in a /24 subnet
import os

network = input ("Enter IP Network to scan: ")
print(network)

# Iterate over all usable IPs in this subnet
for host in range (1, 254):
 print("Pinging " + network + "." + str(host))
 os.system("ping -c 2 " + network + "." + str(host))

在ping IP时,您会得到一些字符串格式的结果。试着思考不同的IP如何产生不同的结果。例如,对于活动IP地址,字符串可能是这样的-

PING 10.0.0.254 (10.0.0.254) 56(84) bytes of data.
64 bytes from 10.0.0.254: icmp_seq=1 ttl=64 time=0.030 ms
64 bytes from 10.0.0.254: icmp_seq=2 ttl=64 time=0.044 ms

--- 10.0.0.254 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1021ms
rtt min/avg/max/mdev = 0.030/0.037/0.044/0.007 ms
对于一个不活跃的人

PING 10.0.0.253 (10.0.0.253) 56(84) bytes of data.
From 10.0.0.254 icmp_seq=1 Destination Host Unreachable
From 10.0.0.254 icmp_seq=2 Destination Host Unreachable

--- 10.0.0.253 ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1015ms
pipe 2
那么,考虑一下如何解析这些字符串对象来决定?我们可以观察到的一个非常简单的例子是

如果输出中没有“不可访问”:
打印(ip+“处于活动状态”)

您还可以查看ping统计信息并检索数据包丢失。如果是100%,网络就断了!看看如何使用字符串,如何基于标记进行拆分,或者如何查找子字符串。如果你觉得很淘气,你也可以使用正则表达式。

我不想分析ping命令的输出,而是要分析它的退出代码。根据手册页

 The ping utility exits with one of the following values:
 0       At least one response was heard from the specified host.
 2       The transmission was successful but no responses were received.
 any other value An error occurred. 
所以代码可能是这样的

import os

network = input ("Enter IP Network to scan: ")
print(network)

for host in range (1, 254):
   print("Pinging " + network + "." + str(host))
   h = network + "." + str(host)
   res = os.system("ping -q -c 2 " + h)
   if res == 1 or res == 2: 
       print("host " + h + "is active"

你试了什么?你有没有考虑读取你正在执行的命令的输出?我还在学习Python ATM,但是我得到的输出是。192.168.0.2 ping统计---发送2个数据包,接收0个数据包,+2个错误,100%数据包丢失,时间1009ms管道2 ping 192.168.0.3 ping 192.168.0.3(192.168.0.3)56(84)字节数据。从192.168.0.12 icmp_-seq=1目标主机不可访问从192.168.0.12 icmp_-seq=2目标主机不可访问,但我只想让它显示成功的一个。您必须检查返回的os.system调用,并只打印结果等于0或2的IP地址。@YuriGinsburg我该怎么做?我将使用if循环或虽然循环,然后我将如何写它,如前所述,仍然在学习和有一个思维障碍。谢谢你的信息,它已经非常有用,给了我一些更多的知识,我感谢你