之前写过一个关于 ping IP 段的 Python 脚本,现在想把脚本优化一下,支持自定义输入,代码如下:
import subprocess
StartIPFirst = input("Please type first of the IP: ")
StartIPSecond = input("Please type second of the IP: ")
StartIPThird = input("Please type third of the IP: ")
StartIPFourth = input("Please type fourth of the IP: ")
StartIP = StartIPFirst + "." + StartIPSecond + "." + StartIPThird + "." + StartIPFourth
EndIPFirst = input("Please type first of the IP: ")
EndIPSecond = input("Please type second of the IP: ")
EndIPThird = input("Please type third of the IP: ")
EndIPFourth = input("Please type fourth of the IP: ")
EndIP = EndIPFirst + "." + EndIPSecond + "." + EndIPThird + "." + EndIPFourth
for h in range(int(StartIPFirst), int(EndIPFirst)):
for i in range(int(StartIPSecond), int(EndIPSecond)):
for j in range(int(StartIPThird), int(EndIPThird)):
for k in range(int(StartIPFourth), int(EndIPFourth)):
IP = "%s.%s.%s.%s" % (h, i, j, k)
print(IP + "\n")
print(StartIP)
print(EndIP)
当输入完 IP 每个部分后,就直接 print 两个 IP 了,for 循环好像没有运行,什么也没有 print。也没有任何报错,这个是怎么回事?
你的code邏輯怪怪的,而且無法執行啊
請善用ipaddress這個lib,v4,v6都能用
import ipaddress
start_ip = str(raw_input("Enter start IP address: "))
end_ip = str(raw_input("Enter end IP address: "))
if "." in start_ip:
start_ip = ipaddress.IPv4Address(start_ip)
end_ip = ipaddress.IPv4Address(end_ip)
for ip_int in range(int(start_ip), int(end_ip) + 1):
print(ipaddress.IPv4Address(ip_int))
elif ":" in start_ip:
start_ip = ipaddress.IPv6Address(start_ip)
end_ip = ipaddress.IPv6Address(end_ip)
for ip_int in range(int(start_ip), int(end_ip) + 1):
print(ipaddress.IPv6Address(ip_int))
else:
print("IP address format error.")
把你的 range 改 range(start, end+1)
因為有沒有幫助所以我多加解釋
当输入完 IP 每个部分后,就直接 print 两个 IP 了,for 循环好像没有运行,什么也没有 print。也没有任何报错,这个是怎么回事?
Python range() 函数用法隨便找一篇
python range() 函数可创建一个整数列表,一般用在 for 循环中。
函数语法
range(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:
range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
不好意思,这两天一直忙,没有试,今天试了一下,就是后面没有 +1 的问题。
那个没有帮助不知道是谁点的,我没法取消。
楼下的方法好像比我的还好,所以就选了楼下。
as900
我看不到所以其實沒關係
有人覺得沒幫助就多加解釋吧
我也覺得他的方法比較好