LINUX.ORG.RU

python и запуск программы с аргументом


0

1

Возникла проблема при написании небольшего скрипта, который должен добавлять эл. адрес в файл, после чего Postfix перехэширует этот файл и перегружает конфиг. В ручную всё работает:

postmap hash:/var/spool/postfix/plesk/blacklist

Но в скрипте почему-то при выполнении:

subprocess.call(['/usr/sbin/postmap', 'hash:/var/spool/postfix/plesk/blacklists'])

Как и при:

os.system('/usr/sbin/postmap hash:/var/spool/postfix/plesk/blacklists')

Ничего не происходит. Где косяк?


Ничего не происходит.

Обманываешь, наверняка.

>>> import subprocess
>>> subprocess.check_call(['/usr/sbin/postmap', 'hash:/var/spool/postfix/plesk/blacklists'])
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python2.7/subprocess.py", line 511, in check_call
    raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '['/usr/sbin/postmap', 'hash:/var/spool/postfix/plesk/blacklists']' returned non-zero exit status
1
>>>
baverman ★★★
()
Ответ на: комментарий от baverman

Да, ошибок нет. Тем не менее, эффекта нет. Если кинуть письмо с забаненого мыла, то письмо приходит как ни в чем не бывало. Если после этого ручками в шеле набить эту же команду и перегрузить конфиг почтовика, то бан применяется как надо.

LMW
() автор топика
Ответ на: комментарий от LMW

Cравни выхлоп

strace -ff postmap …

и

strace -ff python -c «import subprocess; subprocess.call(…)»

Ты же понимаешь, это очень сомнительно, что они будут отличаться. То есть дело, скорей всего, не в питоне.

baverman ★★★
()
Ответ на: комментарий от baverman

> Меня терзают смутные сомненья. А этот шаг выполняется, после запуска скрипта?

Само собой. Я знал, что ты это спросишь :)

Ты же понимаешь, это очень сомнительно, что они будут отличаться. То есть дело, скорей всего, не в питоне.


Тем не менее, не вижу больше причин. Если в шеле отрабатывает нормально, а на этой строчке в скрипте нужное действие не выполняется, то вывод, как мне кажется, очевиден. Тем не менее, не могу понять корень проблемы.

LMW
() автор топика
Ответ на: комментарий от LMW

LOL, я знал, что питон не при чем. You are doing it wrong.

В момент, когда выполняется postmap, файл пустой.

Совет #1: если хочешь писать через принт, то для этого есть специальный уличный синтаксис — print >> file, 'Hello World!'

Совет #2: помни о буферизованном выводе, Люк! Хотя бы закрывай файл-то.

baverman ★★★
()
Ответ на: комментарий от baverman

И еще.

#!/usr/local/bin/python2.7

Лютый шебенг. Так делают ССЗБ.

baverman ★★★
()
Ответ на: комментарий от baverman

Мда...я - нубас =( Выйди в жабу, если еще пользуешься.

LMW
() автор топика

Для постфикса храни емейлы в БД - тогда и перехешировать не надо и постфикс заставлять перечитать - тоже.

mmarkk
()
Ответ на: комментарий от mmarkk

Они и так в бд. Но просто те, что НЕ нужно принимать мне показалось легче хранить во внешнем файле.

LMW
() автор топика
Ответ на: комментарий от mmarkk

Раз - два в месяц. Приходят в обычном текстовике, который парсится скриптом, добавляется в конфиг Postfix, перехэшируется и после чего перегружается конфиг постфикса. Дело одной команды ;)

LMW
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.