2017-02-21 2 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 import make_response'. и я создаю свое приложение для фляжек на основе этого урока: http://blog.luisrei.com/articles/flaskrest.html – darvark

+0

@darvark Вам нужно объяснить, что именно 'subprocess.check_output (cmd.split(), sterr = subprocess. STDOUT) 'делает. – AJPennster

Смежные вопросы