PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Login mit curl-befehl



t23
13-12-2004, 08:37
Servus,
ich will ein ksh-Script schreiben, das überprüft ob der Login auf eine bestimmte Internetseite möglich ist. Wie geht das? Ich habe gelesen dass man dazu den Curl-Befehl benutzen muss. Liefert dieser Befehl auch einen Rückgabewert nach erfolgreichem Login, mit dem ich dann arbeiten kann?

MFG

michael.sprick
13-12-2004, 10:37
Welche Art von Anmeldung denn?
Ein Formularfeld....wie z.B. hier im forum? Oder das berühmte Fensterchen zur Eingabe von username und passwort?

t23
13-12-2004, 11:04
Der Login soll über ein script erfolgen, hier die Syntax:

z.B.:

#!/bin/bash

vok=`curl -s -k name:passwort http://www.gmx.de|grep MailDomain|wc -l`
if [ vok = 1 ]; then
message="`date` - OK - Login erfolgreich"
echo $message
echo $message >> $LogFile
else
message="`date` - ERROR - Login nicht erfolgreich"
echo $message
echo $message >> $LogFile
# NetSend.sh "$message"
fi

So ähnlich soll das wohl aussehen, funktioniert aber irgendwie nicht.
Bekommt man dann, wenn Login erfolgreich oder nicht, einen Rückgabewert?

michael.sprick
13-12-2004, 12:11
Also ich habe mit curl noch nicht sooo viel gemacht, aber so wie in dem Beispiel funzt das sicher nicht.

curl macht ähnlich wie wget einen Request auf den Server und liefert die Daten zurück, die der Server dann sendet. I. d. R. HTML.

Wenn Du eine Authentifizierung z.B. per Apache Auth hast, dann musst Du curl folgendermaßen einsetzen:



curl -ks http://USERNAME:PASSWORT@geschuetzte_domain.de


Die GMX Seite hat allerdings ein Formular bzw. ein eigenes Skript zur Authentifizierung. Im einfachsten Fall übergibst Du die Namen der Formularfelder einfach in der URL

z.B.


curl -sk "http://www.gmx.net/de?feld=wert&feld2=wert"


Aber ehrlichgesagt.... was bringt Dir das? Warum nutzt Du nicht gleich SMTP um Deine Mails abzurufen?

Achja - und was die Rückgabewerte von CURL betrifft, so hilft manchmal ein Blick in man-page ;)

t23
13-12-2004, 12:50
Ich brauch das Script u.a. für eine Abfrage. Ich soll per Script feststellen ob bestimmte Seiten im Internet erreichbar sind, und ob es möglich ist sich auf bestimmte seiten anzumelden. das mit GMX ist nur ein Beispiel.

MFG

michael.sprick
13-12-2004, 14:26
achso...

also generell empfehle ich Dir einfach mal, Dich mit kurz Perl + LWP anzufreunden.

Ansonsten musst Du mehr Info geben.

1. Du musst unterscheiden zwischen Seiten, die eine Anmeldung per Formular oder http_auth realisieren.

2. Jede Seite, bei der Du Dich über ein formular anmelden musst, muss vermutlich anders gehanhabt werden.

3. Manche Seiten unterscheiden, ob sich jemand per GET oder POST authentifizieren will... manchmal ist GET nämlich nicht möglich...

4. Was bedeutet denn "ob bestimmte Seiten im Internet erreichbar sind"?
- es kommt eine Antwort auf einen ping ?
- die gefragte Seite liefert nicht 404 oder 301 oder 500 oder oder oder....

Am Besten ist es, Du schreibst mal ein ganz konkretes Beispiel... dann kann ich Dir erklären, worauf Du achten musst...

t23
14-12-2004, 06:46
Hallo, ich nochmal,

sorry ich kann dir kein konkretes Beispiel nennen, da die Seiten die das Script testen soll, Betriebsintern gehandelt werden. Woran erkennt man den ob man sich per Formular oder http_auth anmelden muss?
Mich jetzt in diese Thematik einzulesen übersteigt meine Zeit zur Realisierung des Scriptes, leider.

MFG

michael.sprick
14-12-2004, 08:23
Das steht im HTTP Header, den Du von der Site zurückbekommst...

Wenn Du bei CURL bleiben willst, dann mach mal an der konsole:

curl -I http://geschüzter_Server.de

Dann findest Du raus, welche Art von http_Auth benutzt wird...Basic, digest, ntlm oder negotiate.

Das dürfte aber das geringere Problem. Interessanter wäre, wie findest Du heraus, wie die Eingabefelder für Username und Passwort heißen, wenn es sich um eine Anmeldung per Formular handelt?
Die musst Du entweder kennen, oder versuchen, sie durch parsen der Seite herauszufinden. Letzteres wär recht wage...

wenn Du Dich nicht in LWP einarbeiten möchtest, empfehle ich Dir dringend mal die MAN-Page von curl zu lesen... da stehen auch jede Menge Beispiele drin.

t23
14-12-2004, 14:01
Danke für die Hinweise, habe mir etwas aus der man zusammengesucht.
Jetzt funzt es.

cya