如果我單獨運行這個命令:子運行命令,直至第一管,然後停止
nmap -PN -p 22 --open -oG - 10.15.86.0/24 | awk '$NF~/ssh/{print$2}' > sshopen.txt
我收到我所期望的輸出:
10.15.86.4
10.15.86.5
10.15.86.9
10.15.86.11
etc...
所有主機我的網絡上一個開放的ssh端口。 但是,當我嘗試在Python子進程中運行相同的命令時,它似乎跳過了awk。下面的Python:
import subprocess
subnet = raw_input("Enter subnet to scan: ")
command1 = "nmap -PN -p 22 --open -oG - 10.15.86.0/24 | awk '$NF~/ssh /{print$2}' > sshopen.txt".split()
#command = ["nmap", "-PN", "-p", "22", "--open", "-oG", "-", subnet, "|", "awk", "'$NF~/ssh/{print $2}'", ">", "sshopen.txt"]
nmap = subprocess.Popen(command1, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
nmap_info, out = nmap.communicate()
print nmap_info
你會注意到評論「命令」,因爲我已經嘗試過作爲「命令」和「命令1」。的兩個返回輸出:
Host: 10.15.86.4() Status: Up
Host: 10.15.86.4() Ports: 22/open/tcp//ssh///
Host: 10.15.86.5() Status: Up
Host: 10.15.86.5() Ports: 22/open/tcp//ssh///
etc...
它輸出作爲雖然沒有管AWK(NMAP -PN -p 22 --open -oG - 10.15.86.0/24),而不是(NMAP -PN -p 22 - -open -oG - 10.15.86.0/24 | awk'$ NF〜/ ssh/{print $ 2}'> sshopen.txt)。 爲什麼它不在腳本中應用awk?
感謝
你試圖東西兩個獨立的命令('nmap'和'awk')合併爲一個'POPEN()'調用,這是不是它如何工作。請參閱下面的@ delta的答案。 –
啊,好吧。我認爲你可以把Popen()當作一個巨大的班輪,只要它能正確執行它自己的bash。說得通。謝謝! – cootermelon