Executando um script no desligamento precisando de rede sem fio

0

Estou tentando executar um script que rsyncs um diretório de uma caixa linux para outro no desligamento. Eu pensei que estava funcionando, mas todos os meus testes estavam em uma caixa conectada via conexão com fio.

Quando tentei no meu laptop, ele falhou. Eu criei um script de depuração que ecoa o status do ip em um arquivo e o executei no serviço e mostrei que a portadora está sendo removida da interface sem fio, mas não da interface com fio para que funcione sem problemas, mas com o Wi-Fi falha.

Eu gostaria que funcionasse sem fio aqui é a configuração que tenho usado no meu laptop e tenho as interfaces com e sem fio configuradas.

Eu usei a plotagem systemd-analyse para garantir que o serviço prepowoff seja executado no final da inicialização, então, pelo que eu li, o desligamento deve ocorrer no início da seqüência de desligamento.

Aqui estão os arquivos e informações de depuração.

prepowoff.service (em / etc / systemd / system)

[Unit]

After=multi-user.target
Before=shutdown.service reboot.service halt.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/root/bin/debug

[Install]
WantedBy=multi-user.target

o script de depuração (em / root / bin)

#!/bin/bash
DATE=$(/bin/date +"%D - %T - %N")
WLAN0_STATE=$(/sbin/ip a show wlan0)
ETH0_STATE=$(/sbin/ip a show eth0)
LOGFILE=/root/bin/log.txt
SLEEP=/bin/sleep
echo "++++++  START  ++++++" > ${LOGFILE}
echo ${DATE} >> ${LOGFILE}
echo "--------------------" >> ${LOGFILE}
echo ${ETH0_STATE} >> ${LOGFILE}
echo "--------------------" >> ${LOGFILE}
echo ${WLAN0_STATE} >> ${LOGFILE}
echo "+++++  END  ++++++++" >> ${LOGFILE}

Esta é a saída do script de depuração quando eu o executo, uma vez inicializado, o ip info é removido, mas você pode ver o status.

++++++  START  ++++++
01/16/16 - 16:50:47 - 145920573
--------------------
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
--------------------
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
+++++  END  ++++++++

e aqui está a saída depois de uma reinicialização mostrando a interface com fio e sem fio.

++++++  START  ++++++
01/16/16 - 16:51:10 - 424001117
--------------------
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
--------------------
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN
+++++  END  ++++++++

Eu tentei todos os tipos ativando o NetworkManager-wait-online.service e indo atrás dele, mas apenas ativando esse serviço começou a causar erros. Não consigo entender por que a operadora acessa o wifi, já que, em teoria, o desligamento do serviço de pré-lançamento deveria acontecer antes de qualquer outra coisa.

Qualquer ajuda seria muito apreciada.

Obrigado.

    
por fingletoe 16.01.2016 / 18:46

1 resposta

0

Consegui fazê-lo funcionar com este arquivo de serviço.

[Unit]
After=wpa_supplicant.service dbus.service NetworkManager.service
Requires=wpa_supplicant.service dbus.service NetworkManager.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/root/bin/prepowoff

[Install]
WantedBy=multi-user.target

O suplicante wpa e o dbus estavam desconectando a placa wireless, embora o Network Manager ainda estivesse em execução.

    
por 17.01.2016 / 22:06