Frag zu wget --spider

.:L

0
Hallo HaBo,

zum Neustart meines Router habe ich mir scripte erstellt, die auch in Daemons genutzt werden sollen.

Zum Neustart verwendet ich
Code:
wget -q --spider [I]url[/I]

Durch --spider sollten doch eigentlich keine Daten heruntergeladen werden, oder?
When invoked with this option, Wget will behave as a Web spider,
which means that it will not download the pages, just check that
they are there. For example, you can use Wget to check your
bookmarks:

Nach jedem Ausführen des Befehl habe ich jedoch die HTML-Datei... Was mache ich falsch?

Achja, noch eine Kleinigkeit am Rande: Ich habe mir für diverse Scripte Aliase hinterlegt.
Bsp.:
Code:
 alias RR='sh rr-script'

Nach einiger Zeit sind die Aliase verschwunden, ohne das ich diese entfernen wollte (unalias)... Jemand eine Idee wie so etwas passiert?

Gruß
 
Zu „spider“:

Code:
~ % wget --spider http://www.thehappy.de/index.html
Spider-Modus eingeschaltet.  Prüfe ob die Datei auf dem Server existiert.
--2010-12-31 13:44:31--  http://www.thehappy.de/index.html
Auflösen des Hostnamen www.thehappy.de... 88.198.49.239
Verbindungsaufbau zu www.thehappy.de|88.198.49.239|:80... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 3425 (3,3K) [text/html]
Datei auf dem Server existiert und könnte weitere Links enthalten,
aber Rekursion ist abgeschaltet -- kein Download.
~ % ls index.html
ls: Zugriff auf index.html nicht möglich: Datei oder Verzeichnis nicht gefunden

Irgendwas machst du falsch ;)

Zu den Aliasen kann ich nur vermuten, daß du zwischenzeitlich das Terminal und/oder die Shell neu gestartet hast. Damit werden deine Environementvariablen natürlich neu generiert (~/.bashrc oder andere...).
 
hmmmmm seltsam.

Scheint an der Seite des Routers zu liegen. Auf beliebigen anderen Seiten bekomme ich keinen Download :/

Naja, dann löschen die die Dateien per Script :>

Zum alias:
Ja, ich habe die Console zwischendurch neu gestartet. Werden die Aliase dann jedes mal gelöscht?

Wie kann ich das vermeiden, bzw. den Alias langfristig anlegen?
 
In der Datei, die von deiner Shell beim Starten gesourced wird. Im Falle von Bash wäre das ~/.bashrc (da sollten schon welche drin stehen), für die ZSH wäre das ~/.zshrc.
 
Code:
 wget -O /dev/null http://www.planet-metax.de/
mfg, metax.

edit:
Wenn du nur prüfen willst, ob das Ziel existiert, kannst du auch den Befehl "lwp-request" benutzen, um dir den Statuscode ausgeben zu lassen. lwp-request ist ein Perl-Programm, das die lwp-lib benutzt.
Code:
metax@yuggoth ~ $ lwp-request -ds http://www.planet-metax.de
200 OK
metax@yuggoth ~ $ lwp-request -ds http://www.planet-metax.de/xysdfagads
404 Not Found
 
Zuletzt bearbeitet:
@Metax
Funktioniert wunderbar, danke. An diese Denkweise muss ich mich erst noch gewöhnen :>

@xeno
Funktioniert auch wunderbar, danke.
 
Ich verstehe dir Frage nicht.

Ich bin lokal im Netzwerk, also habe ich eine direkte Ethernetverbindung zu meinem Router. Sollte das aber mal nicht der Fall sein, habe ich per DynDs eine Weiterleitung über eine Domain.

EDIT:// Meinst du mit Verbindung den Login?
 
Zuletzt bearbeitet:
Mein Router besitzt wie jeder handelsüblicher Router ein Webinterface für Einstellungen.
Die Einstellungen möchte ich ohne die Nutzung des Webinterfaces nutzen.
Ich starte öfters den Router neu um eine neue IP Adresse zu erhalten.
Daher ist es für mich sehr umständlich mich immer wieder im UI anzumelden.

UI ist sehr langsam dann sind dort noch die Wartezeiten von 60 Sekunden.

Diese möchte ich umgehen indem in zb per ssh eine Verbindung zum Router aufbauen kann, da aber kein ssh server auf dem Router installiert ist, fällt mir keine andere Alternative ein.
 
OK, jetzt verstehen wir uns :>

Ich hatte exakt das selbe Problem.

Zu SSH:
Mein Router unterstützt kein SSH, deswegen kann ich dir da nicht weiterhelfen.

Zu Telnet:
Hat mir persönlich nicht geholfen. Alles was ich per Telnet kann (und auch nur wenn man per get-anfrage todo=DebugMode aktiviert) ist ein DIR oder DELETE. Scripte ausführen ist da auch nicht wirklich.

Wie schon beschrieben habe ich das ganze über WGET gelöst.
Alles was du im UI machst ist ein get an eine Funktion zu senden, in diesem Fall restart.
Du musst nur rausfinden, wie die URL zu dieser Funktion lautet.

Bei mir ist es zum Beispiel:
Code:
http://user:password@routerip/setup.cgi?todo=disconnect
User steht für deinen Loginnamen, Password für dein Passwort...wow.

Nochmal fürs Verständnis:
Wenn du folgendes im Browser eingibst landest du sofort auf dem Router:
Code:
http://user:password@routerip

per WGET wird eine GET-Anfrage ausgelöst, also Seiten angefordert. In meinem Fall vordere ich die Seite/Funktion zum Neustarten des Routers auf. Damit alles funktioniert werden die Logindaten übergeben und voila, der Router startet neu :>

Wie die URL zum Neustarten deines Routers lautet kannst du per Netzwerksniffer rausfinden. hab grad vergessen wie das Firefoxaddon heißt :/

EDIT://

Ich weis nicht wie gut du dich auskennst, ich habs grad selbst nochmal bei mir probiert.

Was brauchst du?
- Einen Browser
- Wireshark oder Wahlweise was anderes. Ich kann gut mit WS

Vorgehen:
Browser öffnen, UI des Routers anzeigen lassen. Geh schon auf die Site wo der Restartbutton des Routers ist.

Nun öffnest du WS. "Start capture", in das Suchfeld gibst du einfach HTTP als Protokollfilter ein.

Wieder zurück zum Browser und den Knopf drücken. In WS beendet du das Capture.

Das sollte jetzt etwas so aussehen:
**removed
Das grau unterlegte ist die POST-Anfrage. Hier wirds interessant.

Rechtsklick drauf und "Follow TCP-Stream".
**removed
Du siehst, welche Aktion ausgeführt wird.

Das Ergebnis:
Code:
http://user:password@192.168.0.1/todo=reboot&this_file=diag.htm&next_file=diag.htm
 
Zuletzt bearbeitet:
Bedanke mich für den ausführlichen Beitrag.
Genau so bin auch ich schon bereits vorgegangen.

Leider habe ich immer wieder das Problem das wenn ich die Parameter direkt im Browser eingebe, das diese keine Auswirkungen haben.
Sprich die UI wird normal geladen und verlangt von mir eine Passworteingabe.

Nur wenn ich angemeldet bin kann ich durch die Parametereingabe im Browser Einstellungen vornehmen.

Und genau an diesem Problem bin ich seit Wochen.
 
Zuletzt bearbeitet:
Poste mal bitte, wie die POST-Url lautet.

Ansonsten wird dir nur jemand helfen können der entweder den selben Router hat oder sich mal auf deinem System umsehen kann.
 
http://1:PASSWORT@192.168.0.1/web.cgi?controller=Internet&action=StopPppoe&id=0

Sobald ich im Browser den Link aufrufe erhalte ich folgende Meldung:

Sie sind dabei, sich bei der Website "192.168.0.1" mit dem Benutzernamen "1" anzumelden, aber die Website benötigt keine Authentifizierung. Dies könnte ein Versuch sein, Sie zu täuschen.

Soll die Website "192.168.0.1" wirklich aufgerufen werden?

Bestätige ich, gelange ich zum gewohnten Login.
 
Sobald ich im Browser den Link aufrufe erhalte ich folgende Meldung:

Benutzer/Passwort im Link funktioniert nunmal nur, wenn die Passwort-Abfrage über BasicAuth geht...

Wenn es ein normales HTML-Formular ist, wo du deine Daten eingeben musst, dann musst du den entsprechenden POST-Request zum Einloggen nachbauen.

Tipp für PHP: snoopy - eine WebClient-Klasse
http://snoopy.sourceforge.net/

und mit php5-cli kann man dann ja auch die PHP-Scripte per Konsole aufrufen...
 
wget hat ja auch eine user/password-Funktion, wie siehts denn damit aus?

das hat den gleichen Effekt wie user:passwort@ip - es ist einfach eine andere Variante, die Nutzerdaten für ein HTTP BasicAuth mitzuschicken.

Wenn das Login über ein normales HTML-Formular geht, dessen Daten Script-seitig ausgewertet werden und nicht direkt Webserver-seitig, dann MUSS man sich den Login-Vorgang selbst nachbauen, sprich: erst den POST-Request mit Nutzerdaten an das Login-Script absenden und erst danach den GET-Request zum Neustart / Disconnect / whatelse

edit:
habe gerade nochmal die wget-Hilfe durchsucht:
es gibt noch 'ne wget-Option
Code:
       --post-data=STRING     Verwende die POST-Methode, sende dabei die 
                                Zeichenkette STRING als Daten
und es gibt Cookie-Handling:
Code:
       --no-cookies           Cookies nicht verwenden
       --load-cookies=DATEI   Cookies vor der Sitzung aus der DATEI laden
       --save-cookies=DATEI   Cookies nach der Sitzung in der DATEI speichern
       --keep-session-cookies Lade und speichere (nicht-permanente) Session-Cookies.

evtl. könnte man sich damit schon helfen: zuerst die POST-Daten an das Login-Script, --keep-session-cookies verwenden (vorausgesetzt, das Login etc. läuft über ne Session) und dann mit dem zweiten wget-Befehl die eigentlich geplante Aktion ausführen... (oder mit --save-cookies beim ersten Request und --load-cookies beim zweiten Request)

noch ein Tipp: einmal die Aktion per Hand ausführen (einloggen, entsprechende Links klicken, etc) und das ganze mit Firefox-Plugin LiveHTTPHeaders mitschneiden - dann siehst du, was genau an GET und POST Requests an den Router geschickt wird...
 
Hi,

das mit wget sieht mir nach Gefrickel aus. Ich würde dir ein Perl Script mit WWW::Mechanize ans Herz legen. Auf die Art steuere ich einige IP Kameras.

ciao
serow
 
Zurück
Oben