Обновление-пользовательский скрипт rc.d запускается слишком поздно, а также запускается при завершении работы

#debian #raspberry-pi

#debian #raspberry-pi

Вопрос:

У меня есть скрипт, который отправляет мне уведомление о переносе, когда загружается мой безголовый Raspberry Pi (под управлением Debian Wheezy). Я также настроил его для подключения к OpenVPN при загрузке.

Проблема 1. Проблема в том, что он отправляет это уведомление до установления соединения OpenVPN. Поэтому мне отправляется IP-адрес WAN, а не наш защищенный IP-адрес VPN.

Проблема 2. Он запускает уведомление о переносе при завершении работы системы. Поэтому, когда он завершает работу, я получаю то же уведомление по: Привет, я в сети! Мой IP: X.X.X.X

Я думаю, что проблема связана с update-rc.d

Я создал свой сценарий pushover в /etc/init.d/

Я сделал chmod x

Я запустил:

 update-rc.d myscript defaults 02 98
 

Перезагружен, и все же сначала отправляется PO, а VPN подключается вторым.

Поэтому я также попробовал обратное:

 update-rc.d myscript defaults 98 02
 

Перезагружен, и все же сначала отправляется PO, а VPN подключается вторым.

Итак, я попытался добавить sleep 15 в свой скрипт, и все та же проблема.

Как я могу сначала подключиться к OpenVPN, а затем отправить уведомление после этого? Как я могу сделать так, чтобы этот скрипт НЕ запускался при завершении работы системы?

Вот мой скрипт:

 #!/bin/bash
sleep 30

WANIP=$(curl ident.me; echo)
echo "$WANIP"
curl -s 
-F "token=MYTOKENGOESHERE" 
-F "user=MYTOKENGOESHERETOO" 
-F "message=is online and connected. ${WANIP} is my IP." 
https://api.pushover.net/1/messages.json
 

Ответ №1:

Приложение update-rc просто создает символическую ссылку внутри папки rc.X, где X будет меняться в зависимости от того, когда вам нужно запустить скрипт. Когда вы используете опцию по умолчанию, ссылка будет создана во всех папках, в результате чего скрипт запускается в каждом из определенных состояний ОС.

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

http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts

Другим быстрым решением было бы использовать конфигурацию по умолчанию, а затем удалить символическую ссылку из папки rc.0, которая, согласно статье выше, содержит ссылки на сценарии, которые будут выполняться при остановке ОС.

Комментарии:

1. Хорошо, я разберусь с этим подробнее. Спасибо за ссылку. На данный момент это немного выше моей головы, но я научусь. Спасибо