特定のポート番号を含む「Openvas」の「*.nasl」からファイルのリストをgrepしようとしています。
次のコマンドを使用して、ターミナルで直接作成できます。
egrep --only-match '111' /home/gwvm/Openvas/var/lib/openvas/plugins/*.nasl |cut -d ":" -f1
このコマンドは、111 を含む nasl ファイルのすべての名前を返します。
/home/gwvm/Openvas/var/lib/openvas/plugins/SolarWinds_TFTP.nasl:111
/home/gwvm/Openvas/var/lib/openvas/plugins/trojan_horses.nasl:111
そしてカット後:
/home/gwvm/Openvas/var/lib/openvas/plugins/SolarWinds_TFTP.nasl
/home/gwvm/Openvas/var/lib/openvas/plugins/trojan_horses.nasl
しかし、私がpython(3.1.3)にいるとき、出力は私にエラーを与えます:
egrep:/home/gwvm/Openvas/var/lib/openvas/plugins/*.nasl: No such file or directory
「*.nasl」が原因で問題を考えていましたが、既存のファイルで試してみると同じ結果になりました。
コードの一部は次のとおりです。
command = ("egrep --only-match '"+ str(port[0]) +"' "+ openvas_directory["locate"]["nasl"] + '*.nasl' + ' |cut -d ":" -f1 ')
process=sp.Popen(command,shell=True, stdout= sp.PIPE)
また
exec(command)
私も悪い構造を考えていましたが、私が欲しいものを与えるコマンドを印刷しています:
egrep --only-match '111' /home/gwvm/Openvas/var/lib/openvas/plugins/*.nasl |cut -d ":" -f1
何かアイデアがあれば!