Python ping扫描脚本问题

3
import subprocess 

nrange = "192.168.229."

for i in range(0, 254):
        address = nrange + str(i)
        res = subprocess.call(['ping', '-c', '3', address])
        if res == 0:
            print "ping to", address, "OK"
        elif res == 2:
            print "no response from", address
        else:
            print "ping to", address, "failed!"

root@kali:~/Desktop# ./pypsweep.py
^C./pysweep.py: line 3: nrange: command not found
./pysweep.py: line 5: syntax error unexpected toke `('
./pysweep.py: line 5: `for i in range (0, 254):'
root@kali:~/Desktop#

我遇到了上述代码的问题。我试图通过Python编写一个ping扫描脚本来在bash中运行。我尝试了其他人在网络上发布的几个示例,但似乎都无法正常工作。这段代码是我基于我能找到的最简单的示例编写的。我不确定是否只是简单地忽略了一个明显的错误或者问题可能是什么。任何对解决此问题的帮助都将不胜感激。

如果有影响的话,这是在Kali Linux发行版上的VMware Workstation Pro上运行的。


1
不要发布代码的图片。请发布实际的代码... - Fantastic Mr Fox
我猜你的意思是 from subprocess import * 而不是 import subprocess *。这可能导致语法错误,因为 Python 正在尝试(不成功地)将 subprocessnrange 相乘。 - Aurora0001
1
另外,你内部循环的缩进出了问题。在你解决了 @Aurora0001 建议的问题后,这会引起一个 IndentationError - Florin Stingaciu
好的,我已经将代码添加到帖子中了。我已经按照@Aurora0001提到的更改了导入语法为'from subprocess import *',并像florin所说的那样调整了缩进。但是仍然在第5行开始的'for循环'处出现相同的语法错误。 - T.Bender
import subprocess * should be import subprocess or from subprocess import * I'm guessing the prior since subprocess.call([ - MooingRawr
显示剩余2条评论
1个回答

2

您的代码没有注释行。因此,当运行此命令时:

root@kali:~/Desktop# ./pypsweep.py

Shell尝试将./pypsweep.py解释为默认类型:shell脚本。这就是为什么您看到了错误信息。

有两个解决方案。

  1. Call python explicitly:

    root@kali:~/Desktop# python ./pypsweep.py

  2. Add this line to the beginning of your script:

    #!/usr/bin/python
    

    If you python is not in /usr/bin, adjust the path appropriately.


在文件开头添加 #!/usr/bin/python 解决了这个问题。非常感谢! - T.Bender

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接