
Minha máquina virtual às vezes perde a conexão com a internet no Linux e preciso ficar conectado constantemente. Então escrevi o seguinte script:
#!/bin/bash
wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -ne 0 ]]; then
service network-manager restart
fi
Quando executo este script no console ele funciona, mas usando um cron
recebo:
network-manager: unrecognized service
O que posso fazer para que isso funcione ou que outra abordagem pode me ajudar?
---------------- SOLUÇÃO ----------------
Para saber por que isso funciona no console, mas não durante a tarefa que cron
executei no console:
echo $PATH
Então isso foi exibido:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Então eu edito meu script para:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -ne 0 ]]; then
service network-manager restart
fi
E isso funciona agora!
Responder1
Supondo que você esteja usando algum tipo de distribuição semelhante ao Linux Mint...
Parece que o programa "serviço" não consegue encontrar um script "gerenciador de rede" para executar. Ele aparece em /etc/init ou /etc/init.d para que você possa verificar o que está disponível.
Ou veja se o preenchimento automático lhe dirá (mais fácil, IMO). Abra um terminal e digite:
service net
em seguida, digite TABvárias vezes e deverá obter um nome preenchido automaticamente como "networkign" e até ver algumas opções que você pode usar, como:
$ service networking
force-reload reload restart start stop
Então você pode tentar usar (pode ser necessário sudo
se o script ainda não estiver root):
service networking restart
Além disso, você pode acessar ping
um site como o Google a cada minuto para ver se a rede ainda está ativa, em vez de tentar fazer o download.
Tente verificar se há um bug na VM ou configurações estranhas, normalmente ela não deve perder a conexão de rede, a menos que o computador host a perca...