Linux slogan
Visite também: BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Comunidades

Criar Script [RESOLVIDO]

[1] Enviado em 19/06/2012 - 18:51h Criar Script [RESOLVIDO]
Linux user: Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)


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.


 

  


Linux user: Raimundo Alves Portela
rai3mb

(usa Outra)

Melhor resposta

[2] Enviado em 19/06/2012 - 23:21h:
Re: Criar Script [RESOLVIDO]

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] Enviado em 19/06/2012 - 20:20h Re: Criar Script [RESOLVIDO]
Linux user: Elder Marco
eldermarco

(usa Fedora)


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]
Linux user: Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)


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]
Linux user: Elder Marco
eldermarco

(usa Fedora)


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]
Linux user: Elder Marco
eldermarco

(usa Fedora)


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]
Linux user: Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)


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] Enviado em 22/06/2012 - 10:45h Re: Criar Script [RESOLVIDO]
Linux user: Raimundo Alves Portela
rai3mb

(usa Outra)


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] Enviado em 22/06/2012 - 11:08h Re: Criar Script [RESOLVIDO]
Linux user: Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)


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] Enviado em 22/06/2012 - 11:15h Re: Criar Script [RESOLVIDO]
Linux user: Raimundo Alves Portela
rai3mb

(usa Outra)


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] Enviado em 22/06/2012 - 11:20h Re: Criar Script [RESOLVIDO]
Linux user: Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)


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] Enviado em 22/06/2012 - 11:32h Re: Criar Script [RESOLVIDO]
Linux user: Raimundo Alves Portela
rai3mb

(usa Outra)


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)




 

  
<< Primeira | Anterior Próxima | Última >>
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.