15 сообщений / 0 новое
Последнее сообщение
Grass_snake
Аватар пользователя Grass_snake
Не в сети
Последнее посещение: 11 лет 7 месяцев назад
Регистрация: 25/03/2013 - 10:24
Как реализовать отправку СМС при перезагрузке?

Доброго времени суток всем.
Необходимо реализовать оповещение по смс при перезагрузке компьютера. Используется 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, но отсылается после загрузки системы. А хотелось бы получить её при инициации выключения. Подскажите, пожалуйста, где грабли?

Теги: 

Отредактировано: lecksys вкл 01/04/2014 - 22:13
DA
Аватар пользователя DA
Не в сети
Последнее посещение: 8 лет 6 месяцев назад
Регистрация: 11/05/2012 - 18:24
По идее он просто прибивается

По идее он просто прибивается до того, как успевает отработать...

openSUSE 13.1 x64 | Linux 3.11 | KDE 4.13
openSUSE 12.3 x32 | Linux 3.7 | KDE 4.10
Grass_snake
Аватар пользователя Grass_snake
Не в сети
Последнее посещение: 11 лет 7 месяцев назад
Регистрация: 25/03/2013 - 10:24
В смысле - процесс

В смысле - процесс завершается? Странно, что на середине - СМС создаёт, а отправить не успевает. Попробую увеличить таймаут, хотя 40 секунд вполне достаточно, если отправлять руками.

DA
Аватар пользователя DA
Не в сети
Последнее посещение: 8 лет 6 месяцев назад
Регистрация: 11/05/2012 - 18:24
Да я думаю, что он

Да я думаю, что он прибивается во время выключения. И таймаутом дело не исправишь. Надо запихнуть его в скрипты, которые при выключении выполняются. Тогда ему должны давать отрабатывать.

openSUSE 13.1 x64 | Linux 3.11 | KDE 4.13
openSUSE 12.3 x32 | Linux 3.7 | KDE 4.10
DA
Аватар пользователя DA
Не в сети
Последнее посещение: 8 лет 6 месяцев назад
Регистрация: 11/05/2012 - 18:24
Да я думаю, что он

.

openSUSE 13.1 x64 | Linux 3.11 | KDE 4.13
openSUSE 12.3 x32 | Linux 3.7 | KDE 4.10
aliaksei1818
Аватар пользователя aliaksei1818
Не в сети
Последнее посещение: 9 лет 8 месяцев назад
Регистрация: 15/07/2012 - 18:42
Версия openSUSE?

Версия openSUSE?

Grass_snake
Аватар пользователя Grass_snake
Не в сети
Последнее посещение: 11 лет 7 месяцев назад
Регистрация: 25/03/2013 - 10:24
12.2 с ядром "из коробки"

12.2 с ядром "из коробки"

aliaksei1818
Аватар пользователя aliaksei1818
Не в сети
Последнее посещение: 9 лет 8 месяцев назад
Регистрация: 15/07/2012 - 18:42
Скормите скрипт reb.sh ->

Скормите скрипт reb.sh -> systemd, закинув в директорию /lib/systemd/system-shutdown/

Grass_snake
Аватар пользователя Grass_snake
Не в сети
Последнее посещение: 11 лет 7 месяцев назад
Регистрация: 25/03/2013 - 10:24
В смысле симлинком? Или как?

В смысле симлинком? Или как?

Grass_snake
Аватар пользователя Grass_snake
Не в сети
Последнее посещение: 11 лет 7 месяцев назад
Регистрация: 25/03/2013 - 10:24
Попробовал симлинком - не

Попробовал симлинком - не прокатило.
В /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

Тоже не получилось(

DA
Аватар пользователя DA
Не в сети
Последнее посещение: 8 лет 6 месяцев назад
Регистрация: 11/05/2012 - 18:24
Попробуйте в начало

Попробуйте в начало Smile

openSUSE 13.1 x64 | Linux 3.11 | KDE 4.13
openSUSE 12.3 x32 | Linux 3.7 | KDE 4.10
aliaksei1818
Аватар пользователя aliaksei1818
Не в сети
Последнее посещение: 9 лет 8 месяцев назад
Регистрация: 15/07/2012 - 18:42
В смысле симлинком? Или как?

Никаких симликов создавать не надо. Просто закиньте скрипт в вышеприведенную директорию и сделайте выполняемым.
Ну и естественно вы должны использовать 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.
Grass_snake
Аватар пользователя Grass_snake
Не в сети
Последнее посещение: 11 лет 7 месяцев назад
Регистрация: 25/03/2013 - 10:24
естественно вы должны использовать systemd

А можно поподробнее об использовании? Гугл поковырял, но - честно - не понял, куда именно надо вписать свой скрипт на выполнение. Если не сложно, можно пример Pardon

aliaksei1818
Аватар пользователя aliaksei1818
Не в сети
Последнее посещение: 9 лет 8 месяцев назад
Регистрация: 15/07/2012 - 18:42
...куда именно надо вписать

А можно поподробнее об использовании?

http://ru.opensuse.org/SDB:Systemd

...куда именно надо вписать свой скрипт на выполнение...

выполняемым/исполняемым chmod +x /lib/systemd/system-shutdown/reb.sh.
systemctl reboot

Grass_snake
Аватар пользователя Grass_snake
Не в сети
Последнее посещение: 11 лет 7 месяцев назад
Регистрация: 25/03/2013 - 10:24
Не помогло. Сообщение не

Не помогло. Сообщение не генерится и, соответственно, не отправляется.