2017-01-06 20 views
0

Здесь впервые появился пользователь.Нужна wget, чтобы написать 2 файлам

  • Linux 4.4.36 колос-сервера 2.mga5 # 1 SMP Вт 6 декабря 17:32:56 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

  • GNU Wget 1,15 построен на Linux-гну

  • GNU Баш, версия 4.3.48 (1) -release (x86_64-Mageia-Linux-гну)

у меня хрон, который использует Wget для загрузки файла. Простая работа. Я хочу видеть подтверждение этой работы в своем письме. Я был частично успешным в том, чтобы заставить это работать, но письмо появляется с выводом cron, а не с информацией о журнале wget. Вот пример.

Работа хрон:

/usr/local/bin/update_clouds.sh ; /usr/bin/mail -s "Attempted Cloud Update" -r [email protected] [email protected] < /usr/share/xplanet/logs/update_clouds.txt 

Сценарий оболочки (update_clouds.sh) инициализируется этой хрон делает это:

wget --user=<usr> --password=<passwd> -O /usr/share/xplanet/images/clouds.jpg http://xplanetclouds.com/clouds/2048/clouds_2048.jpg -a /usr/share/xplanet/logs/clouds.log 

Это работает, но моя электронная почта несет весь журнал Wget (/usr/share/xplanet/logs/clouds.log) в теле. Я просто хочу, чтобы последняя транзакция появлялась в этом письме.

Первоначально, я думал, что могу использовать оба параметра регистрации wget, -o и -a. Я мог бы добавить в системный журнал и перезаписать файл, который я хочу в теле письма, но это не работает. Wget использует последний параметр в командной строке, а не для обоих.

Я получил решение, в котором я просто произвольно вытащил последние 30 строк из журнала wget и отправил его по почте. Он работал, но он неэффективен и уродлив. Это выглядит так:

/usr/local/bin/update_clouds.sh ; tail -30 /usr/share/xplanet/logs/clouds.log > /usr/share/xplanet/logs/update_clouds.txt ; /usr/bin/mail -s "Attempted Cloud Update" -r [email protected] [email protected] < /usr/share/xplanet/logs/update_clouds.txt 

Я пробовал использовать «тройник», но это тоже не работает. Кажется, что tee ничего не пропускает и создает пустой файл. Я получаю электронную почту, но в теле ничего нет. Я никогда не использовал тройник раньше и не уверен, что у меня есть ручка.

wget --user=mark9118 --password=xplanetmap -O /usr/share/xplanet/images/clouds.jpg http://xplanetclouds.com/clouds/2048/clouds_2048.jpg -a /usr/share/xplanet/logs/clouds.log 2>&1 |tee /usr/share/xplanet/logs/update_clouds.txt 

Если вы зачитали это далеко, вы, возможно, заметили, что, похоже, существует много способов кожи этой кошки. Мое предпочтение состоит в том, чтобы wget загрузил файл и проанализировал файл журнала, а затем cron, чтобы просто запустить команду и отправить электронное письмо.

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

Любая помощь приветствуется.

Марк

ответ

0

Я отвечаю на свой вопрос через пару часов больше проб и ошибок.

Что я сделал:

  1. Abandon родной функции файла журнала Wget в. Это привело к стандартным выводам.

  2. Перенаправленная стандартная ошибка и стандартная версия в текстовый файл, который будет отправлен по почте моему администратору.

  3. В той же строке я добавил команду добавить содержимое текстового файла, который будет отправлен в файл журнала для update_clouds.

  4. Настроено задание cron, чтобы запустить сценарий и отправить мне по электронной почте.

Команда в скрипт выглядит следующим образом:

wget --user=xxxxxx --password=xxxxxxxxxx -O /usr/share/xplanet/images/clouds.jpg http://xplanetclouds.com/clouds/2048/clouds_2048.jpg 2> /usr/share/xplanet/logs/update_clouds.txt ; cat /usr/share/xplanet/logs/update_clouds.txt >> usr/share/xplanet/logs/clouds.log 

Работа хрон заключается в следующем:

/usr/local/bin/update_clouds.sh ; /usr/bin/mail -s "Updated Clouds" -r "Shuttle Cron<[email protected]>" [email protected] < /usr/share/xplanet/logs/update_clouds.txt ; 

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

Mark