我正在使用NMAP,shell脚本和python脚本在IP列表上运行扫描。 python部分解析nmap的XML输出以生成两个列表,即活动主机和主机的列表。直到一个成为活着和信息将追加到XML和主机的两份名单被纠正了蟒蛇,然后重新执行下来主机遍地的名单上的shell脚本(起点)。
问题: 这是曾经工作,但现在我得到奇怪的行为(语法错误)在运行shell脚本的主机列表。
Script:
# Grap Complete Info in XML file
sudo nmap -v -sS -oX full-scan.xml --append-output --no-stylesheet -iL $1
# Set permissions of xml for python script to write
sudo chmod a+rw full-scan.xml
# Clean NMAP XML Root Appends
sed '/<?xml/s/.*//' full-scan.xml > scan.tmp && mv scan.tmp full-scan.xml
sed 's/<\/nmaprun>//g' full-scan.xml > scan.tmp && mv scan.tmp full-scan.xml
sed '/<nmaprun/d' full-scan.xml > scan.tmp && mv scan.tmp full-scan.xml
echo "<nmaprun>" | cat - full-scan.xml > temp && echo "</nmaprun>" >> temp
mv temp full-scan.xml
# Run python parser here
./parseXMLnmap.py full-scan.xml
Error:
./scanIPlist.sh ip.list.down
Starting Nmap 5.00 (http://nmap.org) at 2013-03-21 11:55 EDT
....
Nmap done: 8 IP addresses (0 hosts up) scanned in 0.59 seconds
Raw packets sent: 16 (672B) | Rcvd: 0 (0B)
[email protected]????:~/workspace/nmap-script$ File "./scanIPlist.sh", line 6
sudo nmap -v -sS -oX full-scan.xml --append-output --no-stylesheet -iL $1
^
SyntaxError: invalid syntax
我在查明困惑是哪里的问题是什么?当我使用这个命令: “命令的nmap -v -sS -oX全scan.xml --append - 输出--no-样式-IL ip.list.down”
在命令行..它工作完全正常。你可以看到nmap正在执行这个命令,那么从那里发出的错误会阻止我的脚本的其余部分继续?
如果我注释掉每一行中的nmap命令后,它的工作原理,所以我想也许是权限问题,但我试图执行与须藤的sed和mv命令,但没有解决问题。
Permissions are as follows after the first run on the ORIGINAL IP list:
ls -l
total 32
-rw------- 1 user user 11469 2013-03-21 12:03 full-scan.xml
-rw------- 1 user user 110 2013-03-21 12:03 ip.list.down
-rw------- 1 user user 238 2013-03-20 14:44 ip.list.orig
-rw------- 1 user user 128 2013-03-21 12:03 ip.list.up
-rwx--x--x 1 user user 1528 2013-03-21 10:26 parseXMLnmap.py
-rwx--x--x 1 user user 676 2013-03-21 12:02 scanIPlist.sh
所以问题是,我需要一个循环,永远不会结束,但不守创造越来越多的流程。
用户输入开始 - >外壳脚本 - > - Python脚本 - >外壳脚本 - > ....等等,直到由用户中断。
以前,在我的Python代码我使用:
subprocess.call(['./scanIPList.sh', 'ip.list.down'])
这是没有好,因为流程会继续开放,它只会保留遍地创建它们,直到计算机最终会崩溃。我需要它从子进程中分离并在执行下一个脚本时退出。
我尝试使用这样的:
subprocess.Popen([sys.executable, './scanIPlist.sh', 'ip.list.down'])
这肯定是问题,现在我得到的原因。
任何帮助表示赞赏。
更新:将最初的3个文件(parseXMLnmap.py,scanIPlist.sh,ip.list.orig)上的所有者更改为root并以根用户身份运行所有内容不能解决问题。 – 2013-03-21 16:16:00