Claro 3g Sony Ericsson md300 script conexao - Revisado
Criei o script abaixo e utilizo no debian para conectar o modem usb Sony Ericsson MD300 da CLARO.
Ele só funciona nos kernels que suporta o udev, creio que do 2.6.18 e acima (se não me engano).
Para conectar ou testar, utilize a opção
./claro-3g start
Caso queira que o script tente conectar no boot caso encontre o modem, utilize a opção
./claro-3g install
Ele só funciona nos kernels que suporta o udev, creio que do 2.6.18 e acima (se não me engano).
Para conectar ou testar, utilize a opção
./claro-3g start
Caso queira que o script tente conectar no boot caso encontre o modem, utilize a opção
./claro-3g install
Descrição
Criei o script abaixo e utilizo no debian para conectar o modem usb Sony Ericsson MD300 da CLARO.
Ele só funciona nos kernels que suporta o udev, creio que do 2.6.18 e acima (se não me engano).
Para conectar ou testar, utilize a opção
./claro-3g start
Caso queira que o script tente conectar no boot caso encontre o modem, utilize a opção
./claro-3g install
Ele só funciona nos kernels que suporta o udev, creio que do 2.6.18 e acima (se não me engano).
Para conectar ou testar, utilize a opção
./claro-3g start
Caso queira que o script tente conectar no boot caso encontre o modem, utilize a opção
./claro-3g install
#!/bin/bash
#
# 8-2-2009
#
# claro-3g MD300
#
# Este script foi testado com o modem MD300 Sony Ericsson
#
# Por Daniel Roque
# 2006roque@gmail.com
#
# Atencao!
#
# Use o escript por sua conta e risco
# este script nao vem com nenhuma garantia
#
#
#
########## VARIAVEIS #############
REDEINT='192.168.0.0/24' # rede interna, coloque o valor correto caso queira rotear conexao
TENTATIVAS='5' # numero de tentativas antes de desistir, nao deixe em branco
DEVID="0fce:d0cf" # Para tentar outros modens utilize o lsusb e descubtra o devid do mesmo e substitua o valor
ESPERA="15" # temo que se deve esperar pelo handshake com o servidor, antes de testar se conectou
##################################
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/root/bin/:/bin/:/sbin/:/usr/bin/:/usr/sbin/:/usr/X11R6/bin/:/usr/games/:/usr/local/bin/:/usr/local/sbin/"
checkdep(){
rslt=`find /usr/bin/ /sbin/ /bin/ /usr/local/bin/ -name wvdial`
if [ "$rslt" == '' ];
then
echo '
claro-3g --> ERRO: wvdial nao encontrado, instale-o
([debian|ubuntu|big|famelix] -> apt-get install wvdial)'
cmd='exit 3'
fi
rslt=`find /usr/bin/ /sbin/ /bin/ /usr/local/bin/ -name udevd`
if [ "$rslt" == '' ];
then
echo '
claro-3g --> ERRO: udev nao encontrado, instale-o
([debian|ubuntu|big|famelix] -> apt-get install udev)'
cmd='exit 3'
fi
rslt=`find /usr/bin/ /sbin/ /bin/ /usr/local/bin/ -name udevd`
if [ "$rslt" == '' ];
then
echo '
claro-3g --> ERRO: udev nao encontrado, instale-o
([debian|ubuntu|big|famelix] -> apt-get install udev)'
cmd='exit 3'
fi
rslt=`find /usr/bin/ /sbin/ /bin/ /usr/local/bin/ -name named`
rslt=`find /usr/bin/ /sbin/ /bin/ /usr/local/bin/ -name dnsmasq`
if [ "$rslt" == '' ];
then
echo '
claro-3g --> AVISO: algumas vezes o dns destes modens demoram muito para responder,
eu aconselhor utilizar um dns em em sua maquina.
([debian|ubuntu|big|famelix] -> apt-get install bind9)
Caso você opte por utilizar um dns em sua maquina, dentro deste script,
remova o # que precede a linha #nameserver 127.0.0.1 e rode o install
novamente.'
fi
$cmd
}
ppp_option(){
sed '{s/\(^.*asyncmap.*\)/#\1/
s/\(^.*mru.*\)/#\1/
s/\(^.*refuse-chap.*\)/#\1/ }' -i /etc/ppp/options
}
install(){
quem=`whoami`
echo 'Claro-3g, revisao 2 de 08-02-2009
Por Daniel Roque, 2006roque@gmail.com
Este script vem com nenhuma garantia, utilize-o por sua conta e RISCO!
Deseja continuar (s/n):n'
read resp
resp=`echo $resp|sed 's/[sSyY]/s/g'`
if [ "$resp" != 's' ];
then
echo 'saindo sem fazer nada.'
exit 1
fi
checkdep;
if [ "$quem" != 'root' ];
then
echo "
claro-3g --> Voce precisa dos poderes de root para executar este script"
exit 4
fi
rm /etc/init.d/claro-3g 2>/dev/null
cp claro-3g /etc/init.d/ 2>/dev/null
num='2
3
4
5'
echo "
claro-3g --> Desja criar um link para iniciar automaticamente quando pc e iniciado?(s/n):s"
read resp
resp=`echo $resp|sed 's/[nN]/n/g'`
if [ "$resp" != 'n' ];
then
echo '
claro-3g --> Criando links de inicializacao'
for i in `echo $num`
do
cd /etc/rc$i.d/
echo "/etc/rc$i.d/S99claro-3g"
ln -s ../init.d/claro-3g S99claro-3g 2>/dev/null
done
else
echo '
claro-3g --> Removendo links de inicializacao, caso exista'
for i in `echo $num`
do
echo "/etc/rc$i.d/S99claro-3g"
rm -f /etc/rc$i.d/S99claro-3g 2>/dev/null
done
fi
echo '
claro-3g --> Configurando ppp'
ppp_option;
echo '
claro-3g --> Utilize /etc/init.d/claro-3g start, ou conecte o modem e reinicie o pc
Boa Sorte!'
}
dodns(){
#altere as linhas abaixo caso tenha um dns e dominio local
echo '#domain casa.local
#search casa.local
#nameserver 127.0.0.1
nameserver 200.169.117.22
nameserver 200.169.119.22'>/etc/resolv.conf
}
udevrules(){
if [ ! -e '/etc/udev/rules.d/50-md300modem.rules' ];
then
echo 'claro-3g -->Gerando regras para udev e reiniciando udev'
aspas="'"
echo '#claro-3g script
ACTION!="add", GOTO="3G_End"
BUS=="usb", SYSFS{idProduct}=="d0cf", SYSFS{idVendor}=="0fce", NAME="modem" PROGRAM="/bin/sh -c '"'"'echo 3 > /sys/%p/device/bConfigurationValue'"'"'
LABEL="3G_End"' >/etc/udev/rules.d/50-md300modem.rules
fi
/etc/init.d/hal restart
/etc/init.d/udev restart
}
wvdialconf(){
oldconf=`cat /etc/wvdial.conf|sed 's/^/#/g'`
echo '#claro-3g - nao modifique esta linha
#
# Por Daniel Roque
# 2006roque@gmail.com
#
# Atenção!
#
# Use o escript claro-3g por sua conta e risco
# este script não vem com nenhuma garantia
#
#
[Dialer Defaults]
Modem = /dev/ttyACM0
Baud = 460800
Init1 = ATZ
Init2 = AT+cfun=1
Init3 = AT+CGDCONT=1,"IP","bandalarga.claro.com.br"
Area Code =
Automatic Reconnect = yes
Phone = *99***1#
Username = claro
Password = claro
Ask Password = 0
Dial Command = ATDT
Stupid Mode = 0
Compuserve = 0
Force Address =
Idle Seconds = 300
DialMessage1 =
DialMessage2 =
ISDN = 0
Auto DNS = 1
Modem Type = Analog Modem
New PPPD = yes
########## ABAIXO ESTA O CONTEUDO DO VELHO wvdial.conf
########## delete as linhas acima e remova o primeiro #
########## de cada linha para voltar a conf antiga'"
$oldconf" >/etc/wvdial.conf
}
start(){
echo 'CLARO-3G'
checkdep;
#checando existencia do modem
rslt=`/usr/bin/lsusb |sed -n "/$DEVID/p"`
if [ "$rslt" == '' ];
then
echo 'claro-3g -->Modem nao encontrado!'
exit 2
fi
echo 'claro-3g -->Modem encontrado'
#setando regras para o modem caso utilize outro modem as regras podem mudar
udevrules;
rslt=`cat /etc/wvdial.conf |sed -n '1p'|sed -n '/claro-3g/p'`
#checando conf do wvdial
if [ "$rslt" == '' ];
then
echo 'claro-3g -->configurando o wvdial.conf'
wvdialconf;
fi
#verificando se ja esta conectado
rslt=`/sbin/ifconfig |sed -n '/ppp0/p'`
if [ "$rslt" != '' ];
then
rslt=`ping -c 2 209.85.193.104|sed -n '/[123456789] received/p'`
fi
#tentando por 5 vezes conectar
tries='1'
while [ "$rslt" == '' ] && [ "$tries" -lt $TENTATIVAS ];
do
killall -s KILL wvdial 2>/dev/null
killall -s KILL pppd 2>/dev/null
wvdial 2>/dev/null &
echo "claro-3g -->Tentativa $tries de $TENTATIVAS."
echo "claro-3g -->Tentando conectar em $ESPERA segundos"
sleep $ESPERA
rmdefroute=`route -n|sed -n 's/ //g;s/ //g;s/\(0.0.0.0\)\(.*\)\(0.0.0.0.*\)/route del default gw \2/p'`
$rmdefroute
route add default gw 10.64.64.64
rslt=`ping -c 2 209.85.193.104|sed -n '/[123456789] received/p'`
tries=`expr "$tries" + 1`
done
echo 'claro-3g -->Conectado!'
#rotenado conexao para a rede internar, altere a var REDEINT para o valor local da sua rede
echo "rotenado conexao para a rede $REDEINT, altere a variavel REDEINT dentro do script caso isto nao esteja certo."
/sbin/iptables -t nat -A POSTROUTING -s $REDEINT -j MASQUERADE
echo 1 >/proc/sys/net/ipv4/ip_forward
dodns;
}
stop(){
killall -s KILL wvdial >/dev/null
killall -s KILL pppd >/dev/null
iptables -t nat -D POSTROUTING -s $REDEINT -j MASQUERADE
echo 0 >/proc/sys/net/ipv4/ip_forward
}
case $1 in
start)
start;
;;
stop)
stop;
;;
restart)
stop;start
;;
install)
install;
;;
*)
echo 'use claro-3g (start|stop|restart|install)'
exit 1
;;
esac
exit 0
fabianos80 [at} yahoo *dot& com $dot! br
Grande abraço! ;)