我一直在研究一个小工具包,现在作为一种学习基本python的方法。此工具包的一部分是遵循此解释的代码。它是一个基本的网络枚举脚本,只需ping您本地子网中的所有IP地址。但是我在实现一些问题时遇到了问题。 首先是代码
ip1=raw_input()
if ip1 == None:
ip="192.168.0.x"
else:
ip=ip1
ipend="1"
while ipend != 255:
ip.replace("x", ipend)
attempt=subprocess.Popen(["ping.exe", ip], stdout=subprocess.PIPE).communicate()[0]
if ("unreachable" in attempt):
pass
else:
print "The host at ", ip, "is UP!"
ipend += 1
if ipend == "255":
subprocess.stop
raw_input("Thank you for using PTK. Please press enter to exit.")
enum()
所以我的第一个问题,我相信是在我的str.replace函数中,我正在尝试和一个int到一个str,因此它似乎无法创建,ping和打印正确的ip。我不确定将整个字符串转换为浮动int是否会起作用,但是我认为这是一种想法。如前所述,我对python非常基础,正在努力学习,所以如果这是一个简单修复的愚蠢问题,请原谅我。
答案 0 :(得分:2)
这一行实际上并没有做任何事情。您需要将结果分配给某些内容。
ip.replace("x", ipend)
ipend是一个字符串,递增字符串将不起作用。将它设为int并将其转换为replace函数中的str。
ipend += 1
如果可以的话,通常最好使用for循环,这样你就可以避免搞乱并创建无限循环。
for ipend in range(1,256): #Range won't actually give you the last number here.
#Do stuff