• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

automatisches anmelden für die Internetnutzung

Hier im Studentenwohnheim muss man sich für die Internetnutzung jedesmal mit seinem Benutzernamen und seinem Passwort anmelden was an sich schon etwas nervig ist hinzu kommt noch das man sobald man eine halbe Stunde lang keine Daten sendet / kein Traffic die Verbindung automatisch getrennt wird und man sich wieder neu einloggen muss. Mein Ziel ist es desshalb ein Skript zu basteln was diese nervige Angelegenheit aus dem Weg räumt.

Bei der loginseite handelt es sich um javascript. Ich hatte mal den Quellcode kopiert und für value den Benutzernamen und Kennwort eingesetzt und das ganze als html gespeichert. Wenn ich jetzt die html Datei öffne steht zumindest schon mal der Benutzername und das Kennwort automatisch drin aber der ok button zum abschicken wird nicht automatisch betätigt. Ich würde desshalb gerne wissen wie ich es erreichen kann das auf den ok button automatisch "geklickt" wird und damit die login daten gesendet werden?

Ziel des ganzen ist es das beim booten des PC ein skript ausgeführt wird was mich gleich automatisch am Internet anmeldet und das danach alle halbe stunde mal ein ping signal raushaut damit die Verbindung nicht wieder automatisch getrennt wird (anpingen von Seiten wüsste ich auch aber nicht wie ich das an einen timer koppel).

Vielen Dank
 
Könnte möglich sein:

http://www.linuxquestions.org/questions/programming-9/can-javascript-automatically-populate-login-fields-and-click-button-for-me-291085/
http://bytes.com/topic/javascript/answers/778505-automatically-click-html-button
 

framp

Moderator
Teammitglied
Conax schrieb:
... Mein Ziel ist es desshalb ein Skript zu basteln was diese nervige Angelegenheit aus dem Weg räumt.
Welche Scriptsprache willst Du nehmen/kennst Du? Ich hätte hier ein PythonScript das sich auf einer Webseite anmeldet sofern BasicAuthentification benutzt wird:
Code:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import urllib2
import base64
import json
import urllib

url = 'http://WWW.TARGET.DE'
req = urllib2.Request(url=url)
        
opener = urllib2.build_opener()

def postRequest(username,password):
        opener.addheaders = [('Accept', 'application/xml'),
                             ('Content-Type', 'application/xml'),
                             ('Authorization', 'Basic %s' % base64.encodestring('%s:%s' % (username, password))[:-1]),
                             ('User-Agent', 'Python-urllib/2.6')]

        response = opener.open(req)
        print response.code
        return response.read()

response=postRequest('USERID','PASSWORD')
print response
Das läßt Du beim Systemstart automatisch laufen. Danach per cron alle 15 Mins einen ping in die weite Welt rausschicken. Kann man natürlich auch alles im PythonScript integrieren. Da ist genügend room for improvement ;-)

<edit> Einrückungen korrigiert </edit>
 
Code:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import urllib2
import base64
import json
import urllib

url = 'http://www.beispielwohnheim/login'
req = urllib2.Request(url=url)
       
opener = urllib2.build_opener()

def postRequest(username,password):
        opener.addheaders = [('Accept', 'application/xml'),
                             ('Content-Type', 'application/xml'),
                             ('Authorization', 'Basic %s' % base64.encodestring('%s:%s' % (username, password))[:-1]),
                             ('User-Agent', 'Python-urllib/2.6')]

            response = opener.open(req)
            print response.code
            return response.read()

    response=postRequest("Benutzername","Passwort")
    print response

Also bei mir spuckt er da folgendes aus:

Code:
stefan@linux-0crc:~/Dokumente> python login.py 
  File "login.py", line 20
    response = opener.open(req)
    ^
IndentationError: unexpected indent

Also wenn das in python läuft dann wäre das schon klasse weil dann liese sich das warscheinlich auch später mal auf meinen router (ipfire) leichter einbinden weil die java pakete sind da glaube ich standardmäßig nicht instaliert.
 
Conax schrieb:
Also bei mir spuckt er da folgendes aus:

Code:
stefan@linux-0crc:~/Dokumente> python login.py 
  File "login.py", line 20
    response = opener.open(req)
    ^
IndentationError: unexpected indent
Jaaaa, Du mußt natürlich die Einrückungen genau übernehmen, denn die sind in Python von Bedeutung.
 

framp

Moderator
Teammitglied
Conax schrieb:
Also bei mir spuckt er da folgendes aus:

Code:
stefan@linux-0crc:~/Dokumente> python login.py 
  File "login.py", line 20
    response = opener.open(req)
    ^
IndentationError: unexpected indent

Also wenn das in python läuft dann wäre das schon klasse weil dann liese sich das warscheinlich auch später mal auf meinen router (ipfire) leichter einbinden weil die java pakete sind da glaube ich standardmäßig nicht instaliert.

Sorry, wie abgdf schon schrieb, sind die Einrückungen wichtig. Irgendwie hat sich das verschoben beim Einfügen und ich habe es nicht bemerkt. Ich habe es oben in meinem Post noch einmal korrigiert. Es sollte jetzt funktionieren.
 

framp

Moderator
Teammitglied
Conax und ich haben offline weiter kommuniziert und letztendlich funktioniert jetzt bei ihm folgendes Script:
Code:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import mechanize
import webbrowser

def logonWohnheim(url='',username='',password='',debug=False):
        
    browser = mechanize.Browser()
    browser.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1)')]
    browser.open(url)
     
    '''  <form name="login" action="http://beispielwohnheim/login" method="post" '''
    browser.select_form(name='login')           # select form
    
    '''  <td><input style="width: 120px" name="username" type="text" value=""/></td>
         <td><input style="width: 120px" name="password" type="password"/></td> '''
    
    browser["username"] = username              # insert uid & pwd in form
    browser["password"] = password

    ''' <td><input type="submit" value="OK"></td> '''
    response = browser.submit()                     # submit action 
    
    if (debug):
        print "Response: " + response.geturl()
        print "Header: " + str(response.info())  # headers
        data=response.read()
        oFile = open('~/logonWohnheim.html','w')
        oFile.write(data)
        oFile.close
        webbrowser.open('file://~/logonWohnheim.html')

    browser.close()

# customize following parms
    
logonWohnheim(url='http://beispielwohnheim',username='username',password='password')

Vielleicht hilft es ja noch weiteren :roll:
 

framp

Moderator
Teammitglied
abgdf schrieb:
...(Ich kehre derzeit auch wieder mehr zu Perl zurück. Die Community ist dort freundlicher.)
Zugegebenermassen treibe ich mich weder in der Perl noch Python Community rum - Tante Google liefert erstaunlicherweise immer sehr schnell Antworten auf meine Fragen - aber ich bin überrascht dass für Dich die Community und deren Freundlichkeit entscheidet welche Programmiersprache Du benutzt :???: Meinst Du das ernst? Ist alles jetzt OT (sorry Conax) - wenn Du das weiter Diskutieren willst öffne bitte einen neuen Thread dazu und verlinke hier kurz.
 
Oben