Claro 3g Sony Ericsson md300 script conexao
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
se não funcionar para você, sinto muito :).
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
se não funcionar para você, sinto muito :).
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
se não funcionar para você, sinto muito :).
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
se não funcionar para você, sinto muito :).
#!/bin/bash
#
#
#
# claro-3g MD300
#
# Este script foi testado com o modem MD300 Sony Ericsson
#
# Por Daniel Roque
# 2006roque@gmail.com
#
# Atenção!
#
# Use o escript por sua conta e risco
# este script não vem com nenhuma garantia
#
#
#
REDEINT='192.168.0.0/24'
# Para tentar outros modens utilize o lsusb e descubtra o devid do mesmo e substitua na linha abaixo
DEVID="0fce:d0cf"
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 não encontrado, instale-o (debian -> 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 não encontrado, instale-o (debian -> apt-get install udev)'
cmd='exit 3'
fi
$cmd
}
install(){
quem=`whoami`
checkdep;
if [ "$quem" != 'root' ];
then
echo "claro-3g -->Você 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'
for i in `echo $num`
do
cd /etc/rc$i.d/
ln -s ../init.d/claro-3g S99claro-3g 2>/dev/null
done
echo 'claro-3g -->Utilize /etc/init.d/claro-3g start, ou conecte o modem e reinicie o pc'
}
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'
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
/etc/init.d/udev restart
fi
}
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 não 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" == 5 ];
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 5."
echo 'claro-3g -->Tentando conectar em 15 segundos'
sleep 15
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
/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
ES-PE-TA-[*****]-LAR!
Parabéns!
O script está consistente e funcionou de primeira.