По прежнему сижу в Ростове в гостинице "Ростов" в командировке. :)
Так как 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. :)
Комментариев нет:
Отправить комментарий