Запустите скрипт Linux на полученных письмах

1

Я написал небольшую небольшую script, которая ищет работу над wikipedia, а затем печатает результат в командной строке. Я хочу, чтобы иметь возможность отправить это слово на мой сервер, а затем вернуть мне мой сервер.

До сих пор у меня появился новый пользователь с именем wiki, куда отправляются электронные письма. Я получаю почту в порядке. В /etc/aliases я перенаправил входящие письма на мой script, я написал.

# See man 5 aliases for format
wiki: "|/home/wiki/scripts/wiki"

Это прекрасно работает.

Мой script работает поиск из командной строки, как будто я набрал

$ ./wiki <whatever>

Я получаю разрешение отклоненных ошибок, когда я отправил электронное письмо на [email protected]

Мои разрешения wiki script:

 -rwxr-xr-x 1 wiki wiki  427 2011-04-18 22:54 wiki

Что не так! Какие разрешения мне нужно установить? Любая помощь приветствуется.

EDIT (18.04.11 8:20): Это мой script.

#!/bin/bash

read MSG
echo $MSG >> "newfile"
FROM=$(echo "$MSG" | cut -d " " -f2)
DATA=$(echo "$MSG" | cut -d " " -f3)
if [ MSG ]
then
RTN=`nslookup -q=txt $DATA.wp.dg.cx | grep "text =" | cut -d"=" -f2`

echo $RTN | sendmail -s "wikipedia: '$DATA'" $FROM

else
echo  wilkipedia nslookup. Please supply a command line argument.
fi
  • 0
    Вы уверены, что реальный скрипт возвращает эту ошибку, а не что-то внутри этого скрипта? Что, если вы поместите «echo suceeded && exit» вверху, чтобы убедиться, что он вызывается.
  • 0
    Я получил это в ответном письме. Команда умерла со статусом 127: "/ home / wiki / scripts / wiki". Вывод команды: / home / wiki / scripts / wiki: строка 8: newfile: в доступе отказано nslookup: '.wp.dg.cx' не является допустимым именем (пустая метка) / home / wiki / scripts / wiki: строка 15: sendmail: команда не найдена
Теги:
email

2 ответа

0
Лучший ответ

Это то, что я сделал, чтобы позаботиться о моей проблеме...

  • Я сломал свой bash script и написал ту же функцию в python. Я использовал python из-за его функциональности синтаксического анализа электронной почты. Я также запускал пользовательский ввод через некоторый код предотвращения перехода строки, чтобы я мог безопасно передать его методу python subprocess.popen().

  • Я пытался записать stdin в локальный файл, чтобы я мог видеть, где разбирать текст, однако почтовое приложение (почта или постфикс, не уверен) не имеет прав на запись файлов - Prob a хорошо в конце. Чтобы отлаживать, я просто вернул исходный stdin (заголовок электронной почты и все) в строке и отправил его по электронной почте мне, чтобы узнать, что происходит.

  • Я установил /etc/aliases, чтобы читать

    wiki: "|/home/wiki/scripts/wiki.py"

  • Разрешения на wiki.py

    4 -rw-r--r-- 1 wiki mail 1902 2011-04-19 21:04 wiki.py

    и таким образом почтовая программа успешно передает ее на ваш script. Вы также можете проверить "/var/log/mail.log" для вывода, если у вас есть ошибки в вашем script, и ничто не будет отправлено вам по электронной почте. Если почта достигла script, но была исправлена ​​ошибка из-за синтаксиса или ошибки, вы должны получить ответ от MAILER-DAEMON по электронной почте, в котором говорится, что он не доступен.

  • Я не использовал procmail или имел файл .procmailrc. /etc/aliases работал отлично. Он передает ваше сообщение электронной почты в поток stdin, а в python попробуйте следующее:

extra="" while 1: line = sys.stdin.readline() if not line: break extra = extra + line.strip(" ")

  • 0
    Было бы полезно иметь полный код для последующего чтения.
  • 0
    Мне очень жаль. Этот мой проект настолько стар, и с тех пор я потерял код.
0

В зависимости от вашего почтового сервера (например, постфикса) вам может потребоваться настроить его, чтобы разрешить отправку почты. Чаще всего использование ~/.procmailrc проще всего.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню