
У нас есть десятки Ubiquiti Edgerouter-X, которые активны на клиентских локациях. Они, помимо прочего, отвечают за пингование IP каждую минуту. Это делается cronjob (устанавливается с помощью crontab -e) и работает нормально, пока не будет обновлена прошивка.
Когда прошивка обновляется до новой версии, cronjobs «сбрасываются» до значения по умолчанию. После некоторых исследований я заметил, что мне следует использовать system task-scheduler
вместо cronjob. Поэтому я создал ping.sh
файл в /config/scripts/
, установил разрешения на 0755
и сделал chmod +x ping.sh
. Это содержимое файла ping.sh
(для тестовых целей)
#!/bin/bash
echo "Ping Pong!"
echo "Ping Pong!!" >> result.txt
Когда я запускаю скрипт вручную, ./ping.sh
скрипт работает нормально, он выводит эхо Ping Pong!
и пишет Ping Pong!!
в result.txt
. Когда я пытаюсь запустить скрипт с помощью , system task-scheduler
он ничего не делает. Я попробовал 2 конфигурации планировщика задач и перезапустил Edgerouter после commit; save;
:
show system task-scheduler task
task ping-task {
crontab-spec "* * * * *"
executable {
path /config/scripts/ping.sh
}
}
и
show system task-scheduler task
task ping-task {
executable {
path /config/scripts/ping.sh
}
interval 1m
}
Что я не так сделал? Я проверил несколько тем об этом наhttps://community.ui.com/но не смог найти решение...
решение1
Ваше решение показалось мне совершенно оптимальным (работает наEdgeRouter X v2.0.9-hotfix.1).
Я полагаю, что у вас просто возникли проблемы с относительными путями или разрешениями при записи файла result.txt
.
Я задал абсолютный путь для result.txt
(в /tmp
каталоге) и это сработало:
cat > /config/scripts/pinger.sh <<'EOF'
#!/bin/bash
echo "Ping Pong!!" >> /tmp/result.txt
EOF
chmod +x /config/scripts/pinger.sh
configure
set system task-scheduler task pinger executable path /config/scripts/pinger.sh
set system task-scheduler task pinger interval 1m
commit ; save ; exit
watch cat /tmp/result.txt
С помощью последней команды вы можете увидеть, как строка добавляется каждую минуту.