Запустите скрипт Linux на полученных письмах - PullRequest
1 голос
/ 19 апреля 2011

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

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

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

Это отлично работает.

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

$ ./wiki <whatever>

Я получаю ошибки об отказе в разрешении, когда я отправляю электронное письмо на wiki@mydomain.com

Мои разрешения на wiki-скрипт:

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

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

РЕДАКТИРОВАТЬ (18.04.11 20:20): Это мой сценарий.

#!/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

Ответы [ 2 ]

0 голосов
/ 20 апреля 2011

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

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

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

  3. Я установил / etc / aliases впрочитайте

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

  4. разрешения на wiki.py:

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

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

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

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

0 голосов
/ 19 апреля 2011

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

...