RE: Aus einem Bash Skript in mysql schreiben?
Hallo Thomas,
From: Thomas Lewandowski [mailto:Big_Thomas@gmx.de] Sent: Wednesday, December 29, 2004 1:33 AM To: suse-linux@suse.com Subject: Aus einem Bash Skript in mysql schreiben?
ich will aus einem bash Skript direkt in meine mysql Datenbank schreiben. Also erst Verbinden usw.(so wie in php mysql_connect usw.)? Ich finde leider nichts bei google -> könnte mir einer von euch weiterhelfen?
#!/bin/sh HOST= USER= PASSWORD= DATENBANK= statement="select SPALTE from TABELLE where WHEREBEDINGUNG" echo $statement > statement.sql `mysql -C -N -h $HOST -u $USER -p$PASSWORD $DATENBANK < statement.sql > result.txt` Ist nicht besonders elegant, sollte jedoch funktionieren. Gruß Johannes
Etwas uebersichtlicher und ohne Zwischendatei geht es mit einem HERE-Dokument: ---------------------- [...] mysql -h $HOST -u $USER -t -p$PWD $DATENBANK > $ERGEBNIS <<EOF SELECT ... FROM ... WHERE ...="$WERT1" AND ...="$WERT2" ORDER BY ...; EOF ---------------------- Wie man sieht, kann man die Werte der Abfrage ueber Shell-Variable parametrisieren. Das funktioniert natürlich auch für alle anderen SQL-Befehle fuer Eingabe, Datenladen usw. Gruss Wolfgang On Wed, Dec 29, 2004 at 08:32:53AM +0100, Rinke, Johannes wrote:
Hallo Thomas,
From: Thomas Lewandowski [mailto:Big_Thomas@gmx.de] Sent: Wednesday, December 29, 2004 1:33 AM To: suse-linux@suse.com Subject: Aus einem Bash Skript in mysql schreiben?
ich will aus einem bash Skript direkt in meine mysql Datenbank schreiben. Also erst Verbinden usw.(so wie in php mysql_connect usw.)? Ich finde leider nichts bei google -> könnte mir einer von euch weiterhelfen?
#!/bin/sh HOST= USER= PASSWORD= DATENBANK= statement="select SPALTE from TABELLE where WHEREBEDINGUNG" echo $statement > statement.sql `mysql -C -N -h $HOST -u $USER -p$PASSWORD $DATENBANK < statement.sql > result.txt`
Ist nicht besonders elegant, sollte jedoch funktionieren.
Gruß Johannes
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo Wolfgang, hallo Johannes, hallo Leute, Am Mittwoch, 29. Dezember 2004 12:26 schrieb Wolfgang Hamedinger:
Etwas uebersichtlicher und ohne Zwischendatei geht es mit einem HERE-Dokument: [...] WHERE ...="$WERT1" AND [...] Wie man sieht, kann man die Werte der Abfrage ueber Shell-Variable parametrisieren.
Man kann sich auf diese Weise aber auch recht schnell eine Sicherheitslücke einhandeln: WERT='"; DROP TABLE xy; ' Das Zauberwort lautet hier Überprüfung der Parameter, nur dass das mit Perl oder PHP deutlich einfacher geht als in der Bash. [TOFU gelöscht - bitte http://learn.to/quote] Gruß Christian Boltz -- Lass Dir kein X für ein U vormachen, sei auf der Hxt!
Hallo Christian, natuerlich hast Du recht, aber ich bin da jetzt auch von einer ganz privaten Nutzung mit kontrolliertem Einsatzbereich ausgegangen; oeffentlich und unkontrolliert wuerde ich das auch nicht über ein Shell-Skript machen wollen. Allerdings ist das Skript mit einem HERE-Dokument aus meiner Sicht tatsaechlich sehr viel leichter lesbar (allein, weil man die Abfrage deutlich strukturierter hinschreiben kann) - letztendlich aber klarerweise eine Geschmackssache. Gruss und guten Rutsch Wolfgang On Wed, Dec 29, 2004 at 07:55:26PM +0100, Christian Boltz wrote:
Hallo Wolfgang, hallo Johannes, hallo Leute,
Am Mittwoch, 29. Dezember 2004 12:26 schrieb Wolfgang Hamedinger:
Etwas uebersichtlicher und ohne Zwischendatei geht es mit einem HERE-Dokument: [...] WHERE ...="$WERT1" AND [...] Wie man sieht, kann man die Werte der Abfrage ueber Shell-Variable parametrisieren.
Man kann sich auf diese Weise aber auch recht schnell eine Sicherheitslücke einhandeln: WERT='"; DROP TABLE xy; '
Das Zauberwort lautet hier Überprüfung der Parameter, nur dass das mit Perl oder PHP deutlich einfacher geht als in der Bash.
[TOFU gelöscht - bitte http://learn.to/quote]
Gruß
Christian Boltz -- Lass Dir kein X für ein U vormachen, sei auf der Hxt!
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Am Mittwoch, 29. Dezember 2004 08:32 schrieb Rinke, Johannes:
echo $statement > statement.sql `mysql -C -N -h $HOST -u $USER -p$PASSWORD $DATENBANK < statement.sql
result.txt`
Wieso die Zwischendatei? echo $statement | mysql ... geht direkt und ist ein Zwischenschritt (und potentieller Angriffspunkt) weniger. -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de
participants (4)
-
Christian Boltz
-
Manfred Tremmel
-
Rinke, Johannes
-
Wolfgang Hamedinger