我正在使用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