我在 python 2.6.5 中编译了一个脚本,该脚本只是为了自动化我最常用的 nmap 函数并将输出记录到桌面上的 txt 文件中。我还没有自己写这一切,因为我仍然只学习python。我找到了一个用于更新回溯的更新脚本,并将其用作缩进和命令的模板,并对其进行了修改并添加了一些我自己的东西来满足我的需求。
我遇到的问题是这个块
def nmap_target():
try: ip = raw_input(" [>] Enter ip to scan: ")
except KeyboardInterrupt:
print "\n [>] Exiting!\n"
sleep(1)
sys.exit()
print " [>] Attempting targeted scan.\n"
#print ip
if subprocess.Popen("nmap ip >> //root/Desktop/Target.txt && tail /root/Desktop/Target.txt",shell=True).wait() == 0:
print "\n"
print " [>] Targeted scan completed successfully!\n"
menu_main()
else:
print "\n"
print " [>] Nmap scan failed.\n"
它背后的想法是它要求用户在 raw_input() 中输入一个 IP 地址并将其称为 ip,然后我尝试使用 subprocess.Popen("nmap ip 将其传递给 nmap,如上所示。问题它只是写nmap ip而不是打印ip地址然后返回错误,它甚至试图扫描我的网络,每次我测试它时,我都会确保互联网电缆从我的路由器上拔下,这会导致我的错误互联网测试,所以如果你尝试运行下面的代码,如果你的互联网从路由器上拔下,你可能需要在 menu_main() 部分中散列 internet_check() 选项
我现在已经花了 4 天时间,这让我发疯,起初我以为我需要将数字转换为浮点数,所以我尝试了,但还是一样,我尝试了各种各样的事情,花了几个小时在互联网上拖网寻找答案无济于事。
我现在确信这不是我正在尝试的命令,我认为这是退出语句,我尝试将“print ip”放在“print” [>] 尝试目标扫描的行之后。 n" 并且确定输入的 ip 地址显示在屏幕上,这向我证明 raw_input() 正在工作。只要我将它移动到它失败的任何地方,这向我表明它必须是退出语句或缩进的问题,我不确定。我也尝试过散列键盘中断以及下面的几行,我尝试移动 try: 和 if 语句,甚至尝试了其他命令但它只是不会工作aaarrrrrgggghhhhhh
我是否认为将 ip 输入 raw_input() 然后在我可以将其传递给 subprocess.Popen("nmap ip.
就像我提到的,我没有从头开始编写这个脚本,这是我的第一个这样的项目,所以我有很多东西要学,我已经浏览了 python 手册页并查看了各种教程,但只是可以不知道这个。任何帮助都感激不尽
如果有人感兴趣,我会发布完整的脚本,只要我能弄清楚如何正确发布代码