Доброго времени суток всем.
Необходимо реализовать оповещение по смс при перезагрузке компьютера. Используется USB-модем и программа gammu.
В /etc/rc.d создан скрипт rclocal и симлинк rc.local, прописан в runlevel.
В скрипте указано:
## Execute ony when service is started
case $1 in
start)
## commands will be executed
/SCRIPTS/SMS-send/startsys.sh
;;
restart|reload|force-reload)
/SCRIPTS/SMS-send/reb.sh
/usr/bin/sleep 40
;;
stop)
/SCRIPTS/SMS-send/reb.sh
/usr/bin/sleep 40
;;
*)
exit 0
;;
esac
Сам скрипт reb.sh:
#!/bin/bash
DATE=`date +"%d.%m.%Y %H:%M:%S"`
/usr/bin/gammu-smsd-inject TEXT "+79........." -text "$DATE Инициирована перезагрузка или выключение системы"
Проблема в том, что при перезагрузке СМС создается в outbox, но отсылается после загрузки системы. А хотелось бы получить её при инициации выключения. Подскажите, пожалуйста, где грабли?
По идее он просто прибивается до того, как успевает отработать...
В смысле - процесс завершается? Странно, что на середине - СМС создаёт, а отправить не успевает. Попробую увеличить таймаут, хотя 40 секунд вполне достаточно, если отправлять руками.
Да я думаю, что он прибивается во время выключения. И таймаутом дело не исправишь. Надо запихнуть его в скрипты, которые при выключении выполняются. Тогда ему должны давать отрабатывать.
.
Версия openSUSE?
12.2 с ядром "из коробки"
Скормите скрипт reb.sh -> systemd, закинув в директорию /lib/systemd/system-shutdown/
В смысле симлинком? Или как?
Попробовал симлинком - не прокатило.
В /lib/systemd/system-shutdown/ лежит скрипт mdadm.shutdown
#!/bin/sh
# We need to ensure all md array with external metadata
# (e.g. IMSM) are clean before completing the shutdown.
/sbin/mdadm --wait-clean --scan
Добавил в конец путь к своему скрипту
#!/bin/sh
# We need to ensure all md array with external metadata
# (e.g. IMSM) are clean before completing the shutdown.
/sbin/mdadm --wait-clean --scan
/SCRIPTS/SMS-send/reb.sh
Тоже не получилось(
Попробуйте в начало
Никаких симликов создавать не надо. Просто закиньте скрипт в вышеприведенную директорию и сделайте выполняемым.
Ну и естественно вы должны использовать systemd.
man systemd-shutdown
Immediately before executing the actual system halt/poweroff/reboot/kexec system-shutdown will run all executables in /usr/lib/systemd/system-shutdown/ and pass one arguments to them: either "halt", "poweroff", "reboot" or "kexec", depending on the chosen action. All executables in this directory are executed in parallel, and execution of the action is not continued before all executables finished.
А можно поподробнее об использовании? Гугл поковырял, но - честно - не понял, куда именно надо вписать свой скрипт на выполнение. Если не сложно, можно пример
http://ru.opensuse.org/SDB:Systemd
выполняемым/исполняемым chmod +x /lib/systemd/system-shutdown/reb.sh.
systemctl reboot
Не помогло. Сообщение не генерится и, соответственно, не отправляется.