Mit Kommandozeilentools Formular im Internet ausfüllen, abfragen und auswerten?
Hallo, hier muss des öfteren nach ein paar Suchbegriffen im Internet eine ISBN-Nummer abgefragt werden. Gibt es eine Möglichkeit so ein Formular per Kommandozeile auszufüllen, und das Ergebniss auszuwerten? Mit wget kann man ja scheinbar Feldinhalte übergeben, aber wie kann man das Ergebniss direkt in ein grep weiterleiten? Gruss Karl
Karl Sinn wrote at Tuesday, October 04, 2005 11:29 PM
hier muss des öfteren nach ein paar Suchbegriffen im Internet eine ISBN-Nummer abgefragt werden. Gibt es eine Möglichkeit so ein Formular per Kommandozeile auszufüllen, und das Ergebniss auszuwerten?
Zunächst mal muss geklärt werden, ob es sich "wirklich nur" um ein simples HTML-Formular handelt, und auch dabei wird es IMHO nur funktionieren, wenn die GET Methode verwendet wird - hier werden die Feldinhalte im URL-String übergeben. Mit der POST Methode kann ich mir schlecht vorstellen, dass das überhaupt funktioniert.
Mit wget kann man ja scheinbar Feldinhalte übergeben, aber wie kann man das Ergebniss direkt in ein grep weiterleiten?
Ob (und wie) das direkt von wget aus funktioniert, weiss ich nicht, aber es sollte doch kein Problem sein, die empfangene HTML-Datei, die ja lokal abgespeichert wird, dann durch ein grep zu jagen, oder? HTH, Beste Grüße, Markus
Hallo, Am Dienstag, 4. Oktober 2005 23:33 schrieb Markus Heidinger:
Zunächst mal muss geklärt werden, ob es sich "wirklich nur" um ein simples HTML-Formular handelt, und auch dabei wird es IMHO nur funktionieren, wenn die GET Methode verwendet wird - hier werden die Feldinhalte im URL-String übergeben. Mit der POST Methode kann ich mir schlecht vorstellen, dass das überhaupt funktioniert.
So ist das Formular deklariert: <form name=advBook method="get" action="/advanced/book.do"> Kann ich dann einfach durch: wget www.test.de/suche.html?var1=Test1&var2=Test2 die Parameter übergeben?
Mit wget kann man ja scheinbar Feldinhalte übergeben, aber wie kann man das Ergebniss direkt in ein grep weiterleiten?
Ob (und wie) das direkt von wget aus funktioniert, weiss ich nicht, aber es sollte doch kein Problem sein, die empfangene HTML-Datei, die ja lokal abgespeichert wird, dann durch ein grep zu jagen, oder?
Könnte man schon machen, aber gibt es keine direkte Möglichkeit? Kann man nicht Z.B.: dem grep auf irgendeine Art und Weise die URL direkt mitgeben? Gruss Karl
Hallo, Am Wed, 05 Oct 2005, Karl Sinn schrieb:
Am Dienstag, 4. Oktober 2005 23:33 schrieb Markus Heidinger:
Zunächst mal muss geklärt werden, ob es sich "wirklich nur" um ein simples HTML-Formular handelt, und auch dabei wird es IMHO nur funktionieren, wenn die GET Methode verwendet wird - hier werden die Feldinhalte im URL-String übergeben. Mit der POST Methode kann ich mir schlecht vorstellen, dass das überhaupt funktioniert.
So ist das Formular deklariert:
<form name=advBook method="get" action="/advanced/book.do">
Kann ich dann einfach durch:
wget www.test.de/suche.html?var1=Test1&var2=Test2
die Parameter übergeben?
Nein. Die "action" sagt was anderes. GET http://www.test.de//advanced/book.do?var1=Test | grep foo -dnh -- "Considering the number of wheels Microsoft has found reason to invent, one never ceases to be baffled by the minuscule number whose shape even vaguely resembles a circle". -- unknown, but _very_ sharp
Karl Sinn wrote at Wednesday, October 05, 2005 9:18 AM
So ist das Formular deklariert:
<form name=advBook method="get" action="/advanced/book.do">
Kann ich dann einfach durch:
wget www.test.de/suche.html?var1=Test1&var2=Test2
die Parameter übergeben?
Siehe Antwor von David Haller.
Ob (und wie) das direkt von wget aus funktioniert, weiss ich nicht, aber es sollte doch kein Problem sein, die empfangene HTML-Datei, die ja lokal abgespeichert wird, dann durch ein grep zu jagen, oder?
Könnte man schon machen, aber gibt es keine direkte Möglichkeit? Kann man nicht Z.B.: dem grep auf irgendeine Art und Weise die URL direkt mitgeben?
Also das GET von David Haller hab ich auch nirgendwo gefunden, aber ich denke, da werden wir sicher noch aufgeklärt. Andere Idee, gerade in der Manpage von wget gefunden: mit der Option -O speichert wget die empfangene Datei nicht ab sondern schreibt sie nach stdout, das heisst so kannst Du dann auf alle Fälle ein "| grep sonstnochwas" anhängen. HTH Beste Grüße, Markus
Hallo, Am Wed, 05 Oct 2005, Markus Heidinger schrieb:
Also das GET von David Haller hab ich auch nirgendwo gefunden, aber ich denke, da werden wir sicher noch aufgeklärt.
GET ist Teil des LWP-Paketes von Perl. Und schreibt per default auf stdout. Und es (genauer 'lwp-request') laesst sich sehr gut parametrisieren, z.B. kann man Header beim Request setzen und die der Antwort auslesen... GET steckt (bei SuSE 9.1) im perl-libwww-perl-5.76-30 RPM.
Andere Idee, gerade in der Manpage von wget gefunden: mit der Option -O speichert wget die empfangene Datei nicht ab sondern schreibt sie nach stdout, das heisst so kannst Du dann auf alle Fälle ein "| grep sonstnochwas" anhängen.
wget -q -O - URL | grep foo Die Option '-O' erwartet einen Parameter! Und -q damit man die Statusmeldungen von wget nicht per 2>/dev/null wegwerfen muss. -dnh -- This space intentionally left aligned.
Hallo, Am Tue, 04 Oct 2005, Karl Sinn schrieb:
hier muss des öfteren nach ein paar Suchbegriffen im Internet eine ISBN-Nummer abgefragt werden. Gibt es eine Möglichkeit so ein Formular per Kommandozeile auszufüllen, und das Ergebniss auszuwerten?
Mit wget kann man ja scheinbar Feldinhalte übergeben, aber wie kann man das Ergebniss direkt in ein grep weiterleiten?
man GET man POST GET http://..../ | grep blafasel -dnh -- 120: INN 2.x INN 2.x ist wie Fertig-Spaghetti aus der Tüte. Schmeckt lecker und ist im Grunde ganz einfach zuzubereiten. Trotzdem muß man ständig umrühren, damit's nicht anbrennt. (Andreas M. Kirchwitz)
Hallo David, Am Mittwoch, 5. Oktober 2005 09:04 schrieb David Haller:
man GET man POST
GET http://..../ | grep blafasel
Das sieht nach der gesuchten Lösung aus. Ich gehe davon aus, dass Du absichtlich die Grossschreibung verwendet hast. Leider finde ich auf meinem System kein GET. "pin GET" gibt mir als Antwort hunderte von Paketen in denen get im Namen vorkommt, und "man GET" gibt mir infos zu get dabei wird von SCCS-Dateien gesprochen. Wo finde ich GET? Gruss Karl
Hallo, Am Wed, 05 Oct 2005, Karl Sinn schrieb:
Am Mittwoch, 5. Oktober 2005 09:04 schrieb David Haller:
man GET man POST
GET http://..../ | grep blafasel
Das sieht nach der gesuchten Lösung aus. Ich gehe davon aus, dass Du absichtlich die Grossschreibung verwendet hast. Leider finde ich auf meinem System kein GET. "pin GET" gibt mir als Antwort hunderte von Paketen in denen get im Namen vorkommt, und "man GET" gibt mir infos zu get dabei wird von SCCS-Dateien gesprochen.
Wo finde ich GET?
slarty:~# rpm -qf `which GET`
perl-libwww-perl-5.76-30
slarty:~# cat /etc/SuSE-release
SuSE Linux 9.1 (i586)
VERSION = 9.1
Zur Not kann man das auch per CPAN einspielen (das ist dann eben an
RPM vorbei):
====
dh@slarty[3]: ~ (0)$ cpan
cpan> m LWP
Module id = LWP
DESCRIPTION Libwww-perl
CPAN_USERID LWWWP (The libwww-perl mailing list
Hallo Karl, hallo Leute, Am Mittwoch, 5. Oktober 2005 09:31 schrieb Karl Sinn: [...]
Leider finde ich auf meinem System kein GET. "pin GET" gibt mir als Antwort hunderte von Paketen in denen get im Namen vorkommt, und "man GET" gibt mir infos zu get dabei wird von SCCS-Dateien gesprochen.
Wo finde ich GET?
Wie immer: mit pin ;-) Manchmal muss man nur ein paar Tricks kennen und nutzen, dann lässt es sich auch recht bequem nach Dateien mit kurzem Namen suchen. In deinem Beispiel würde ich mit pin bin/GET suchen. Hintergrund: Programme liegen in der Regel in Verzeichnissen namens (s)bin - die Abfrage schränkt also das Suchergebnis schonmal deutlich auf _Programme_ ein, deren Name mit "GET" beginnt. Wenn Du noch gezielter suchen willst - in der ARCHIVES.gz steht hinter den Dateinamen der in einem RPM enthaltenen Dateien nichts mehr weiter hinten in der Zeile [1]. Du kannst also auch mit pin 'bin/GET$' suchen. Wichtig: Damit das $-Zeichen (für "Zeilenende") nicht von der Shell verarbeitet wird, muss man das Ganze quoten. Allgemein gesagt: pin arbeitet, soweit es die ARCHIVES.gz durchsucht, mit RegEx. Man kann also durch Angabe einer gezielten RegEx die Suche passend einschränken. Einfaches Beispiel: pin 'bin/.*foo' findet Programme mit "foo" im Namen. Beliebig komplexere RegExe sind möglich. Gruß Christian Boltz [1] einzige Ausnahme: Symlinks - die werden wie bei ls -l gelistet; das Symlink-Ziel ist in diesem Fall letztes Element der Zeile. --
... und der bildschirm unter kde3 ist sauschnell geworden im vergleich zur 7.3. Upps. Muß ich 'was b'sonderes beachten? Ich dachte eigentlich, daß der Monitor mit seinen 34 Kg nicht so schnell abhaut ... :-) [> Holger Poggel und Michael Nausch in suse-linux]
Hallo Christian, wieder was gelernt, aber: Am Donnerstag, 6. Oktober 2005 02:03 schrieb Christian Boltz:
In deinem Beispiel würde ich mit pin bin/GET suchen. Hintergrund: Programme liegen in der Regel in Verzeichnissen namens (s)bin - die Abfrage schränkt also das Suchergebnis schonmal deutlich auf _Programme_ ein, deren Name mit "GET" beginnt.
Hier bekomme ich wieder viel zu viele Ergebnisse.
Wenn Du noch gezielter suchen willst - in der ARCHIVES.gz steht hinter den Dateinamen der in einem RPM enthaltenen Dateien nichts mehr weiter hinten in der Zeile [1]. Du kannst also auch mit pin 'bin/GET$' suchen. Wichtig: Damit das $-Zeichen (für "Zeilenende") nicht von der Shell verarbeitet wird, muss man das Ganze quoten.
Hier bekomme ich gar kein Ergebnis. Hat diese Suche bei Dir das gewünschte Ergebnis gebracht? Gruss Karl
Hallo Liste, da ja nun bald oder schon jetzt die Version 10 zur Verfügung steht habe ich mal eine Frage. Ist es sinnvoll von 9.3 -> 10.0 zu updaten? Also nicht alles löschen und dann neu installieren (was übrigens bis dato mein Weg war). Bleibt das home Verzeichnis erhalten? Wie sieht es dann aus mit den config Dateien .<irgendwas>, welche im Home Verzeichnis liegen? Kann man das komplett übers Internet machen? Grüße Björn
Hallo, 1. Du kaperst gerade einen Thread der mit deiner Frage nix zu tun hat. 2. Du stellst eine sehr sehr oft gestellte und schwer zu beantwortende Frage. Am 06.10.2005 14:01 schrieb Björn Adelberg:
Ist es sinnvoll von 9.3 -> 10.0 zu updaten?
Das kommt darauf an.
Also nicht alles löschen und dann neu installieren (was übrigens bis dato mein Weg war).
Das kann klappen, muss aber nicht. Es klappt zwar bei vielen, bei anderen geht es aber auch voll in die Hose. Kommt wohl darauf an wieviele Pakete man abseits der Suse-DVD installiert hat.
Bleibt das home Verzeichnis erhalten?
Wenn du die fstab nicht änderst und die Platte nicht formatierst (was du ja wohl tust wenn du nicht neuinstallierst) dann ja.
Wie sieht es dann aus mit den config Dateien .<irgendwas>, welche im Home Verzeichnis liegen?
Das kann klappen, je nachdem wie gross die Sprünge sind. KDE könnte z.B. ein Problem sein.
Kann man das komplett übers Internet machen?
Minimal: Nur die boot.iso runterladen, mit der starten und den Rest per ftp holen. Oder ging das nicht, sondern nur per NFS? OJ -- Fenster putzen? Wenn ich raus schauen will, dann mach ich es auf... (Alexander Kluss in dcsm.misc)
Am Donnerstag, 6. Oktober 2005 14:22 schrieb Johannes Kastl:
Hallo,
1. Du kaperst gerade einen Thread der mit deiner Frage nix zu tun hat. Sorry 2. Du stellst eine sehr sehr oft gestellte und schwer zu beantwortende Frage.
Am 06.10.2005 14:01 schrieb Björn Adelberg:
Ist es sinnvoll von 9.3 -> 10.0 zu updaten?
Das kommt darauf an.
Also nicht alles löschen und dann neu installieren (was übrigens bis dato mein Weg war).
Das kann klappen, muss aber nicht. Es klappt zwar bei vielen, bei anderen geht es aber auch voll in die Hose. Kommt wohl darauf an wieviele Pakete man abseits der Suse-DVD installiert hat.
Bleibt das home Verzeichnis erhalten?
Wenn du die fstab nicht änderst und die Platte nicht formatierst (was du ja wohl tust wenn du nicht neuinstallierst) dann ja.
Wie sieht es dann aus mit den config Dateien .<irgendwas>, welche im Home Verzeichnis liegen?
Das kann klappen, je nachdem wie gross die Sprünge sind. KDE könnte z.B. ein Problem sein.
Kann man das komplett übers Internet machen?
Minimal: Nur die boot.iso runterladen, mit der starten und den Rest per ftp holen. Oder ging das nicht, sondern nur per NFS?
OJ
Am Donnerstag 06 Oktober 2005 14:22 schrieb Johannes Kastl:
Das kann klappen, je nachdem wie gross die Sprünge sind. KDE könnte z.B. ein Problem sein.
Bei SUSE 9.3 auf 10.0 mit Sicherheit nicht, das ist beides KDE 3.4, das eine 3.4(.0), das andere 3.4.2.
Kann man das komplett übers Internet machen?
Minimal: Nur die boot.iso runterladen, mit der starten und den Rest per ftp holen. Oder ging das nicht, sondern nur per NFS?
Per ftp sollte schon gehen, aber derzeit gibts wohl noch keienn Mirror, der alle Pakete drauf hat und selbst wenn, die downloadraten sind bestenfalls als grauenhaft zu bezeichnen. -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de
Am Donnerstag, 6. Oktober 2005 14:01 schrieb Björn Adelberg:
Ist es sinnvoll von 9.3 -> 10.0 zu updaten? Also nicht alles löschen und dann neu installieren (was übrigens bis dato mein Weg war). Bleibt das home Verzeichnis erhalten? Wie sieht es dann aus mit den config Dateien .<irgendwas>, welche im Home Verzeichnis liegen? Kann man das komplett übers Internet machen?
Uber das Internet sollte es funktionieren wenn du über einen Router ins Internet gehst. Es gibt (zumindest für 9.3) ein NetBootIso zum downloaden in dem du dann den ftp-server als installationquelle angeben kannst. Eine direkte Einwahl ins internet z. B. über DSL wird zumindest bis 9.3 nicht unterstützt. Wenn dein /home nicht auf einer anderen Partiton liegt, solltest du bei der Installation nicht angeben, das / Formatirt wird. Bei einem Update sollte es erhalten bleiben. Auch nicht neu Partitoinieren. Wie immer gilt auch hier: Brauchbares Backup anlege (von /home und ev. die Configs) bevor man(n) am System rumspielt. Vor allem testen, ob es Fuktioniert. MFG Markus
Hallo Björn, hallo Leute, Am Donnerstag, 6. Oktober 2005 14:01 schrieb Björn Adelberg:
Ist es sinnvoll von 9.3 -> 10.0 zu updaten? Also nicht alles löschen und dann neu installieren (was übrigens bis dato mein Weg war).
Ich mache schon seit 7.0 immer nur Updates [1] und habe dabei noch keine schlechten Erfahrungen gemacht. Klar, Du wirst einige Dateien *.rpmnew oder *.rpmorig in /etc vorfinden, die Du dann manuell durchgehen musst. Das ist aber immer noch deutlich weniger Arbeit als die komplette Neukonfiguration des Systems. (Hint: diff und patch leisten wertvolle Dienste ;-) Insbesondere bei der direkten Folgeversion erwarte ich keine nennenswerten Updateprobleme.
Bleibt das home Verzeichnis erhalten?
Wenn Du es nicht absichtlich löscht, ja. Ein Backup hat aber noch keinem geschadet ;-)
Wie sieht es dann aus mit den config Dateien .<irgendwas>, welche im Home Verzeichnis liegen?
Die haben mir noch nie Ärger gemacht. Die Programme, die ein neues Format für Configdateien verwenden, konvertieren die bestehende Config in vielen Fällen (z. B. KDE). In Einzelfällen wird die alte Config ignoriert und Du musst das entsprechende Programm neu konfigurieren - das ist aber eher selten.
Kann man das komplett übers Internet machen?
Das Brennen boot.iso (oder der kompletten ersten CD) und Booten davon ist IMHO empfehlenswert. Alternativ geht die Lösung über den Eintrag in grub/lilo, wie ich sie vor kurzem (als Zitat) gepostet habe. Dafür und für die Installation per boot.iso brauchst Du aber einen Router o. ä., das Installationssystem selbst kann sich AFAIK nicht ins Internet einwählen. Gruß Christian Boltz [1] auf meiner alten Workstation, jetzt Server: fast alle Versionen von 7.0 bis 9.1; auf dem Laptop alle Versionen seit 9.2 (einschließlich 10.0 beta und demnächst 10.0 final). -- Einen "RL'schen Aufkleber" mit dem Hinweis "Werbung einwerfen verboten" irgendwo in Usenet zu posten, hat rechtlich die gleiche Wirkung wie im fahlen Mondenschein unter 1.000jährigen Eichen nackt einen Ausdruckstanz gegen Spam aufzuführen... [Joerg Heidrich in d.a.n-a.m]
Hallo Karl, hallo Leute, Am Donnerstag, 6. Oktober 2005 13:24 schrieb Karl Sinn:
wieder was gelernt, aber:
Am Donnerstag, 6. Oktober 2005 02:03 schrieb Christian Boltz:
In deinem Beispiel würde ich mit pin bin/GET suchen. [...]
Hier bekomme ich wieder viel zu viele Ergebnisse.
Klar, aber _deutlich_ weniger als bei der Suche nach "GET" (rund 140 Zeilen gegenüber 21000). Gefunden werden mit dieser Variante alle Programme, deren Namen mit "GET" anfängt.
Wenn Du noch gezielter suchen willst - [...] Du kannst also auch mit pin 'bin/GET$' suchen. [...]
Hier bekomme ich gar kein Ergebnis.
Hat diese Suche bei Dir das gewünschte Ergebnis gebracht?
Es kommt auf die SUSE-Version an. Wenn ich die ARCHIVES.gz der 9.2 (und älter) durchsuche, kommt das gewünschte Ergebnis. Bei der 9.3 scheint GET nicht dabei zu sein, daher wird es verständlicherweise auch von pin nicht gefunden. Gruß Christian Boltz -- Windows ist übrigens nicht Scheiße weils ein 'GUI-OS' ist - was auch immer das genau sein mag - sondern weils, nun ja, eben einfach Scheiße ist (oft jedenfalls). [Phillip Richdale in suse-linux]
participants (8)
-
Björn Adelberg
-
Christian Boltz
-
David Haller
-
Johannes Kastl
-
Karl Sinn
-
Manfred Tremmel
-
Markus Heidinger
-
Markus Wunder