を停止します。サブプロセスの実行は、最初のパイプまでのコマンドを私は自分自身でこのコマンドを実行する場合は、
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
私は 'command'と 'command1'のようにコメントした 'command'に気付くでしょう。よりむしろ(nmapの-PN -p 22 - - ないパイプAWKは(10.15.86.0/24 nmapの-PN -p 22 --open -OG)が存在しないかのようにそれが出力
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...
:の戻り出力の両方-open -oG - 10.15.86.0/24 | awk '$ NF〜/ ssh/{print $ 2}'> sshopen.txt)。 スクリプト内でawkが適用されないのはなぜですか?
おかげ
あなたは1 'popenの()'の呼び出しに二つの別々のコマンド( 'nmap'と' awk')を詰め込むしようとしている、それはですどのように動作していない。以下の@デルタの答えをご覧ください。 –
ああ、大丈夫です。私はあなたがPopen()を1つの巨大な1つのライナーとして扱うことができると思っていました。意味をなさないありがとう! – cootermelon