Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Mão na Massa LDAP - 1 Profissional por Máquina
Configure um serviço de Diretórios baseado no servidor OpenLDAP!
Dia 6 de Dezembro - São Paulo
Saiba mais


 

Aprenda inglês em casa

Baixe gratuitamente as duas primeiras aulas

English for Reading and Listening

Receba por email, diariamente, mensagens contendo materiais para leitura e audição, incluindo arquivos no formato MP3 gravados por falantes nativos.

Saiba mais e faça sua inscrição

Você está aqui: Home  → Arquivo Dicas-L

 

Mão na Massa - LDAP

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Publicar em del.icio.us

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

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (718 votos)

Recomende este site
Recomendar este artigo


Versão para impressão


Opinião dos Leitores

mauricio
20 Mai 2008, 03:03
Gostaria de saber se dentro do wvdial existe algum comando que faca com que depois de discar para um numero qualquer (exemplo: numero do celular), ele indique a quantidade de vezes que voce quer chamar daquele numero, ou seja, quantos toques voce que estipular!!

Valeu Galera!!

Quem puder me ajudar! E para meu projrto final!!

Muito obrigado!! Mauricio!!

Ricardo Pereira Barboza
17 Mai 2007, 14:33
@sidnei; @Flávio Gomes

O tópico não disse que deixaria seu ip "online", ele disse q vc receberia (obter) seu ip 24 horas por dia. :)
gustavo
12 Abr 2007, 17:12
não. pois as operadoras ja estão com ótimos planos de internet discada ilimitada
Leonardo
17 Jan 2007, 17:36
A dica para reconectar é interessante. Mas o segundo script é banal, enviar o ip por e-mail?
Meu amigo, você já ouviu falar em NO-IP ?
www.no-ip.com
tem pra windows e linux, resolve o teu problema do ip!
Abraço!
Flávio Gomes
15 Jan 2007, 10:48
> Muito boa dica, mas se conectar 24
> horas com internet discada não vai jogar
> pras alturas sua conta de telefone?


Há planos "pré-pagos" para conexão discada 24hrs.
Marcos Lazarini
15 Jan 2007, 10:47
Também é possível utilizar serviços (gratuitos) como dyndns, no-ip, etc p/ evitar essa de ter que mandar e-mail com o IP.
De quebra, fica bem mais transparente.
sidnei
14 Jan 2007, 22:51
Muito boa dica, mas se conectar 24 horas com internet discada não vai jogar pras alturas sua conta de telefone?
*Nome:
Email:
Me notifique sobre novos comentários nessa pagina
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

Mão na Massa NAGIOS - 1 Profissional por Máquina
Aprenda a Monitorar redes com Eficácia e entenda como aumentar a disponibilidade dos serviços oferecidos pela rede
Dia 6 de Dezembro - São Paulo
Saiba mais

Biblioteca

Redes - Guia Prático
Por Carlos. E. Morimoto

Hardware - o Guia Definitivo
Por Carlos. E. Morimoto

Kurumin 7 - Guia Prático
Por Carlos. E. Morimoto

Linux: Ferramentas Técnicas, 2ed
Por Carlos. E. Morimoto

VPN: Virtual Private Network
Por Lino Sarlo da Silva

MySQL - Guia do Programador
Por André Milani

Sistemas de Banco de Dados
Por Ramez E. Elmasri e Shamkant Navathe

Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto

Extreme Programming
Por Vinicius Manhaes Teles

Google Hacking
Por JOHNNY LONG

Elite da Tropa
Por Luis Eduardo Soares, Andre Batista e Rodrigo Pimentel

Harry Potter e as Relíquias da Morte
Por J.K. Rowling

Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder

PHP para Quem Conhece PHP
Por Juliano Niederauer

O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti

Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson

Redes de Computadores
Por Andrew S. Tanembaum

Marley e Eu: a Vida e o Amor ao Lado do Pior Cão do Mundo
Por John Grogan

Deus, um delírio
Por Richard Dawkins

Java: Como Programar
Por Harvey M. Deitel e Paul J. Deitel

Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho

Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates

1808
Por Laurentino Gomes

UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson