Estou executando o Debian 7 Wheezy e preciso iniciar algumas telas na inicialização assim que houver uma conexão com a Internet totalmente funcional. No entanto, não, se a conexão à Internet quebrou e foi conectada novamente. Portanto, apenas na primeira conexão de internet funcional após a inicialização.
Você poderia, por favor, postar um script fictício para isso e me dizer onde colocá-lo e fazê-lo ser executado sob as condições especificadas?
O script só precisa iniciar a tela e terminar, mas a tela deve continuar.
EDITAR
Já ouvi falar da /etc/network/if-up.d/
pasta. Mas como posso garantir que o script não seja executado novamente se a conexão com a Internet for perdida e depois restabelecida?
debian
networking
startup
MinecraftShamrock
fonte
fonte
Respostas:
Coloque seu script
/etc/network/if-up.d
e torne-o executável. Ele será executado automaticamente sempre que surgir uma interface de rede.Para fazê-lo funcionar apenas na primeira vez em que é executado em cada inicialização, verifique se existe um arquivo de sinalizador criado após a primeira vez. Exemplo:
fonte
/var/run
existe um sistema de arquivos volátil (atmpfs
). Portanto, é garantido que ele fique vazio a cada inicialização.python -c 'import os; os.open("/var/run/work-was-already-done", os.O_EXCL|os.O_CREAT, 0)' 2>/dev/null || exit 0
IFACE
se não élo
- ou alguma interface virtual - ou melhor, teste a conectividade com a Internet executando o ping.$IFACE
pode ter como valores qualquer interface que surgir. Você pode listar todas as interfaces existentesip link
ou verificar quais delas estão configuradas para serem ativadas pela varredura/etc/network/interfaces
Este é um trabalho muito adequado
systemd
.Executando um script como um serviço systemd
Se o seu sistema estiver executando o systemd , você poderá configurar seu script para ser executado como um serviço systemd que fornece controle sobre o ciclo de vida e o ambiente de execução, além de pré-condições para iniciar o script, como a rede em funcionamento.
A pasta recomendada para seus próprios serviços é
/etc/systemd/system/
(outra opção é/lib/systemd/system
mas que normalmente deve ser usada apenas para serviços OOTB).Crie o arquivo, por exemplo, com
sudo vim /etc/systemd/system/autossh.service
:Agora você pode testar o serviço:
Verificando o status do serviço:
Parando o serviço:
Depois de verificar se o serviço funciona conforme o esperado, ative-o com:
fonte
A conexão à Internet é iniciada por uma entrada
/etc/rc6.d/
provavelmenteS35networking
. Se você alterar esse arquivo e inserir seus comandos no final, ou melhor, adicione um/etc/init.d/mystuff
e vincule-o/etc/rc0.d/S36mystuff
a ele e insira seus comandos, então isso será iniciado assim que a rede estiver ativa.fonte
/etc/network/if-up.d
/etc/rc0.d
será executado na inicialização, eles serão executados no desligamento (nível 0). Na inicialização, seria algo/etc/rc2.d
parecido ou semelhante. Especificamente para o Debian chiado do OP, é/etc/rcS.d/S12networking
. Tudo simboliza o mesmo arquivo, é claro. BTW @Anthon também obrigado por corrigir minha resposta: "Please" em vez de "Put"? Que erro de digitação estranho!if-up.d
como mecanismo genérico que também funciona em uma reconexão.