MySQL in Shell Script

X

xXNemesisXx

Hallo Unix Fans!,
Ich hab da mal ne Frage ;)

Und zwar habe ich eine Datenbank die Tabellen und dann auch wieder Spalten bzw Datensätze hat, ich möchte nun bestimmte Datensätze aus der Datenbank Auslesen und in meinem Shell Script als Variable benutzen.

Einleitung:

Es ist ein BackUp Script das man über eine Web Anwendung Ändern kann.
Bislang kann man den Namen und den "Wichtigen" Pfad auswählen. Das ganze gedöns wird denn in die Datenbank gespeichert und wartet darauf ins Shell Script eingefügt zu werden.

Jetzt Frage:
Wie geht das?
kann mir jemand ein Code Schnippel zeigen?
 
PHP:
sqlerg=`echo "select xyz from tabelle where something=1" | mysql -u user -p pass database`

Aus $sqlerg anschließend mit den üblichen Shell-Werkzeugen oder Shell-Build-Ins den Wert extrahieren.
 
PHP:
sqlerg=`echo "select xyz from tabelle where something=1" | mysql -u user -p pass database`

Aus $sqlerg anschließend mit den üblichen Shell-Werkzeugen oder Shell-Build-Ins den Wert extrahieren.


Ähm.. *hust* kannst du die üblichen Shell-Werkzeugen oder Shell-Build-Ins näher erleutern?

ich kann mir Shell Script noch nicht so gut umgehen -.-

Eigentlich fragt man das ja nicht aber könntest du mir ein konkretes Code Beispiel zeigen, wie ich nun vorgehen muss?

Ich Verstehe leider noch nicht was man so alles machen kann usw.
 
du hast doch hier schon ein konkretes beispiel.... du musst nur dein SQL statement nur noch so absetzten, was immer du auch damit machen wills. und nach der pipe ... das ist "|" das hier trägst du die daten der mysql db ein ... also username, pw und datenbankname.
das ganze ist ein kommando aus diesem grunde mit den hochkommata ' ... ' versehen. das ergebnis davon, also das result wird der variable sqlerg zugewiessen, die du wiederrum mit $sqlerg auslesen kannst

hoffe das hat dir bischen geholfen ... und ein kleiner tipp es gibt sehr viele gute howtos und tuts zu shellskript programming

mfg


edit: mit mysql --help findest du den rest den du brauchst
 
Zuletzt bearbeitet:
moar ^^ ich habs.... fast! -.-

also mein script:

Code:
#!/bin/sh
sqlerg=`echo "SELECT Name FROM settings" | mysql -u XXX -p XXX BackUp`
echo $sqlerg

Name = Spalte
settings = Tabelle
BackUp = Datanbank

Verstehe!

so jetzt hab ich das ding mal in der Konsole ausgeführt....

Passwort Abfrage...

Und nun ist die Ausgabe "Name BackUp2"

(BackUp2 ist der Datansatz der Spalte also richtig) Aber wie bekomme ich das "Name" da weg?
 
Frag die Suchmaschine deines Vertrauens nach dem "Advanced bash scripting guide", dort bekommst du in 2h alle deine Fragen beantwortet - und nebenbei eine fundierte Einführung, mit der du auch lernst, was man damit sonst noch machen kann und insb. wie.

Kleine Korrektur zum Passwort: mysql -u user --password=pass database

> Und nun ist die Ausgabe "Name BackUp2"

Ohne irgendwelche "Ascii-Rahmen"? (kann sein)

PHP:
echo ${sqlerg//Name }
 
Hallo,
mit Hilfe der bisherigen Antworten auf diesen Thread konnte ich bei mir auch Daten aus einer Tabelle holen und in Variablen speichern.
Leider habe ich nun ein Problem. Erst mal mein Code:

PHP:
    NULL=`echo "SELECT ID FROM daten where ID='$count'" | mysql -u root -p'admin' test`
	ID=${NULL//ID};
	EINS=`echo "SELECT Server FROM daten where ID='$count'" | mysql -u root -p'admin' test`
	SERVER=${EINS//Server};
	ZWEI=`echo "SELECT User FROM daten where ID='$count'" | mysql -u root -p'admin' test`
	User=${ZWEI//User};
	DREI=`echo "SELECT Passw1 FROM daten where ID='$count'" | mysql -u root -p'admin' test`
	wePassw=${DREI//Passw1};
	VIER=`echo "SELECT Passw2 FROM daten where ID='$count'" | mysql -u root -p'admin' test`
	DBFTPPassw=${VIER//PPassw2};

wie man sehen kann les ich die werte für ID, Server, User und Passwort aus und schreibe Sie jeweils in eine Variable.
Nun möchte ich automatisch noch ein Verzeinis mit dem Servernamen erstellen also:

mkdir /var/www/$SERVER

leider funktioniert dass so nicht. Die Shell erstellt dann immer ein Verzeichnis in dem Aktuellen Verzeichniss und nicht in /var/www/.
Meine Vermutung ist, dass da irgendwie ein Leerzeichen oder ein Zeilenumbruch drin ist... weil ich bekomme auch die Fehlermeldung "kann Verzeichniss /var/www/ nicht anlegen da es bereits exisitiert.

Hat jemand eine Ahnung was ich da machen kann?
 
Sowas gabs hier schonmal. Da gings zwar um die ksh und oracle, aber die Anpassugn auf ne Bourne oder andere und MySQL ist fix gemacht.
 
Zuletzt bearbeitet:

Ähnliche Themen

Last mit etc/passwd anzeigen lassen

Nach INSERT Eintrag ein Script starten?

Problem mit Apache2 + MySQL Server

Shell Script mit PHP

Shell CGI Script soll Sytemvariablen Schreiben und auslesen

Zurück
Oben