2017-02-21 13 views
0

私はiptablesを遠隔操作するフラスコアプリを持っています。私は存在しないルールを削除しようとすると、私はフラスコのコンソールに次のエラーを取得: -応答としてフラスココンソールにエラーメッセージを返します

iptables: Bad rule (does a matching rule exist in that chain?). 

応じて、私はこれだけを得るのに対し、: -

Command '['iptables', '-t', 'filter', '-s', u'<some_ip>', '-j', u'DROP', '-D', u'INPUT']' returned non-zero exit status 1 

これは私が持っているかでありますその例外を処理しました: -

except subprocess.CalledProcessError as e: 
      return "\n" + str(e) + "\n" 

私は、フラスココンソールのエラーを応答として返します。どのように達成するのですか?

答えて

2

最初に文字列としてコマンドを作成し、次にサブプロセスでcommand.split()を使用します。

cmd='iptables -t filter -s {}-j DROP -D INPUT'.format('127.0.0.1') 

と、すなわち

subprocess.check_output(cmd.split(), sterr=subprocess.STDOUT) 

二つ目:なぜあなたは存在しないルールを削除したいですか?

+0

私はコマンドを実行する際に問題はありませんが、応答としてエラーメッセージを返します。 –

+0

'from flask imported make_response'を使用しています。私はこのチュートリアルに基づいて私のフラスコのアプリケーションを作成します:http://blog.luisrei.com/articles/flaskrest.html – darvark

+0

@darvarkあなたは正確に 'subprocess.check_output(cmd.split()、sterr = subprocess)を説明する必要があります。 STDOUT) 'が実行されます。 – AJPennster

関連する問題