我正在研究以下脚本以自动执行枚举阶段。
我使用子进程来运行nmap:
subprocess.run(["nmap", "192.168.1.1"])
我想获得杀死这个子进程并执行其余代码的可能性,但是当我选择ctrl + c时,整个脚本都运行了。
答案 0 :(得分:1)
通过以下操作对其进行背景处理:
ctrl+z
答案 1 :(得分:0)
您可以在 try /除外中进行子流程:
try:
subprocess.run(["nmap", "192.168.1.1"])
except:
print("Nmap Stopped.")
pass
当您按下 CTRL + C 时,将发生错误,并使用 except 部分进行处理。
答案 2 :(得分:0)
在这里应使用subprocess.Popen
或subprocess.call
而不是subprocess.run
subprocess.call
将成为阻塞调用,这意味着它将等到命令完成后再继续执行代码。
或另一种方法是将subprocess.run
放在async
函数中并分别执行
示例
import asyncio
async def run_nmap(ip:str):
subprocess.run(["nmap", ip])
def run_the_thing():
...
loop = asyncio.get_event_loop()
loop.create_task(run_nmap("192.168.1.1"))
...