Script paro o Vivo Zap no Linux (atualizado)

As conexões móveis estão se tornando as sucessoras do acesso discado, no sentido de que estão disponíveis em praticamente qualquer lugar, atendendo até mesmo as áreas mais afastadas, onde outras modalidades de conexões não estão disponíveis, além de fazerem a alegria de quem precisa de uma conexão contínua em qualquer lugar para trabalhar ou manter contato com os amigos.

Embora existam muitas arestas a aparar, as conexões via 3G são bem suportadas no Linux, muito embora a configuração nem sempre seja tão simples quando poderia.

Uma avanço importante foi a adição do suporte a modems 3G no NetworkManager, que já está disponível para os usuários do Ubuntu 8.10. Ao plugar um modem compatível, ele pergunta se você quer configurar a conexão e a partir daí a opção da rede 3G fica disponível na lisa de redes, pronta para ser ativada quando necessário. Entretanto, o NetworkManager ainda não oferece suporte a conexões via Bluetooth e nem atende a usuários de todas as distribuições.

Recentemente, recebi alguns equipamentos da Vivo para testes (agradecimentos ao Átila e ao Celso), o que me permitiu elaborar um script de conexão cobrindo as principais formas de conexão usando um plano de dados no Linux. Usando o script você pode conectar usando:

1- Um modem USB (o script inclui regras para o udev e workarounds para ativar modems Huawei E156, Huawei E220/226 e Aiko 82D mesmo em distribuições antigas).
2- Um celular ou smartphone plugado na porta USB, sendo usado como modem. Nos Nokia você precisa apenas ligar o cabo e escolher o modo PC Suite.
2- Conexão via Bluetooth DUN (o modo de compartilhamento usado nos Nokia e na maioria dos outros aparelhos)
3- Conexão via Bluetooth PAN (o modo usado no Windows Mobile)

A conexão via modems USB é relativamente simples, mas as outras duas são um pouco mais complicadas, mas o script ajuda a configurar a conexão fazendo apenas algumas perguntas simples.

Intencionalmente, ele foi escrito usando uma interface o mais simples possível, utilizando apenas menus de texto, de forma a ser o mais compatível possível e rodar em qualquer distribuição sem a necessidade de instalar pacotes adicionais. Para as conexões via USB ele precisa apenas que o wvdial esteja instalado (e que o Kernel em uso ofereça suporte ao modem) e para as conexões via Bluetooth ele precisa também do bluez, que vem pré-instalado em quase todas as distribuições atuais.

Ele inclui também alguns workarounds para problemas comuns (como o ajuste da rota padrão) e mensagens explicativas para erros comuns.

Baixe aqui: https://e.cdn-hardware.com.br/static/media/press/arquivos/vivozap.zip

O arquivo inclui o script “conectar-vivoza” original, juntamente com uma versão com codificação ISO-8859-1 (que você pode utilizar caso os caracteres acentuados estejam aparecendo trocados), o arquivo huawei.out, que é necessário para alguns modems e pacotes do wvdial para distribuições baseadas no Debian, que você pode utilizar caso não tenha outra conexão disponível para instalar via apt.

Para usar o script, valem os passos de sempre:

1- Baixe o arquivo .zip e descompacte-o (no Linux você pode descompactar usando o comando “unzip”, como em “unzip vivozap.zip).

2- Acesse a pasta que será criada e, caso necessário, transforme o script em executável usando o comando “chmod +x”, como em:
$ chmod +x conectar-vivozap

3- Logue-se como root usando o comando “su”.

4- Execute o script, usando o “./conectar-vivozap” ou “sh conectar-vivozap”:
# ./conectar-vivozap

Da primeira vez que é executado, o script faz as perguntas necessárias e gera um arquivo de configuração e a partir da segunda conexão ele conecta diretamente, usando a configuração anteriormente gerada. A idéia central é tornar a conexão o mais simples possível.

Se você está curioso em ver os passos que são executados pelo script, abra o arquivo usando um editor de textos, como o gedit ou o kwrite. O código está bem comentado.

Por enquanto o script funciona apenas quando executado diretamente como root, devido à necessidade de modificar a configuração do pppd e do bluetooth. Apesar do nome, ele pode ser usado também para conexões com outras operadoras, basta substituir a linha “vivomode=”1” por “vivomode=”0” no início do script. O arquivo foi gerado com codificação UTF-8 (que é usada por padrão no Ubuntu e na maioria das outras distribuições atuais. Se estiver vendo caracteres estranhos, baixe a versão alternativa com codificação ISO-8859-1 ou mude a codificação para UTF-8 nas configurações do terminal ou do editor de textos.

Para quem está curioso, aqui vai o “código fonte” do script (o WordPress troca as aspas e alguns outro caracteres por causa do UTF-8, por isso não tente copiar o texto diretamente. Em vez disso, baixe usando o link acima).

#!/bin/sh
# Script para conectar no Vivo Zap usando um smartphone como modem
# Por Carlos E. Morimoto
# http://www.gdhpress.com.br
# https://www.hardware.com.br
# Pode ser alterado e redistribuído livremente dentro dos termos da GPL
# Caracteres estranhos? Mude a codificação do editor para UTF-8# Mude de 1 para 0 para que o script pergunte qual operadora utilizar:
vivomode=”1″# Ajusta o charset
export LANG=pt_BR.UTF-8
export CHARSET=UTF-8
clear
echo ‘Este é um script para conectar no Vivo Zap usando um modem 3G USB ou um
smarthphone que permita o acesso via DUN ou PAN, via Bluetooth. Escrito por
Carlos Morimoto <http://www.gdhpress.com.br>, em parceria com a Vivo.Versões atualizadas podem ser baixadas em:
https://www.hardware.com.br/dicas/script-vivo-zap.html

sleep 1

# Verifica se o script está sendo executado pelo root.
# Por enquanto ele não funciona através do sudo por causa do uso do echo para
# escrever em arquivos de configuração.
if [ “`id -u`” != “0” ]; then
echo ‘Este script precisa ser executado como root. Digite “su -” para se logar
como root e execute o script novamente.
Se você está usando o Ubuntu, defina a senha de root usando o comando
“sudo passwd” e em seguida logue-se usando o “su -“.
Para facilitar, você pode copiar este script para a pasta /usr/local/bin/, de
forma a não precisar mais executá-lo usando o caminho completo ou o ./

read pausa
exit 0
fi

# Funções usadas ao longo do scrip

bpairing()
{

# Fecha o kbluetoothd
killall kbluetoothd.real &>/dev/null

echo “Localizando aparelhos com bluetooth nas proximidades:”
echo ”
hcitool scan
echo ”
echo ‘Digite o endereço do endereço bluetooth do seu aparelho, conforme mostrado
na lista acima (dica: você pode colar usando o botão do meio do mouse).
Se por acaso ele não aparecer, verifique se ele está configurado em modo
“Visível por todos”, ou informe o endereço manualmente. Nos Nokia, você pode
descobrir o endereço do bluetooth digitando *#2820#.
Ex: 00:21:FE:CF:A2:E1′
read blueaddr
echo blueaddr=\”$blueaddr\” >> /home/$USER/.3gconfig

echo ”
echo ‘Testando a conexão com o smartphone’
l2ping -c 3 $blueaddr
echo ”

echo ”
echo ‘Digite o PIN que será usado ao fazer o pairing entre o PC e o smartphone
O PIN é um código numérico de segurança, que você digita nos dois aparelhos ao
fazer o pareamento. É recomendável escolher um código com pelo menos 8 dígitos.
Ex: 2985679833′
read pin
echo “pin=\”$pin\”” >> /home/$USER/.3gconfig

# Descobre o nome da maquina. Se algo der errado, o nome é ‘pc’
nome=`cat /etc/hostname`
if [ -z “$nome” ]; then
nome=”pc”
fi

# Gera a configuração do hcid:
cat <<EOF >/etc/bluetooth/hcid.conf
options {
autoinit yes;
security auto;
pairing multi;
passkey “$pin”;
}
device {
name “$nome”;
class 0x3e0100;
iscan enable; pscan enable;
lm accept;
lp rswitch,hold,sniff,park;
}
EOF

# Coloca o PC em modo discoverable
cd /var/lib/bluetooth/??:??:??:??:??:??
sed -i -e “s/mode connectable/mode discoverable/g” config &>/dev/null
verif=`cat config | grep discoverable`
if [ -z “$verif” ]; then echo “mode discoverable” >> config; fi
cd /

# Reinicia o bluetooth e ativa a porta
/etc/init.d/bluetooth restart
hciconfig hci0 up &>/dev/null
}

bcanal()
{
echo ”
echo ‘Preciso agora saber qual é o canal usado pelo DUN no seu aparelho.
Os aparelhos da Nokia usam o canal 2 e aparelhos de outras marcas usam
geralmente o canal 1. Use o comando “sdptool search DUN” para descobrir qual
canal seu aparelho usa, em caso de dúvidas.

2 : Aparelhos da Nokia
1 : Aparelhos de outros fabricantes

Ex: 2′
read canal
channel=”channel $canal”
echo channel=\”channel $canal\” >> /home/$USER/.3gconfig

# Gera a configuração do rfcomm
echo ‘rfcomm0 {‘ > /etc/bluetooth/rfcomm.conf
echo ‘ bind yes;’ >> /etc/bluetooth/rfcomm.conf
echo ” device $blueaddr;” >> /etc/bluetooth/rfcomm.conf
echo ” $channel;” >> /etc/bluetooth/rfcomm.conf
echo ” comment \”$nome\”;” >> /etc/bluetooth/rfcomm.conf
echo ‘}’ >> /etc/bluetooth/rfcomm.conf
}

bmesg()
{
echo ”
echo ‘Falta agora o mais importante, que é fazer o pareamento entre o PC e
o smartphone. No aparelhos da Nokia com o S60, isso é feito através do
Configuraçs. > Conectiv. > Bluetooth. Use o direcional para a direita para
acessar o menu de dispositivos pareados e acesse o Opções > Novo Disp.
pareado > Mais dispositivos para iniciar a busca. Assim que o PC aparecer
na lista, clique no Parar e clique sobre ele para fazer o pairing. Quando
perguntado, informe o mesmo código PIN que definiu na opção anterior e
responda que sim quando ele perguntar se você deseja que o PC possa
abrir conexões automaticamente.
Obs: Se você está usando o Ubuntu, faça o pairing usando o applet Bluetooth
ao lado do relógio, clicando no Configurar novo dispositivo.
Se você já fez o pairig anteriormente, não é necessário fazê-lo de novo.

Depois de feito o pareamento, pressione Enter para continuar.’
read pausa
}

errowvdial()
{
echo ‘Não consegui encontrar o wvdial, que preciso para estabelecer a conexão.
Você pode instalá-lo usando o gerenciador de pacotes, ou diretamente via linha
de comando:

No Ubuntu, Kubuntu, Kurumin, Satux ou outra distribuição derivada do Debian use:
apt-get update
apt-get install wvdial

No Mandriva, use:
urpmi wvdial

No Fedora, use:
yum install wvdial

No OpenSUSE, use:
zypper install wvdial

(se por acaso ele estiver instalado em uma localização fora do padrão, crie
o link /usr/bin/wvdial, apontando para ele)’
}

huaweiout()
{
if [ -e “huawei.out” ]; then
echo ‘
Arquivo huawei.out encontrado. Gostaria de executá-lo para ativar o modem?
(Pressione “s” para executá-lo ou qualquer outra tecla para ignorar

read resposta
if [ “$resposta” = “s” ]; then
./huawei.out
echo “Esperando 15 segundos para que o modem seja ativado…”
sleep 15
jarodei=”1″
fi
fi
}

checaporta()
{

# Checa se o huawei.out está disponível
huaweiout
echo “Detectando o modem USB…”
sleep 1

if [ -e “/dev/ttyACM0” ]; then
echo “Modem encontrado em /dev/ttyACM0”; sleep 2
porta=”/dev/ttyACM0″
echo ‘porta=”/dev/ttyACM0″‘ >> /home/$USER/.3gconfig

elif [ -e “/dev/ttyUSB0” ]; then
echo “Modem encontrado em /dev/ttyUSB0”; sleep 2
porta=”/dev/ttyUSB0″
echo ‘porta=”/dev/ttyUSB0″‘ >> /home/$USER/.3gconfig

elif [ -e “/dev/ttyUSB1” ]; then
echo “Modem encontrado em /dev/ttyUSB1”; sleep 2
porta=”/dev/ttyUSB1″
echo ‘porta=”/dev/ttyUSB1″‘ >> /home/$USER/.3gconfig

elif [ -e “/dev/ttyUSB2” ]; then
echo “Modem encontrado em /dev/ttyUSB2”; sleep 2
porta=”/dev/ttyUSB2″
echo ‘porta=”/dev/ttyUSB2″‘ >> /home/$USER/.3gconfig

elif [ -e “/dev/usb/ttyUSB0” ]; then
echo “Modem encontrado em /dev/usb/ttyUSB0”; sleep 2
porta=”/dev/usb/ttyUSB0″
echo ‘porta=”/dev/usb/ttyUSB0″‘ >> /home/$USER/.3gconfig
else
echo ‘Não consegui localizar o modem. No Linux, modems GSM USB (e smartphones
em modo de acesso à web conectados ao PC via USB) são acessados pelo sistema
através da porta /dev/ttyACM0 ou /dev/ttyUSB0 , que é automaticamente criada
ao plugar o modem.

Se você está usando um smartphone, experimente desligá-lo, ligá-lo e conectá-lo
novamente. Se está usando um aparelho da Nokia, certifique-se de que ele está
configurado para se conectar ao PC em modo PC suíte (a configuração vai no
Conectividade > USB). Em alguns aparelhos novos, como o E71 está disponível o
modo “Conect. PC à Internet”, mas ele não funciona no Linux. Use o modo PC
Suíte.

Se você está usando um modem huawei E220 ou E226 em uma distribuição antiga
(com um Kernel anterior ao 2.6.20), você precisa executar o arquivo huawei.out
para ativar o modem antes de executar este script. Veja a dica no:
http://wiki.ubuntu-br.org/TimWeb

Se você está usando o Kurumin 7 (ou outra distribuição baseada no Debian Etch)
pode baixar uma versão pré-compilada do arquivo no:
e.cdn-hardware.com.br/static/media/press/arquivos/k7/huawei.out

Salve o arquivo huawei.out na mesma pasta onde está este script e passarei a
perguntar se quer executá-lo.

Se por acaso seu modem utiliza uma porta diferente, você pode indicá-la aqui,
e deixar que o script tente utilizá-la. Caso contrário pressione Ctrl+C para
sair.

Especifique a porta ou pressione Ctrl+C para sair
Ex: /dev/usb/ttyUSB1′
read porta

if [ -n “$porta” ]; then
echo “Usando $porta”
porta=”/dev/usb/ttyUSB0″
echo ‘porta=”/dev/usb/ttyUSB0″‘ >> /home/$USER/.3gconfig
else
exit 1
fi
fi
}

checarrota()
{
echo ”
echo ‘Muitas distribuições antigas (anteriores a 2008) usam uma versão bugada do
wvdial que não altera a rota padrão depois de conectado, o que faz com que o
sistema continue tentando acessar através da placa de rede ou outra conexão já
existente em vez de acessar usando a conexão 3G, o que causa o famoso “conecta
mas não navega”. Nesses casos, é necessário rodar o comando “route del default”
antes de estabelecer a conexão. Se este é o seu caso, responda “s” e farei isso
para você.’
echo ”
echo ‘Remover a rota padrão antes de conectar? (s/n)’
read resposta

if [ “$resposta” = “s” ]; then
delroute=”1″; echo ‘delroute=”1″‘ >> /home/$USER/.3gconfig
else
delroute=”0″; echo ‘delroute=”0″‘ >> /home/$USER/.3gconfig
fi
}

configoperadora()
{

if [ “$vivomode” = “1” ]; then

# Configurações da Operadora
user=”vivo”
pass=”vivo”
telc=”*99#”
APN=”zap.vivo.com.br”

else

echo ‘
Qual operadora você está usando?

1) Vivo
2) Claro
3) TIM
4) Oi
5) Giro
6) Outra (configuração manual)

(responda 1, 2, 3, 4, 5 ou 6)

read operadora
case $operadora in
1)
user=”vivo”
pass=”vivo”
telc=”*99#”
APN=”zap.vivo.com.br”
;;
2)
user=”claro”
pass=”claro”
telc=”*99***1#”
APN=”bandalarga.claro.com.br”
;;
3)
user=”tim”
pass=”tim”
telc=”*99#”
APN=”tim.br”
;;
4)
user=”oi”
pass=”oi”
telc=”*99***1#”
APN=”gprs.oi.com.br”
;;
5)
user=”giro@giro.click21.com.br”
pass=”giro”
telc=”#777″
APN=”giro.click21.com.br”
;;
6)
echo ‘
Qual o telefone de discagem?
ex: *99#

read telc
echo ‘
Qual a APN da operadora?
ex: operadora.com.br

read APN
echo ‘
Qual o login de usuário?
ex: operadora

read user
echo ‘
Qual a senha?
ex: operadora

read pass
;;
*)
echo ‘Ops, você digitou uma opção inválida. Este script ainda não foi
devidamente instruído a lidar com condições inesperadas, por isso será fechado.’
exit 1
;;
esac

echo “user=\”$user\”” >> /home/$USER/.3gconfig
echo “pass=\”$pass\”” >> /home/$USER/.3gconfig
echo “telc=\”$telc\”” >> /home/$USER/.3gconfig
echo “APN=\”$APN\”” >> /home/$USER/.3gconfig

fi

}

reconfigurar()
{

addudevrules

echo ‘
Este script permite conectar usando um modem 3G ligado na porta USB (ou um
smartphone ligado na porta USB) ou um smartphone ligado via Bluetooth.

Para os modems USB, você provavelmente não precisará fazer nada, já que o script
é capaz de detectar o modem sozinho. Para conectar via Bluetooth, é necessário
fazer o pareamento entre o PC e o smartphone, o que faremos no passo seguinte.

O script usa o wvdial para fazer a conexão, por isso é necessário que ele
esteja instalado. Você pode instalá-lo usando o gerenciador de pacotes, basta
fazer uma busca por “wvdial.”‘
echo ”
echo ‘Qual tipo de aparelho você está usado?’
echo ”
echo ‘1 Modem USB, ou um smartphone ligado na porta USB’
echo ‘2 Smartphone com o Windows Mobile 6, com o Compartilhamento de Internet’
echo ‘3 Smartphone da Nokia ou outro com suporte a DUN via Bluetooth’
echo ”
echo “(responda 1, 2 ou 3)”
read resposta
echo ”

# Só por via das dúvidas…
mkdir /home/$USER/ &>/dev/null

if [ “$resposta” = “1” ]; then
conn=”usb”
echo ‘conn=”usb”‘ > /home/$USER/.3gconfig
elif [ “$resposta” = “2” ]; then
conn=”pan”
echo ‘conn=”pan”‘ > /home/$USER/.3gconfig
elif [ “$resposta” = “3” ]; then
conn=”dun”
echo ‘conn=”dun”‘ > /home/$USER/.3gconfig
else
echo ‘Ops, você digitou uma opção inválida. Este script ainda não foi
devidamente instruído a lidar com condições inesperadas, por isso será fechado.’
exit 1
fi

configoperadora

# Função para conexão USB
if [ “$conn” = “usb” ]; then
echo ‘Certifique-se de que seu modem GSM ou smartphone está ligado à porta USB.’
sleep 2
checaporta
checarrota
ativafirewall
# Esta opção é ncessária para que o sistema consiga obter o DNS ao conectar
opt1=`cat /etc/ppp/options | sed -e ‘/^\#/D’ | grep “ipcp-max-failure 30″`
[ -z “$opt1” ] && echo ‘ipcp-max-failure 30’ >> /etc/ppp/options
# E sem essas o Aiko 82D, Huawei E156 e outros modelos não conectam
opt2=`cat /etc/ppp/options | sed -e ‘/^\#/D’ | grep “asyncmap 0xa0000″`
[ -z “$opt2” ] && echo ‘asyncmap 0xa0000’ >> /etc/ppp/options
opt3=`cat /etc/ppp/options | sed -e ‘/^\#/D’ | grep “mru 1500″`
[ -z “$opt3” ] && echo ‘mru 1500’ >> /etc/ppp/options
opt4=`cat /etc/ppp/options | sed -e ‘/^\#/D’ | grep “refuse-chap”`
[ -z “$opt4” ] && echo ‘refuse-chap’ >> /etc/ppp/options
fi

# Função para Bluetooth DUN
if [ “$conn” = “dun” ]; then
bpairing
bcanal
bmesg
checarrota
porta=”/dev/rfcomm0″
echo ‘porta=”/dev/rfcomm0″‘ >> /home/$USER/.3gconfig
ativafirewall
fi

# Função para Bluetooth PAN (Windows Mobile)
if [ “$conn” = “pan” ]; then
bpairing
bmesg
# Precisamos remover a rota padrão antes de ativar a conexão, já que não
# usamos o wvdial
delroute=”1″
echo ‘delroute=”1″‘ >> /home/$USER/.3gconfig
fi

# Pergunta sobre o DNS
echo ”
echo “Usar os servidores DNS do provedor? (s/n)”
read resposta
if [ “$resposta” = “n” ]; then
echo ‘Digite o servidor de DNS primário’
echo ‘ex: 208.67.222.222’
read dns1
echo “dns1=$dns1” >> /home/$USER/.3gconfig
echo ”
echo ‘Digite o servidor de DNS secundário’
echo ‘ex: 208.67.220.220’
read dns2
echo “dns2=$dns2” >> /home/$USER/.3gconfig
autodns=”off”
echo ‘autodns=”off”‘ >> /home/$USER/.3gconfig
else
autodns=”on”
echo ‘autodns=”on”‘ >> /home/$USER/.3gconfig
fi
}

ativafirewall()
{
echo ”
echo ‘Ativar o firewall para a conexão da Internet? (s/n)’
read resposta
if [ “$resposta” = “s” ]; then
sifirewall=”on”; echo ‘sifirewall=”on”‘ >> /home/$USER/.3gconfig
else
sifirewall=”off”; echo ‘sifirewall=”off”‘ >> /home/$USER/.3gconfig
fi
}

checafirewall()
{
if [ “$sfirewall” = “on” ]; then
echo “Ativando o firewall…”
sleep 1
echo “iptables -A INPUT -p tcp -i ppp0 –syn -j DROP” >> /etc/ppp/ip-up
echo “iptables -A INPUT -p udp -i ppp0 –dport 1:1024 -j DROP” >> /etc/ppp/ip-up
fi
}

checadns()
{
if [ “$autodns” = “off” ]; then
echo “echo \”nameserver $dns1\” > /etc/resolv.conf” > /etc/ppp/ip-up
echo “echo \”nameserver $dns2\” >> /etc/resolv.conf” >> /etc/ppp/ip-up
else
echo ” > /etc/ppp/ip-up
fi
}

addudevrules()
{
checaaiko=`lsusb | grep 19d2:2000`
if [ -n “$checaaiko” ]; then
echo ”
echo “Modem Aiko 82E detectado, adicionando regras do UDEV…”
sleep 1
echo ‘SUBSYSTEM==”block”, \
ACTION==”add”, \
SYSFS{idVendor}==”19d2″, \
SYSFS{idProduct}==”2000″, \
OPTIONS=”ignore_device”

SUBSYSTEM==”usb”, \
SYSFS{idVendor}==”19d2″, \
SYSFS{idProduct}==”0001″, \
RUN+=”/sbin/modprobe usbserial vendor=0x19d2 product=0x0001″
‘ > /etc/udev/rules.d/99_aiko82e.rules
udevcontrol reload_rules
echo ‘
Desconecte e em seguida reconecte o modem para que ele seja detectado
(pressione Enter para continuar)’
read pausa
echo “Aguardando 15 segundos para que o modem seja ativado…”
sleep 15
fi

checahuawei=`lsusb | grep 12d1:1003`
if [ -n “$checahuawei” ]; then
echo ”
echo “Modem Huawei E156/220/226 detectado, adicionando regras do UDEV…”
sleep 1
echo ‘SUBSYSTEM==”block”, \
ACTION==”add”, \
SYSFS{idVendor}==”12d1″, \
SYSFS{idProduct}==”1003″, \
OPTIONS=”ignore_device”

SUBSYSTEM==”usb”, \
SYSFS{idVendor}==”12d1″, \
SYSFS{idProduct}==”1003″, \
RUN+=”/sbin/modprobe usbserial vendor=0x12d1 product=0x1003″
‘ > /etc/udev/rules.d/99_huawei.rules
udevcontrol reload_rules
fi

}

# Início do script

# Verifica o arquivo de configuração e decide entre usá-lo ou gerar um novo
if [ -e “/home/$USER/.3gconfig” ]; then
echo ”
echo “Configuração encontrada em /home/$USER/.3gconfig:”
echo ‘
Pressione Enter para continuar (e usar a configuração salva) ou
pressione “c” (e depois Enter) se quiser reconfigurar o script.

Pressione Enter para continuar ou c para reconfigurar:

read resposta

if [ “$resposta” = “c” ]; then

# Se respodido “c”, reconfigura
rm -f /home/$USER/.3gconfig
reconfigurar

else

# Senão, carrega a configuração
echo “Carregando configuração em /home/$USER/.3gconfig”
sleep 1
. /home/$USER/.3gconfig

fi

else

# Se não encontra o script, reconfigura
reconfigurar

fi

# Terminada a configuração, a conexão é ativada:

# Deleta a rota padrão caso tenha sido solicitado pelo usuário
if [ “$delroute” = “1” ]; then
echo “Desativando rota padrão (para que seja usada a conexão 3G)”
echo “route del default”
route del default
fi

# Função para conexão USB

if [ “$conn” = “usb” ]; then

# Carrega o módulo do kernel
modprobe usbserial

# Checa se o huawei.out está disponível
if [ “$jarodei” = “1” ]; then
echo ”
else
huaweiout
fi

# Sem isso o ppp não consegue alterar o DNS ao conectar
chmod 666 /etc/resolv.conf

# Substitui o DNS do provedor caso solicitado
checadns

# Ativa o firewall, caso solicitado
checafirewall

echo ‘[Dialer 3g]’ > /etc/wvdial.conf
echo Modem = $porta >> /etc/wvdial.conf
echo Baud = 921600 >> /etc/wvdial.conf
echo DialCommand = ATDT >> /etc/wvdial.conf
echo Check Def Route = on >> /etc/wvdial.conf
echo ‘FlowControl = Hardware(CRTSCTS)’ >> /etc/wvdial.conf
echo Username = $user >> /etc/wvdial.conf
echo Password = $pass >> /etc/wvdial.conf
echo Phone = $telc >> /etc/wvdial.conf
echo Stupid mode = 1 >> /etc/wvdial.conf
echo Auto Reconnect = on >> /etc/wvdial.conf
echo “Auto DNS = $autodns” >> /etc/wvdial.conf
echo Init1 = ATZ >> /etc/wvdial.conf
echo ‘Init2 = ATQ0 V1 E1 S0=0 &C1 &D2’ >> /etc/wvdial.conf
echo Init3 = AT+CGDCONT=1,\”IP\”,\”$APN\” >> /etc/wvdial.conf
echo ISDN = 0 >> /etc/wvdial.conf
echo Modem Type = Analog Modem >> /etc/wvdial.conf

if [ -e “/usr/bin/wvdial” ]; then

echo ‘discando…

Pressione Ctrl+C para encerrar a conexão.

wvdial 3g’
sleep 1
wvdial 3g

# Caso tenha deletado a rota padrão no início do script, recarrega a
# configuracao da rede, restaurando a rota padrao
if [ “$delroute” = “1” ]; then
/etc/init.d/networking restart &>/dev/null
/etc/init.d/NetworkManager restart &>/dev/null
fi
exit 0

else
errowvdial
fi

fi

# Função para Bluetooth DUN

if [ “$conn” = “dun” ]; then

# Fecha o kbluetoothd
killall kbluetoothd.real &>/dev/null

# Reinicia o bluetooth e ativa a porta
/etc/init.d/bluetooth restart
hciconfig hci0 up

echo “Gerando configuracao do wvdial…”

sed -i -e “/lcp-echo-interval 30/D” /etc/ppp/options
sed -i -e “/lcp-echo-failure 4/D” /etc/ppp/options

# Sem isso o ppp não consegue alterar o DNS ao conectar
chmod 666 /etc/resolv.conf

# Substitui o DNS do provedor caso solicitado
checadns

# Ativa o firewall, caso solicitado
checafirewall

echo ‘[Dialer 3g]’ > /etc/wvdial.conf
echo Modem = $porta >> /etc/wvdial.conf
echo Baud = 921600 >> /etc/wvdial.conf
echo DialCommand = ATDT >> /etc/wvdial.conf
echo Check Def Route = on >> /etc/wvdial.conf
echo ‘FlowControl = Hardware(CRTSCTS)’ >> /etc/wvdial.conf
echo Username = $user >> /etc/wvdial.conf
echo Password = $pass >> /etc/wvdial.conf
echo Phone = $telc >> /etc/wvdial.conf
echo Stupid mode = 1 >> /etc/wvdial.conf
echo Auto Reconnect = on >> /etc/wvdial.conf
echo “Auto DNS = $autodns” >> /etc/wvdial.conf
echo Init1 = ATZ >> /etc/wvdial.conf
echo ‘Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0’ >> /etc/wvdial.conf
echo Init5 = AT+CGDCONT=1,\”IP\”,\”$APN\”,\”\”,0,0 >> /etc/wvdial.conf
echo ISDN = 0 >> /etc/wvdial.conf
echo Modem Type = Analog Modem >> /etc/wvdial.conf

if [ -e “/usr/bin/wvdial” ]; then

echo ‘discando…

Pressione Ctrl+C para encerrar a conexao

Se algo der errado durante a discagem, experimente reiniciar o smartphone
e tentar de novo. Nos Nokia, é muito comum que o subsistema bluetooth fique
travado, impedindo que você se conecte, o que é rapidamente resolvido ao
desligar e ligar novamente.

wvdial 3g’
sleep 1
wvdial 3g

# Caso tenha deletado a rota padrão no início do script, recarrega a
# configuracao da rede, restaurando a rota padrao
if [ “$delroute” = “1” ]; then
/etc/init.d/networking restart &>/dev/null
/etc/init.d/NetworkManager restart &>/dev/null
fi
exit 0

else

errowvdial

fi

fi

# Função para Bluetooth PAN (Windows Mobile)

if [ “$conn” = “pan” ]; then

echo ‘Ative o compartilhamento no smartphone, clicando no “Iniciar > Programas >
Compartilhamento de Internet”. Use a opção “PAN do Bluetooth” como conexão para
o PC. Ao clicar no “Conectar” o aparelho passa para o modo NAP, onde ele fica
disponível para conexão do PC. Em caso de erros, verifique se o pairing foi
feito corretamente e se o PC foi definido como dispositivo autorizado nas
configurações do Bluetooth.

Pressione Enter para ativar a conexão.

read pausa

echo “Tentando se conectar a $blueaddr…”
echo ‘Da primeira vez que a conexão é feita, o smartphone exibe uma mensagem
perguntando se deve aceitar conexões vindas do PC.

echo “pand -n –role PANU –connect $blueaddr”
pand -n –role PANU –connect $blueaddr
sleep 1
echo “dhclient bnep0”
dhclient bnep0
echo ”
ifconfig bnep0

echo “(pressione Enter para continuar)”
read pausa

echo ‘Se tudo deu certo, a rede bluetooth foi estabelecida e seu PC recebeu
um endereço na faixa 192.168.0.x, com o smartphone compartilhando a conexão
e ficando disponível através do endereço 192.168.0.1 (que é usado pelo PC
como gateway e como DNS), de forma similar ao que temos ao compartilhar a
conexão usando o ICS do Windows.

Para fechar a conexão posteriormente, use (como root):

pand -K

Para listar as conexões ativas (em caso de dúvidas sobre se a conexão está
ativada ou não) use:

pand -l

echo “(pressione Enter para sair do script)”
read pausa
exit 0

fi

exit 0

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X