Criar Script [RESOLVIDO]

1. Criar Script [RESOLVIDO]

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 19/06/2012 - 18:51h

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.

Como posso montar esse script?

Agradeço ajuda.

Geraldo.



  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 19/06/2012 - 23:21h

O if testa o resultado de comandos, ( como o test, em [ "$var" ]

Então podes simplesmente usar:


if ifconfig | grep -q dsl0 ; then
ifup dsl0
fi



@eldermarco , Obs.: Tinha saído um monte de coisa junto, porque esqueceste de fechar o código, [ / code ]

3. Re: Criar Script [RESOLVIDO]

Elder Marco
eldermarco

(usa Fedora)

Enviado em 19/06/2012 - 20:20h

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. Re: Criar Script [RESOLVIDO]

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 19/06/2012 - 20:29h

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. Re: Criar Script [RESOLVIDO]

Elder Marco
eldermarco

(usa Fedora)

Enviado em 19/06/2012 - 20:42h

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. Re: Criar Script [RESOLVIDO]

Elder Marco
eldermarco

(usa Fedora)

Enviado em 19/06/2012 - 20:44h

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. Re: Criar Script [RESOLVIDO]

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 22/06/2012 - 10:36h

Obrigado pelo retorno de todos!

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. Re: Criar Script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 22/06/2012 - 10:45h

Retire o -q do grep

if ifconfig | grep -q dsl0 ; then


E no agendamento coloque

segue o crontab:
* * * * * /sbin/confereinternet 2> /tmp/log_erros > /tmp/saida_padrao



Depois veja o conteúdo dos arquivos /tmp/log_erros e /tmp/saida_padrao, eles podem ajudar a encontrar o erro

também podes avaliar o conteúdo de /var/log/syslog




9. Re: Criar Script [RESOLVIDO]

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 22/06/2012 - 11:08h

Alterei e o problema continuou e ficou assim:

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. Re: Criar Script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 22/06/2012 - 11:15h

Sim, o problema vai continuar mesmo, como falei as modificações foram feitas para ajudar a encontrar o erro e ai vai:



ifconfig: command not found



Com que usuário está agendando???

No meu debian somente o root pode usar esse comando, e esse for o seu caso, tem que agendar para ele...




11. Re: Criar Script [RESOLVIDO]

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 22/06/2012 - 11:20h

mudei meu cronta para: * * * * * root /sbin/confereinternet 2> /tmp/log_erros > /tmp/saida_padrao

meu log:
geraldo:/tmp # vi log_erros
/bin/sh: root: command not found





12. Re: Criar Script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 22/06/2012 - 11:32h

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)






01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts