По прежнему сижу в Ростове в гостинице "Ростов" в командировке. :)
Так как wifi тут черезжопный, решил немного автоматизировать подключение, что бы на надо было постоянно через броузер проходить аутентификацию. Далее пару скриптиков. ;)
Сначала надо сделать сам скриптик:
Ну тут думаю все понятно: проверяем есть ли в запрошенной странице строка про аутентификацию, если есть - значит нас спрашивают, тогда делаем POST с именем пользователя и паролем. Все это сложим в /root/bin/.
Теперь это все не плохо было бы сделать автоматически запускаемым. Для этого делаем скриптик /etc/NetworkManager/dispatcher.d/99rostov-hotel со следующим содержимым:
Все, переконнекчиваем nm к точке и больше не паримся с авторизацией в броузере. ;)
P.S. Жаль не нашел может ли nm передать ssid точки доступа, ну да ладно. Для решения за 10 минут вполне покатит. ;) Этот пост и то писал в 3 раза дольше. :)))
P.P.S. Уже когда запостил, прдумал как получить ssid. :)
Так как wifi тут черезжопный, решил немного автоматизировать подключение, что бы на надо было постоянно через броузер проходить аутентификацию. Далее пару скриптиков. ;)
Сначала надо сделать сам скриптик:
#!/usr/bin/env python
# coding: utf-8
# Created 2010-07-13
import httplib, urllib, re
def login_form():
params = urllib.urlencode({ "Username": "guest",
"redir": "%2F",
"Password": "waterloo"
})
headers = { "Content-type": "application/x-www-form-urlencoded",
"Accept": "text/html, text/plain, text/css, text/sgml, */*;q=0.01",
"Pragma": "no-cache",
"Cache-Control": "no-cache",
"Host": "ya.ru"
}
conn = httplib.HTTPConnection("ya.ru:80")
conn.request("POST", "/loginuser/", params, headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
conn.close()
def check_site():
u = urllib.urlopen("http://ya.ru")
data = u.read()
if re.search("Authentication required", data):
return True
return False
if __name__ == "__main__":
if check_site():
print "Auth form found"
login_form()
else:
print "This is ya.ru"Ну тут думаю все понятно: проверяем есть ли в запрошенной странице строка про аутентификацию, если есть - значит нас спрашивают, тогда делаем POST с именем пользователя и паролем. Все это сложим в /root/bin/.
Теперь это все не плохо было бы сделать автоматически запускаемым. Для этого делаем скриптик /etc/NetworkManager/dispatcher.d/99rostov-hotel со следующим содержимым:
#!/bin/sh -e
# Script to dispatch NetworkManager events
#
# Runs ifupdown scripts when NetworkManager fiddles with interfaces.
if [ -z "$1" ]; then
echo "$0: called with no interface" 1>&2
exit 1;
fi
# Fake ifupdown environment
export IFACE="$1"
export LOGICAL="$1"
export ADDRFAM="NetworkManager"
export METHOD="NetworkManager"
export VERBOSITY="0"
# Run the right scripts
case "$2" in
up)
export MODE="start"
export PHASE="up"
SSID=`nm-tool | grep hotel-rostov`
if [ ! "x$SSID" = "x" ]; then
python /root/bin/login.py
fi
exit 0
;;
*)
echo "$0: called with unknown action \`$2'" 1>&2
exit 1
;;
esac
Все, переконнекчиваем nm к точке и больше не паримся с авторизацией в броузере. ;)
P.S. Жаль не нашел может ли nm передать ssid точки доступа, ну да ладно. Для решения за 10 минут вполне покатит. ;) Этот пост и то писал в 3 раза дольше. :)))
P.P.S. Уже когда запостил, прдумал как получить ssid. :)
Комментариев нет:
Отправить комментарий