Скрипт оболонки (запустіть з cron) вихідний файл переадресації у файл Ubuntu (Armbian on Orange Pi)


0

У мене невеликий сервер Orange Pi One, на якому працює Armbian (на базі Ubuntu), і в ньому є сценарій, який перевіряє веб-сервер, який працює на Rasberry Pi2 під керуванням LibreElec 8.0, і якщо ні, то він здійснює цикл живлення сервера (Rasberry Pi), керованого через пульт дистанційного керування 433 МГц. керований сокет через веб-сервер на блоці ESP8266. Усі підрозділи в моїй домашній мережі; відсутність зовнішнього доступу.

Сценарій працює добре, коли я запускаю його з командного рядка - я бачу логічний потік тощо, і отримую бажані результати. У мене є лінійка в моєму кронтабі, щоб запустити перевірку на годину. Однак я не бачу жодного виводу у файлі журналу, який я вказав у переспрямуванні в рядку мого crontab. Я знаю, що запис crontab працює, коли створюється порожній файл файлів.

Це рядок у моєму кронтабі. Я намагаюся вивести дату та час, а також повідомлення у файл, щоб я знав, коли і коли були запущені тести та перезапущено.

Я усвідомлюю, що вихід з wget надсилається до dev \ null, але я очікую, що мої команди echo будуть зареєстровані. Вони окреслюють логічний потік у сценарії, який я хотів би записати.

59 0-23 * * */root/loftRPTCheck.sh | while IFS= read -r line; do echo "$(date) $line"; done >> /root/RPTloftlog.txt

Ось команда, яку я використовував для запуску перевірки вручну та виводу на своєму терміналі PuTTY:

root@orangepione:~# ./loftRPTCheck.sh
--2017-05-18 21:05:05--  http://192.168.0.143:9091/
Connecting to 192.168.0.143:9091... connected.
HTTP request sent, awaiting response... Read error (Connection timed out) in headers.
Retrying.

--2017-05-18 21:05:13--  (try: 2)  http://192.168.0.143:9091/
Connecting to 192.168.0.143:9091... connected.
HTTP request sent, awaiting response... Read error (Connection timed out) in headers.
Retrying.

--2017-05-18 21:05:22--  (try: 3)  http://192.168.0.143:9091/
Connecting to 192.168.0.143:9091... connected.
HTTP request sent, awaiting response... Read error (Connection timed out) in headers.
Retrying.

--2017-05-18 21:05:32--  (try: 4)  http://192.168.0.143:9091/
Connecting to 192.168.0.143:9091... connected.
HTTP request sent, awaiting response... Read error (Connection timed out) in headers.
Giving up.

wget to Loft RP Transmission failed
Power off Loft RP
--2017-05-18 21:05:39--  http://192.168.0.237/LOFTOFF
Connecting to 192.168.0.237:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘/dev/null

/dev/null                           [ <=>                                                  ]      68  --.-KB/s    in 0s

2017-05-18 21:05:41 (1.23 MB/s) - ‘/dev/null saved [68]

Sleep 10s
Power on Loft RP
--2017-05-18 21:05:51--  http://192.168.0.237/LOFTON
Connecting to 192.168.0.237:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘/dev/null

/dev/null                           [ <=>                                                  ]      68  --.-KB/s    in 0s

2017-05-18 21:05:54 (1.26 MB/s) - ‘/dev/null saved [68]

Sleep 20s
Retrying Loft Tranismission..
--2017-05-18 21:06:14--  http://192.168.0.143:9091/
Connecting to 192.168.0.143:9091... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: /transmission/web/ [following]
--2017-05-18 21:06:14--  http://192.168.0.143:9091/transmission/web/
Reusing existing connection to 192.168.0.143:9091.
HTTP request sent, awaiting response... 200 OK
Length: 24139 (24K) [text/html]
Saving to: ‘/dev/null

/dev/null                       100%[=====================================================>]  23.57K  --.-KB/s    in 0s

2017-05-18 21:06:14 (50.7 MB/s) - ‘/dev/null saved [24139/24139]

Restart worked ok.

Отже, це виглядає нормально, оскільки повідомлення виводяться під час запуску з командного рядка, але я не впевнений, як найкраще записати цей висновок у файл із датою та часом на початку кожного рядка.

Це сценарій оболонки, який виконується:

root@orangepione:~# cat loftRPTCheck.sh
wget --tries=4 --timeout=7 -O/dev/null http://192.168.0.143:9091

if [[ $? -ne 0 ]]; then
    echo "wget to Loft RP Transmission failed"
    echo "Power off Loft RP"
    wget -O/dev/null http://192.168.0.237/LOFTOFF
    echo "Sleep 10s"
    sleep 10
    echo "Power on Loft RP"
    wget -O/dev/null http://192.168.0.237/LOFTON
    echo "Sleep 20s"
    sleep 20
    echo "Retrying Loft Transmission.."
    wget  --tries=4 --timeout=7 -O/dev/null http://192.168.0.143:9091
    if [[ $? -ne 0 ]]; then
        echo "RP not restarted???"
    else
        echo "Restart worked ok."
    fi
    exit 1;
fi

1
Спробуйте вставити пробіл між *і /root/loftRPTCheck.shу свій crontab.
Скотт

1
Я б уникнув трубопроводів у crontab, створив би один сценарій.
Архемар

@Archemar: Я (також) планую кожен раз, коли бачу команду в crontab, що є більш ніж простою командною оболонкою (тобто програмою, необов'язково з аргументами, необов'язково з перенаправленнями <та / або >перемиканнями вводу / виводу), але я не впевнений, чому . Чи можете ви пояснити причину такої відрази?
Скотт

коли крон побачить, чи ls | wcбуде він вести себе так, як ви хочете (aka. bash), або просто зателефонуйте ls з |(pipe) як перше суперечка і wcяк друге?
Архемар

Відповіді:


0

loggerкоманда допоможе тобі. http://manpages.ubuntu.com/manpages/precise/en/man1/logger.1.html


Спасибі за це почне використовувати це як свою систему syslogd. Не впевнений, чому вихідний файл не надсилається у файл, я думаю, що це може бути wget pipe to dev null. Я важко зашифрував свої команди, щоб передати файл журналу, оновив би їх для використання реєстратора. Дякую.
новачок
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.