2016-05-12 3 views
-4

私は 'netstat'コマンドから解析されたすべての接続/接続IPアドレスで 'whois'コマンドを実行するPythonスクリプトをLinux上で作成しようとしています。Python linuxスクリプト(whoisエラー)

私は「SH:1:構文エラー:終了していません引用符で囲まれた文字列」というエラーを取得しています

とその下に掲載whoisの使用オプションを。

誰も私にスクリプトの何が間違っていると説明できますか?私はそれがforループと関係があり、whoisコマンドを実行する方法は私が解決できないようだと信じています。以下は、問題のスクリプトされています。だから私の元の問題は、私はエラーを取得していないよ、完全に固定された

#!/usr/bin/python 
from os import system 

answer = [system("netstat -alpntu46 |grep 'ESTABLISHED\|SYN_RECV' | awk '{print $5 }' |cut -d: -f1'")] 

for i in answer: 
    system('whois') 

EDITです。

-h HOST, --host HOST connect to server HOST 
-p PORT, --port PORT connect to PORT 
-H      hide legal disclaimers 
     --verbose  explain what is being done 
     --help   display this help and exit 
     --version  output version information and exit" 

だから、答え変数を実行しているが、各アドレスにWHOISコマンドを実行することができないことのようです。しかし、今、すべてのスクリプトはありません、それはwhoisの使用例を示していますことを下にIPアドレスをリストしてあります。

+4

あなたのコード行に '' 'sを数えてください。あなたのコードを素早く確認するには、 'system(" '' '' ')'の間にすべてをコピーして、それをシェルで手動で実行しようとします。 –

+0

ありがとう:)本当に正しいです、私は通常、実際のシェルでシステムコマンドの中のすべてを実行します。そのあとに余分なアポストロフィを間違えて入力する必要があります – vladimir

答えて

1

コマンド文字列(system()コマンド内)には、必要以上に(文字列の最後に)'が1つあります。ここでは、それが修正されています

#!/usr/bin/python 
from os import system 

answer = [system("netstat -alpntu46 |grep 'ESTABLISHED\|SYN_RECV' | awk '{print $5 }' |cut -d: -f1")] 

for i in answer: 
    system('whois') 

EDIT(あなたの2番目の質問):あなたがPythonでfor i in answerを行うと

あなたはあなたの答えのすべての項目をループしている、それはしかし、各IPアドレスに対して、正しいですパラメータを渡すことなく、'whois'コマンドだけを実行しているとループしています。あなたはのように、文字列にパラメータを追加する必要があります変数iを想定している

for i in answer: 
    system('whois %s' % i) 

は、IP文字列を保持しています。

+0

ワウのおかげで、 – vladimir

0

私の最初の回答で編集を確認してください(通知するだけです)

+1

ルーカスありがとうございました。私は真剣にこのコミュニティを愛し、私はいくつかの私の大学のコースよりもstackoverflow/stackexchangeで学んだこと笑 – vladimir

関連する問題