Так как модем настроен как роутер, совсем неудобно для переключения из инета в местную локалку или наоборот постоянно заходить через веб- или telnet-интерфейс и править имя пользователя PPPoE вручную. Поэтому написал вот такой достаточно простой скриптик для автоматизации этого дела. Для отправки команд через telnet использую замечальнейшую программку expect, собственнно, специально и созданную для автоматизации подобных подключений.
Скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #!/bin/bash
mess='PPP Username ='
modem_ip='192.168.1.1'
password='admin'
node='0'
## получаем имя пользователя
Origname=`expect -c 'spawn telnet '$modem_ip';
expect "Password" {send "'$password'\r"};
expect "MT880" {send "show wan node '$node'\r"};
send "exit\r";expect eof' | grep "$mess"`
## если пусто,то ругаемся и валим
if [ ${#Origname} == 0 ]
then
echo "Error due connecting to modem."
exit
fi
## обрезаем ненужные символы
Origname=${Origname#$mess}
Origname=${Origname:1}
## смотрим какое имя юзера получили и меняем на нужное
if [ "${Origname:0:1}" == "D" ]
then
echo "Now connected to internet."
Newname=${Origname/"D"/"LD"}
else
echo "Now connected to regional network."
Newname=${Origname:1}
fi
## устанавливаем новое имя пользователя
expect -c 'spawn telnet '$modem_ip';expect "Password" {send "'$password'\r"};
expect "MT880";send "set wan node '$node'\r";
send "set wan ppp username '$Newname'\r";send "set wan save\r";
send "exit\r";expect eof'
|
Комментарии