Wi-Fi отключен до запуска сценария init.d

Я настроил простой скрипт init.d "S3logrotate" для запуска при завершении работы. Скрипт "S3logrotate" отлично работает при запуске вручную из командной строки, но при выключении скрипт работает некорректно.

Сценарий загружает журналы с моего ПК в корзину Amazon S3 и требует, чтобы Wi-Fi работал правильно.

Отладка показала, что скрипт действительно запускается, но процесс загрузки не выполняется.

Я обнаружил, что проблема заключается в том, что скрипт запускается после отключения Wi-Fi.

Это блоки, которые я использовал для проверки моего интернет-соединения в сценарии.

if ping -q -c 1 -W 1 8.8.8.8 >/dev/null; then
  echo "IPv4 is up" >> *x.txt*
else
  echo "IPv4 is down" >> *x.txt*
fi

if ping -q -c 1 -W 1 google.com >/dev/null; then
  echo "The network is up" >> *x.txt*
else
  echo "The network is down" >> *x.txt*
fi

Выход для этого блока:

IPv4 is down
The network is down

Есть ли способ установить приоритет сценария init.d? Например, могу ли я запустить свой скрипт до того, как сетевое соединение будет разорвано? Если нет, то есть ли альтернатива init.d?

Я использую Ubuntu 16.04 и имею двойную загрузку с Windows 10, если это важно.

Спасибо,

сганесан7


person sganesan7    schedule 23.11.2016    source источник
comment
Этот вопрос не касается программирования, как это определено для StackOverflow. Это может быть более подходящим для SE. связанные сайты askubuntu.com ИЛИ superuser.com . Воспользуйтесь ссылкой flag внизу вашего вопроса и попросите модератора переместить его. Пожалуйста, не публикуйте один и тот же вопрос на двух разных сайтах. Прочтите stackoverflow.com/help/how-to-ask stackoverflow.com/help/dont-ask и stackoverflow.com/help/mcve перед публикацией дополнительных вопросов здесь. Удачи.   -  person shellter    schedule 24.11.2016
comment
Ссылка в /etc/rc6.d должна иметь числовой префикс, например K01. Сценарии запускаются в числовом порядке, поэтому вам следует присвоить ему меньший номер, чем сценарию, завершающему сетевое соединение.   -  person Barmar    schedule 24.11.2016


Ответы (1)


Вы должны разместить свой сценарий в:

/etc/NetworkManager/dispatcher.d/pre-down.d

изменить группу и владельца на root

chown root:root S3logrotate

и это должно работать. Если вам нужно сделать это для отдельного интерфейса, поместите скрипт в

создать скрипт внутри

/etc/NetworkManager/dispatcher.d/

и назовите его (например):

 wlan0-down  

и тоже должно работать.

person Leonardo Hermoso    schedule 24.11.2016