bash: lynx Ausgabe -> Variable

siroques

Registered User
Wie bekomme ich den Inhalt einer Web-Seite via Bash am schlausten in eine Variable?

Ich habe da an:
test=`lynx -dump http://domain.tld/datei.php?var=string` | echo $test

...gedacht. Das funktioniert aber nicht wirklich.
Ziel ist es, mit dem String welcher anschließend in der Variable landet weiter zu arbeiten.
 
Last edited by a moderator:
test=`lynx -dump http://domain.tld/datei.php?var=string` | echo $test
Sollte das ein Boolscher Ausdruck sein? | leitet die Standartausgabe an den nächsten Befehl weiter. Damit die Zeile wie von dir gewünscht funktionert und echo nur im Erfolgsfall ausgeführt wird muß es ein && sein.
 
Auch an dich ein Danke.
Das Script von Firewire2002 war schon ganz ok.

Allerdings habe ich nun ein weiteres Problem:
Code:
pass=$(lynx --dump http://domain.tld/file.php?var=string); passwd USER -p $($pass | tr -d " ");
(tr -d " ") um ein Leerzeichen zu entfernen, welches am Anfang durch die Abfrage eingefügt wird.

Man sieht hier bestimmt schon was ich vorhabe.
Ich erhalte einen String von einer bestimmten Seite und dieser String soll automatisch einem bestimmten FTP-User als Passwort zugeordnet werden.

Nun habe ich aber feststellen müssen, dass passwd gar nicht die Möglichkeit bietet, direkt ein Passwort mit zu übergeben.

Gibt es noch eine andere "humane" Möglichkeit dieses zu ändern?
Da ich in Shell-Scripting noch etwas Laienhaft bin, dachte ich nun zunächst an ein PHP-Script welches dieses übernimmt (Script würde dann von root ausgeführt werden).

Ausgeführt wird das ganze nachher in einem bestimmten Intervall durch einen Cronjob.
 
Auch an dich ein Danke.
Das Script von Firewire2002 war schon ganz ok.
Ich wollte dir nur zeigen das dein erster Ansatz gar nicht so falsch war.
Man sieht hier bestimmt schon was ich vorhabe.
Etwas richtig unsicheres und gefährliches :(
Nun habe ich aber feststellen müssen, dass passwd gar nicht die Möglichkeit bietet, direkt ein Passwort mit zu übergeben.
Theoretisch gäbe es die Möglichkeit das Passwort in die Standarteingabe umzulenken z.B.
Code:
 echo -e $test\\n$test\\n | passwd ftpuser
aber aus Sicherheitsgründen wird beim Programmstart von passwd erst mal der Ziechenpuffer geleert so das das nicht funktionert :(

Sicher das du nicht einfach die Authentifizierung von deinem FTP Server mit einer SQL Abfrage machen willst? Das ist bei den meisten ftp Servern Möglich und die Passwortänderung wäre sofort aktiv ohne auf einen cronjob warten zu müssen und ohne Sachen als root auszuführen...
 
Ich wollte dir nur zeigen das dein erster Ansatz gar nicht so falsch war.
So habe ich es auch interpretiert. :)
Hätte bloß nicht gewusst, wie ich damit nun weiter arbeiten hätte können.

Etwas richtig unsicheres und gefährliches
Joa, dass das nicht ganz ohne ist, dessen bin ich mir bewusst.
Allerdings kommt der String von dem selben Server und ich könnte vorher ja noch prüfen, ob wirklich nur Zahlen und Buchstaben vorkommen.

Vlt. sollte ich nicht so viel um den heissen Brei reden und das ganze einfach mal erklären.

Es gibt einen Domainnamen für Familieninterne Zwecke.
Für diesen Domainnamen habe ich nun einen weiteren FTP User angelegt, welcher das Recht hat, in einem Unterordner dieser Domain (und nur in diesem Unterordner) Dateien zu uploaden. Ziel war es, dass alle Familienmitglieder ihre gesammelten Familienfotos hochladen können und die Fotos der anderen Familienmitglieder runterladen zu können. Das funktioniert auch einwandfrei.

Allerdings ist mein Vater nun auf den Geschmack dieses einfachen Dateiaustausches gekommen und möchte auch Urlaubsfotos von der Ostsee mit Campingnachbarn austauschen können. Diese sollen allerdings nicht Zugriff auf das komplette Familienalbum haben.
Also habe ich ihm einen gesonderten Unterordner erstellt (transfer) und dazu noch einen passenden FTP-Account eingerichtet, welcher nur Lese- und Schreibzugriff auf "diesen" transfer-Ordner hat. Das Passwort von dem transfer-Account wird also weitergereicht und es muss gegeben sein, dass Fotos ohne Umwege aus dem Familienalbum in den transfer-Ordner kopiert werden können.

Um zu unterbinden, dass Campingnachbars-Sohn - und unter Umständen auch andere die diese Zugangsinformationen erhalten - diesen Account dauerhaft- und evtl. auch für Filesharing-Zwecke mißbrauchen, ändere ich in einem Interval von einer Woche einfach immer wieder die Zugangsdaten für diesen speziellen transfer-Account, welche via HTTP von der Domain aus mit einem speziellen Aufruf abgerufen werden können (in dem Fall nur von meinen Vater).

Diese Zugangsdaten errechnen sich durch das Wochendatum und einigen anderen Gegebenheiten, und diese werden anschließend md5-hashed. Die ersten 8 Zeichen dieses md5-Hashes werden dann als Passwort verwendet.

Das einzige Sicherheitsproblem sehe ich bisher nur darin, dass die Routine welche das Passwort generiert (PHP-Datei, welche auch das Passwort via HTTP anzeigt) manipuliert werden könnte. Auf diese Datei habe nur ich schreibend Zugriff und es befinden sich auch keine CMS's like Joomla etc. auf dieser Domain.
Wenn ich dann via Shell-Script noch prüfe ob Passwort nur aus Buchstaben und Zahlen besteht, sollte das doch eigentlich recht sicher sein, oder?

Hier nochmal eine schematische Darstellung:
MOD: Bilder immer als Anhang!

Sorry für die lange Einleitung, aber vlt. macht es ja etwas deutlicher, was ich vorhabe.

Sicher das du nicht einfach die Authentifizierung von deinem FTP Server mit einer SQL Abfrage machen willst? Das ist bei den meisten ftp Servern Möglich und die Passwortänderung wäre sofort aktiv ohne auf einen cronjob warten zu müssen und ohne Sachen als root auszuführen...
Das hört sich super an!
Ist diese Umstellung dann für "diesen einen" Account so einfach möglich?
Und wenn ja, wie müsste ich da vorgehen?

P.s.:
Es handelt sich hierbei um einen openSuSE 10.2 Server mit Plesk 8.2 von Strato.
Als FTP-Server kommt also proftp zum Einsatz.
 

Attachments

  • skizze.gif
    skizze.gif
    14.5 KB · Views: 167
Last edited by a moderator:
Allerdings kommt der String von dem selben Server und ich könnte vorher ja noch prüfen, ob wirklich nur Zahlen und Buchstaben vorkommen.
Dann kannst du das php Skript aber auch direkt ausführen und dir den Umweg über einen Webserver sparen.
Um zu unterbinden, dass Campingnachbars-Sohn - und unter Umständen auch andere die diese Zugangsinformationen erhalten - diesen Account dauerhaft- und evtl. auch für Filesharing-Zwecke mißbrauchen, ändere ich in einem Interval von einer Woche einfach immer wieder die Zugangsdaten für diesen speziellen transfer-Account
Wochentlich ändernde Passwörter machen den Dateiaustausch aber nicht wirklich einfacher :( Anstatt eines Passworts für alle solltest du lieber jedem Nutzer ein eingenes Benutzerkonto/Passwort zuordnen(ggf. vor Urlaubsbegin eine Liste mit einer paar Benutzerkonten erstellen), wenn sich die User persönlich verantwortlich fühlen passiert deutlich weniger Unfug. Und ein Limit auf die maximale Dateigröße und Datentransfer kann auch praktisch sein um diese komischen 700 MB Bilder mit .avi Endung zu verhindern ;)
Das einzige Sicherheitsproblem sehe ich bisher nur darin, dass die Routine welche das Passwort generiert (PHP-Datei, welche auch das Passwort via HTTP anzeigt) manipuliert werden könnte. Auf diese Datei habe nur ich schreibend Zugriff und es befinden sich auch keine CMS's like Joomla etc. auf dieser Domain.
Ich habe eigentlich eher an DNS cache poisoning - Wikipedia, the free encyclopedia gedacht ;)
[Authentifizierung per SQL Abfrage]
Ist diese Umstellung dann für "diesen einen" Account so einfach möglich?
Und wenn ja, wie müsste ich da vorgehen?
http://www.proftpd.org/docs/configs/mysql_simple.conf
http://www.proftpd.org/docs/directives/linked/config_ref_mod_sql.html
Wobei ich leider nicht weiß ob Plesk nicht einfach die Konfigurationsdatei ohne Rücksicht auf Verluste alle paar Sekunden überschreibt :( Aber es sollten genügend Leute mitlesen die Plesk besser kennen als ich...
 
Sorry für die späte Antwort.
War die letzten Tage viel unterwegs.

@HornOx
Danke für deine Antworten. :)
Wochentlich ändernde Passwörter machen den Dateiaustausch aber nicht wirklich einfacher Anstatt eines Passworts für alle solltest du lieber jedem Nutzer ein eingenes Benutzerkonto/Passwort zuordnen(ggf. vor Urlaubsbegin eine Liste mit einer paar Benutzerkonten erstellen), wenn sich die User persönlich verantwortlich fühlen passiert deutlich weniger Unfug. Und ein Limit auf die maximale Dateigröße und Datentransfer kann auch praktisch sein um diese komischen 700 MB Bilder mit .avi Endung zu verhindern
Es soll für andere ja auch nicht einfach sein.
Ich persönlich möchte mich nicht um diese Accounts kümmern müssen.
Mein Vater soll einfach nur die Möglichkeit haben, einer Person mit welcher er Dateien Austauschen möchte, kurzlebige Zugangsdaten verteilen zu können.
Dieser Zugang wird von der anderen Person dann eh meist nur 1-2 mal genutzt.
Die Dateigröße möchte ich auch nicht limitieren, da auch ganze Urlaubsvideos verteilt werden. :)
Ich habe eigentlich eher an DNS cache poisoning - Wikipedia, the free encyclopedia gedacht
Hmmm, verstehe jetzt den Zusammenhang ehrlich gesagt nicht ganz.
Magst du mir diesen vlt. nochmal kurz etwas deutlicher machen?

Mittlerweie habe ich es so gelöst:
Cronjob auf Perl-Datei, welche im Wochentakt die /etc/shadow bearbeitet.
Es wird für diesen einen FTP-User nur der Passwort-Hash geändert.
 
Back
Top