você está aqui: Home  → Arquivo de Mensagens

Scripts Shell para obter seu ip 24h por dia na internet discada!

Colaboração: Rafael Henrique da Silva Correia

Data de Publicação: 15 de Janeiro de 2007

Gostaria de mostrar 2 scripts pra vocês que estão me ajudando muito no meu dia-a-dia. Sou um usuário de internet discada, como todos sabem, suas características marcantes são a lentidão e as quedas, 1 por hora dependendo do provedor (se não mais). Eu queria desenvolver um programa que me mantivesse conectado 24h por dia mesmo que eu não estivesse em casa, essa era minha proposta inicial, porém também gosto de usar meu computador mesmo que não esteja em casa, resumindo ssh :)

Criei então dois scripts (um deles baseado na Mala direta de Júlio César Neves no Cantinho do Shell) deste mesmo site!

O primeiro é um script para verificar se a conexão está ativa de um em um minuto, em caso de queda de conexão ele reconecta pelo wvdial

O segundo (que foi baseado na mala direta) envia meu ip de uma em uma hora para meu e-mail! Porque em uma reconexão eu perco meu ip anterior por não ser estático.

wvdial

(o objetivo desta dica é usar o wvdial para conectar, se no caso seu modem não estiver em pleno funcionamento descarte essa dica)

O wvdial é um discador em modo texto do GNU/Linux, encontrado em quase todas as distribuições (se não todas). Ele é muito fácil de ser configurado, você só precisa escrever um arquivo de configuração chamado wvdial.conf no diretório /etc.

Como configurá-lo??

Uma coisa acaba se tornando simples quando você quebra a cabeça durante 3 meses pra ver isso funcionar, no meu caso apanhei de 10x0 do meu modem durante 3 meses, mas quando você passa um tempo quebrando a cabeça você aprende como funcionam as coisas. Há um tempo atrás usava o gnome-ppp (discador do Gnome) agora só uso o wvdial, porque gostei mais dele e ele não tem tantos problemas como o gnome-ppp.

Como configurar seu arquivo ``/etc/wvdial.conf:``

  [Dialer Defaults]
  Modem = [local do dev do modem]
  ISDN = off
  Modem Type = Analog Modem
  Baud = 115200
  Init = ATZ
  Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
  Init3 =
  Init4 =
  Init5 =
  Init6 =
  Init7 =
  Init8 =
  Init9 =
  Phone = [número a ser discado]
  Phone1 =
  Phone2 =
  Phone3 =
  Phone4 =
  Dial Prefix =
  Dial Attempts = 1
  Dial Command = [discagem tom=ATM1L3DT pulso=ATM1L3DT]
  Ask Password = off
  Password = [senha]
  Username = [seu username COMPLETO]
  Auto Reconnect = off
  Abort on Busy = on
  Carrier Check = on
  Check Def Route = on
  Abort on No Dialtone = on
  Stupid Mode = on
  Idle Seconds = 0
  Auto DNS = on
  ;Minimize = off
  ;Dock = on
  ;Do NOT edit this file by hand!

Esta seria a sintaxe do arquivo, o meu arquivo de exemplo está aqui:

  [Dialer Defaults]
  Modem = /dev/ttySL0
  ISDN = off
  Modem Type = Analog Modem
  Baud = 115200
  Init = ATZ
  Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
  Init3 =
  Init4 =
  Init5 =
  Init6 =
  Init7 =
  Init8 =
  Init9 =
  Phone = 32418415
  Phone1 =
  Phone2 =
  Phone3 =
  Phone4 =
  Dial Prefix =
  Dial Attempts = 1
  Dial Command = ATM1L3DT
  Ask Password = off
  Password = [minha senha]
  Username = rafael_henriqu@itelefonica.com.br
  Auto Reconnect = off
  Abort on Busy = on
  Carrier Check = on
  Check Def Route = on
  Abort on No Dialtone = on
  Stupid Mode = on
  Idle Seconds = 0
  Auto DNS = on
  ;Minimize = off
  ;Dock = on
  ;Do NOT edit this file by hand!

Se o modem de vocês estiver configurado, e este arquivo (/etc/wvdial.conf) estiver certo quando vocês derem o comando:

  $wvdial

no terminal ele vai conectar automaticamente. Detalhe deixe as permissões do arquivo /etc/wvdial.conf como 640 e o grupo que vocês tão vendo aí (consultem comandos chgrp e chmod para mais informações):

  -rw-r----- 1 root dialout 616 2006-12-16 22:55 /etc/wvdial.conf

Script pra conexão:

  #!/bin/bash
  #verifique se o processo wvdial está sendo executado
  
  pstree | grep wvdial >> /dev/null
  
  # se wvdial não estiver rodando execute
  
  if [ $? -ne 0 ]; then
  clear
  x=0
  while [ 10 -gt $x ]; do
  sleep 1
  done
  wvdial
  
  #senão não execute
  else
  clear
  exit
  fi

Problema da conexão resolvida e o ip agora como eu faço??

Agora eu tinha mais um problema. Como fazer para obter meu ip? Eu queria ficar com o servidor ssh no ar 24h por dia.

Problemas acabados pois já inventaram o sendmail (que é osso pra configurar) e o msmtp (que é facinho, facinho) ! No meu script 2 eu precisava de um "programinha" que me enviasse o ip certo, assim eu caio, o wvdial reconecta e o msmtp me envia o ip por email.

O msmtp é um programa de envio (recebimento não sei pois não testei ainda) de email em modo texto!!

Instalação e configuração msmtp

  #apt-get install msmtp

No home do user que você quer usar o msmtp (no meu caso do /home/rafael) você criará o arquivo .msmtprc da seguinte forma:

  #touch /home/<user>/.msmtprc
  #vim /home/<user>/.msmtprc

Neste arquivo eu configurei o gmail para o envio de mensagens.

Configuração do .msmtprc

  # Set default values for all following accounts.
  defaults
  tls on
  
  # GMail
  account gmail
  host smtp.gmail.com
  port 587
  from rafaelhenriqu@gmail.com
  auth on
  user rafaelhenriqu@gmail.com
  password <senha de vcs>
  account default : gmail
  
  
  Agora vou explicar:
  account = nome da continha
  host = smtp do server
  port = porta
  from = quem é você
  auth = pra requerer autenticação
  user = vocês
  password = senha (ooohhh sério)
  account default = conta padrão que vocês querem usar (ou seja pode configurar mais
  de uma conta)

Vamos ao script

  #!/bin/bash
  echo -e "From: EU GMAIL<rafaelhenriqu@gmail.com>\nSubject: :) \nTo: EU YAHOO <rafael_henriqu@yahoo.com.br>\n\n$(ifconfig)\n\n" | msmtp -v "rafael_henriqu@yahoo.com.br"

Esse script é só de uma linha em Não confundam

Usei o echo -e pra escrever a mensagem:

  From: EU GMAIL <rafaelhenriqu@gmail.com>
  Subject: :)
  To: EU YAHOO <rafael_henriqu@yahoo.com.br>
  
  $(ifconfig)
  Subject = assunto
  to = destinatário
  from = remetente (pode configura lá no arquivo .msmtprc também)
  mensagem = $(ifconfig) pra me enviar o ip de uma em uma hora!

Usei o $ por que senão o echo escreveria como texto e não como comando ifconfig dando a resposta dessa forma:

  rafael@host$ echo -e  (ifconfig)
  (ifconfig)
  
  rafael@host$ echo -e  $(ifconfig)
  eth0       Encapsulamento do Link: Ethernet  Endereço de HW 00:11:2F:E0:5A:AA
  inet end.: 192.168.0.1  Bcast:192.168.0.255  Masc:255.255.255.0
  UP BROADCAST MULTICAST  MTU:1500  Métrica:1
  pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
  Pacotes TX:0 erros:0 descartados:0 excesso:0 portadora:0
  colisões:0 txqueuelen:1000
  RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
  IRQ:185 Endereço de E/S:0xa000
  
  lo         Encapsulamento do Link: Loopback Local
  inet end.: 127.0.0.1  Masc:255.0.0.0
  endereço inet6: ::1/128 Escopo:Máquina
  UP LOOPBACK RUNNING  MTU:16436  Métrica:1
  pacotes RX:28569 erros:0 descartados:0 excesso:0 quadro:0
  Pacotes TX:28569 erros:0 descartados:0 excesso:0 portadora:0
  colisões:0 txqueuelen:0
  RX bytes:2131846 (2.0 MiB) TX bytes:2131846 (2.0 MiB)
  
  ppp0       Encapsulamento do Link: Protocolo Ponto-a-Ponto
  inet end.: 201.69.62.150  P-a-P:200.205.227.45  Masc:255.255.255.255
  UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1100  Métrica:1
  pacotes RX:59255 erros:0 descartados:0 excesso:0 quadro:0
  Pacotes TX:57405 erros:0 descartados:0 excesso:0 portadora:0
  colisões:0 txqueuelen:3
  RX bytes:56574238 (53.9 MiB) TX bytes:4910467 (4.6 MiB)

/etc/crontab

  */1 * * * *     rafael          /home/rafael/wv.sh
  1    * * * *    rafael          /home/rafael/mandarip.sh

O script wv.sh conecta e reconecta o wvdial de um em um minuto. O script mandarip.sh manda o meu ifconfig de uma em uma hora.

Qualquer dúvida sobre o post: <rafaelhenriqu (a) gmail com>



Veja a relação completa dos artigos de Rafael Henrique da Silva Correia

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script