Preciso criar um script que ao executar um linha se o valor for verdadeiro ele não executa nada, se falso executa uma ação:
Eu preciso criar, pois, quando meu adsl ao ficar down, reinicie automaticamente e meu STARTMODE está igual a "auto" e quando a internet cai, ele não está reiniciando, aí pensei em fazer um script. A minha idéia é a seguinte, o script roda o comando "ifconfig | grep dsl0" se não parecer nenhuma mensagem, ele considera como adsl down e roda o "ifup dsl0", caso contrário não roda nada.
Guarde o conteúdo da saída de "ifconfig | grep dsl0" numa variável e depois teste ela para saber se está vazia ou não. Se estiver vazia, você considera como down. Se não... bom, não.
[4] Enviado em 19/06/2012 - 20:29h Re: Criar Script [RESOLVIDO]
Elder, a idéia é essa mesmo.
Se executar "ifconfig | grep dsl0 > teste" ele cria um arquivo com os valores da execução, mas como eu não tenho prática em script, não sei como verificar se o arquivo "teste" tem valores ou está vazio.
Você consegue me orientar?
Obrigado
Geraldo.
[5] Enviado em 19/06/2012 - 20:42h Re: Criar Script [RESOLVIDO]
Como eu disse, não é necessário guardar em nenhum arquivo. Guarde numa variável.
var="$(ifconfig | grep dsl0)"
if [ -z "$var" ]; then
ifup dsl0
fi
Essa é uma forma. Existem outras. Inclusive, sem usar variável alguma. Acho que fica mais intuitivo dessa forma no caso de alguém que não tem muitos conhecimentos em shell.
[6] Enviado em 19/06/2012 - 20:44h Re: Criar Script [RESOLVIDO]
Eita, saiu um monte de coisas junto. Considere apenas o código que aparece nas primeiras linhas ali em cima porque não estou conseguindo editar o comentário também.
[7] Enviado em 22/06/2012 - 10:36h Re: Criar Script [RESOLVIDO]
Usei o código do rai3mb e rodou legal, mas estou tendo um outro problema. Quando executo o script na linha de comando, funciona cem por cento, mas quando coloco ele no crontab não funciona legal e ele fica reiniciando o adsl a todo momento e o correto seria reiniciar o adsl só se ele estivesse off.
O que estou fazendo de errado?
Segue o código:
#!/bin/bash
if ifconfig | grep -q dsl0 ; then
echo "internet ligada"
else
/etc/init.d/network restart dsl0
fi
segue o crontab:
* * * * * /sbin/confereinternet
[8] Enviado em 22/06/2012 - 10:45h Re: Criar Script [RESOLVIDO]
Meu script ficou assim:
#!/bin/bash
if ifconfig | grep dsl0 ; then
echo "internet ligada"
else
/etc/init.d/network restart dsl0
fi
O log de erro:
geraldo:/tmp # vi log_erros
/sbin/confereinternet: line 2: ifconfig: command not found
o log de saida:
geraldo:/tmp # vi saida_padrao
Shutting down network interfaces:
dsl0 name: DSL Connection
..doneHint: you may set mandatory devices in /etc/sysconfig/network/config
Setting up network interfaces:
dsl0 name: DSL Connection
..done
[10] Enviado em 22/06/2012 - 11:15h Re: Criar Script [RESOLVIDO]
Agenda no cron do root, nem precisa por o root na frente.
su (senha)
crontab -e
Agora nota-se o /bin/sh, significa que seu BASH padrão e o sh e não o bash, não sei mas parece que ele não aceita colocar o usuário antes do comando no cron.
Se puderes e não for problema para seu ambiente, mude o SHELL padrão para o BASH
export SHELL=/bin/bash
Coloque o comando no arquivo /etc/profile (para a mudança ter efeito ao reiniciar a estação)