Python脚本失败并丢弃0 CPU usag

2024-04-19 06:39:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我脚本的总体目标是对a/8网络进行有效的ping。为此,我运行32个脚本在同一时间扫描a/13每个。你知道吗

剧本的基本内容是

import ipaddress
import time
import fileinput
import pingpack
set = 0
mainset =0
while mainset < 8:
    while set < 256:
        net_addr = ("10.{}.{}.0/24".format(mainset,set))
        ip_net = ipaddress.ip_network(net_addr)
        all_hosts = list(ip_net.hosts())
        f_out_file=('{}_Ping.txt'.format(mainset))
    for i in range(len(all_hosts)):
        output = pingpack.ping("{}".format(all_hosts[i]))
        if output != None:
            with open(f_out_file,'a',newline="\n") as file:
                file.write("{}, Y\r\n".format(all_hosts[i]))

    print ("{}".format("Subnet Complete"))
    set = set + 1
set=0

脚本自己工作和运行,并给我一个很好的输出时,由它自己运行。我遇到的问题是,在python进程锁定并停止写入之前,每个子网运行32个循环(大约8个set循环)。你知道吗

我用来启动32的脚本如下

from subprocess import Popen, PIPE
import time
i = 0
count=0
while i < 32:
    process = Popen(['ping{}.py'.format(i),"{}".format(count)], stdout=PIPE, stderr=PIPE, shell=True)
    print(count)
    print(i)
    i = i + 1
    count=count+8
    time.sleep(1)

在这种情况下;是的;我有32个重复的纸条,每个纸条上有2行不同的/13个子项。它的效果可能和一些一样,但它可以让它们启动并运行。你知道吗

我怎样才能找到停止这些脚本的原因呢?你知道吗

旁注:是的,我知道我可以用NMAP或angrip Scanner这样的工具来完成;但是它们都需要90多个小时来扫描一个完整的/8;我正在尝试将这个过程缩短到可以在更合理的时间范围内运行的东西。你知道吗


Tags: importip脚本formatnettimecountall
1条回答
网友
1楼 · 发布于 2024-04-19 06:39:05

您的第一个问题是,当您转到下一个mainset时,set永远不会被设置回零。第二个问题是mainset从不递增。而不是一对模糊的while循环,为什么不:

for mainset in xrange(8):
    for set in xrange(256):

而且,in range(len(all_hosts))是一种代码味道(结果表明,除了编写all_hosts[i]之外,您从未使用过i)。为什么不:

        for host in all_hosts:

相关问题 更多 >