我编写了一个简单的脚本,允许我使用while循环在ip范围内迭代ping命令。
我不确定为什么以后继续收到此消息:
代码如下:
import os
ipnum = 0
iprange = '10.11.1.%s' % (ipnum)
while ipnum < 255:
os.system("ping " + iprange)
ipnum + 1**
任何帮助将不胜感激。
我编写了一个简单的脚本,允许我使用while循环在ip范围内迭代ping命令。
我不确定为什么以后继续收到此消息:
代码如下:
import os
ipnum = 0
iprange = '10.11.1.%s' % (ipnum)
while ipnum < 255:
os.system("ping " + iprange)
ipnum + 1**
任何帮助将不胜感激。
听起来您想要的是这样的:
for ipnum in range(0,255):
os.system("ping 10.11.1.%s" % ipnum)
您的代码当前执行ping操作10.11.1.0
255次,因为字符串不会仅仅因为ipnum
进行更新。您一开始就将其格式化,然后就不要修改。
如果您要做的只是枚举给定范围内的活动IP列表,为什么不使用已存在的IP地址呢?
结帐nmap:
sudo nmap -sn -n 10.11.1.0- -oG - | grep -i Host | cut -d" " -f2
上面的命令:
样本输出
sudo nmap -sn -n 10.11.1.0.- -oG - | grep Host | cut -d" " -f2
# 10.11.1.0.1
# 10.11.1.0.100
# 10.11.1.0.101
# 10.11.1.0.103
# 10.11.1.0.106
# 10.11.1.0.169
# 10.11.1.0.108
Nmap支持扫描当前主机的网络范围以及任何其他网络范围。
如果您需要直接从python执行此操作,请使用subprocess
模块。 https://docs.python.org/2/library/subprocess.html
有关nmap的更多信息:
https://linux.die.net/man/1/nmap
,您使用了诸如nmap,angerip之类的工具。 如果您想要python,我们可以重写它
#!/usr/bin/python
import subprocess
target = 200
up = 0
down = 0
while (target < 255):
ip = "10.11.1." +str(target)
output = subprocess.Popen(["ping","-c","1",ip],stdout = subprocess.PIPE).communicate()[0]
if ('Unreachable' in output):
print 'Host ' + ip + " is offline or unavailable"
down+= 1
else:
print "Host " + ip + " is online"
up+= 1
target = target+1
print "A total of " + str(up+down) + " hosts were scanned."
print str(up) + " hosts were alive,and " + str(down) + " hosts were unreachable. "
quit()