Как стать автором
Поиск
Написать публикацию
Обновить

gprs-internet поключение в fedora 10 одним скриптом

плюсы gprs описывать не стоит, как и минусы они всем известны.
В моем случае связь между телом eeepc и телом телефона nokia осуществляется через bt.
«Немного дистро-зависимых» неудобств

Сразу стоит отметить уже решеную проблему «echo 1 > /sys/class/rfkill/rfkill1/» по крайней мере месяца 4 назад в rawhide злополучный eee-bluetooth killswitch умел изменять состоние

NetworkManager во многом удобен, но в последних редакциях его проще отключить т.к. пустой файл resolv.conf как результат работы не редкость. Для билайна DNS серверы следующие:

host -a beeline.ru |grep gprs
beeline.ru. 1852 IN NS ns1.beelinegprs.ru.
beeline.ru. 1852 IN NS ns2.beelinegprs.ru.
beeline.ru. 1852 IN NS ns1.beelinegprs.ru.
beeline.ru. 1852 IN NS ns2.beelinegprs.ru.
ns1.beelinegprs.ru. 85359 IN A 217.118.66.243
ns2.beelinegprs.ru. 78379 IN A 217.118.66.244


Приводим /etc/resolv.conf к виду
cat /etc/resolv.conf
nameserver 217.118.66.243
nameserver 217.118.66.244

Создаем/изменяем конфиги:

#cat /etc/bluetooth/hcid.conf
options {
autoinit yes;
security user;
pairing multi;
passkey «userpas»; #
}
device {
name «username»; #
class 0x3e0100;
pkt_type DH1,DM1,HV1;
iscan enable; pscan enable;
lm accept;
lp rswitch,hold,sniff,park;
}

#cat /etc/bluetooth/rfcomm.conf
rfcomm0 {
bind yes;
device 00:0E:6D:D8:7F:67; #hcitool scan
channel 1; #sdptool search DUN 00:0E:6D:D8:7F:67 | grep Channel
comment «comment»;
}

с сопряжением устройств проблем не возникает.

сам скрипт
#!/bin/bash
#===============================================================================
cols=`tput cols`
cols=`expr $cols - 6`
esc=`echo -en "\033"`
function start_msg () { echo -en " ${esc}[1;32m*${esc}[0m $*"; }
function substart_msg () { echo -en " ${esc}[1;32m>${esc}[0m $*"; }
function warnimg_msg () { echo -e " ${esc}[1;33m*${esc}[0m WARNING: $*"; }
function result_ok () { echo -en "${esc}[${cols}\` ${esc}[1;34m[${esc}[1;32m OK ${esc}[1;34m]${esc}[0m"; }
function result_fail () { echo -en "${esc}[${cols}\` ${esc}[1;34m[${esc}[1;31m !! ${esc}[1;34m]${esc}[0m"; }
function msg_ok () { start_msg $* && result_ok; }
function msg_fail () { echo -en " ${esc}[1;31m*${esc}[0m ERROR: $1" && result_fail; }
#===============================================================================

if [ "$UID" -ne "0" ]
then
msg_fail "Need root privilege use sudo or su -c "
exit $E_WRONG_USER
fi

INET_IFACE="ppp0"
IPTABLES="/sbin/iptables"
LO_IFACE="lo"
LO_IP="127.0.0.1"

#заменить на мак своего телефона
#hcitool scan
MAC_FON="00:0E:6D:D8:7F:67"

# определение ip адресов:
fnGetIPs(){
INET_IP=`ifconfig ppp0 | awk '/inet addr/ { gsub(".*:", "", $2) ; print $2}'`
INET_BROADCAST=`ifconfig ppp0 | awk '/inet addr/ { gsub(".*:", "", $3) ; print $3 }'`
if [ "$INET_IP" = '' ]; then

return 1
else return 0
fi
if [ "$INET_BROADCAST" = '' ]; then

return 2
else return 0
fi
}

fnConn(){
substart_msg "Остановка Network manager"
/etc/init.d/NetworkManager stop
case "$?" in
0) result_ok ;;
*) msg_fail "демон не остановлен" ;;
esac
if [ "`/etc/init.d/bluetooth status`" = "bluetoothd is stopped" ]; then
substart_msg "Запуск сервиса BT"
/etc/init.d/bluetooth start
case "$?" in
0) result_ok ;;
*) msg_fail "Сервис bluetoothd не был запущен" ;;
esac

fi
start_msg "Установка связи с BT устройством"
/usr/bin/rfcomm bind /dev/rfcomm0 $MAC_FON 1
case "$?" in
0) result_ok ;;
*) msg_fail ;;
esac
sleep 3
start_msg "Подключение к провайдеру \n"
/usr/sbin/pppd -d connect '/usr/sbin/chat -v -s TIMEOUT 5 ABORT "NO CARRIER" ABORT ERROR "" '''ATE1''' OK AT+CGDCONT=1,\"IP\",\"internet.beeline.ru\" OK ATD*99***1# CONNECT' /dev/rfcomm0 115200 noauth defaultroute usepeerdns updetach persist novjccomp novj noipdefault nopcomp noaccomp nodeflate nobsdcomp
case "$?" in
0) result_ok ;;
*) msg_fail "подключение не выполнено";exit ;;
esac
substart_msg "Определение IP адресов"
fnGetIPs
case "$?" in
0) result_ok ;;
1) msg_fail " невозможно определить remote local IP address" ;;
2) msg_fail " невозможно определить remote IP address"
esac
substart_msg "Применение политик FireWall загрузка дополнительных модулей:"

#про фаервол отдельный разговор ;)
}

fnDisconnect(){
start_msg "отсоединение\n"
substart_msg "release rfcomm0"
/usr/bin/rfcomm release /dev/rfcomm0 $MAC_FON 1
case "$?" in
0) result_ok ;;
*) msg_fail "rfcomm release" ;;
esac
substart_msg "killing pppd: "
kill `ps -A |grep pppd|awk '{print $1}'`
case "$?" in
0) result_ok ;;
*) msg_fail "процесс не убит" ;;
esac

substart_msg "/etc/init.d/bluetooth stop \n "
/etc/init.d/bluetooth stop
case "$?" in
0) result_ok ;;
*) msg_fail "служба не остановлена" ;;
esac
}

case "$1" in
connect|c|-c|--connect)
fnConn
;;
disconnect|--disconnect|-d|d)
fnDisconnect
;;

*)
echo -e '
-c\t|\t--connect\t\tподключение к билайн
-d\t|\t--disconnect\t\tотключение
'

exit 1 ;;
esac
exit 0
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.