ubuntuusers.de

Mysql-Datenbank auslesen per bash script

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

herates

Anmeldungsdatum:
16. Dezember 2005

Beiträge: 422

hi,

ich habe einen dns server am laufen. auf diesem server will ich eine entfernte mysql-db auslesen (spalten ip und dns-name), wobei dns-name eine zeichenfolge getrennt durch "," sein soll.

auf dem dns-server habe ich eine hosts datei, die aus 2 teilen besteht. einem fixen und einem dynamischen. der dynamische teil soll dann täglich durch die db-daten ersetzt werden.

das ganze wollte ich durch ein bash script und cron lösen. leider schaffe ich es nicht gescheit mit den mysql daten umzugehen. alles was ich bisher geschafft habe, war es eine variable mit den daten zu füllen, also einen string zu erstellen. leider sind nicht alle zeilen in der db komplett gefüllt, sprich ich habe eine ip aber dazu keinen dns-eintrag. somit erhalte ich dann eine folge

ip dns ip dns ip dns,dns,dns ip dns ip dns ip ip ip ip ip dns,dns

php wollt eich nicht unbedingt auf dem dns-server installieren, was für mich zwar einfacher wäre ☺

also wie kann ich die db auslesen und wie kann ich mit den daten umgehen. hat da einer ne idee???

grüße wolfgang

Jacore

Anmeldungsdatum:
25. Mai 2008

Beiträge: 550

Na, die Idee finde ich gut. Mittels eines einfachen concat() lässt sich das auch schnell machen. Und zwar so:

1
2
3
mysql -Dpr -uroot -p -e \
 "SELECT concat(ip,' ',dns) as zeile FROM ips \\G;" \
 | egrep -o '[0-9]+(\.[0-9]+){3}.*'

Man könnte auch Zeilenweise durchgehen, falls das nötig wäre:

1
2
3
4
5
6
7
mysql -Dpr -uroot -p -e \
 "SELECT concat(ip,' ',dns) as zeile FROM ips \\G;" \
 | egrep -o '[0-9]+(\.[0-9]+){3}.*'
 | while read line;
do
  echo $line
done

Zur Info: das \G am Ende der Query bewirkt, dass mysql die Resultate so ausgibt:

*************************** 1. row ***************************
zeile: 1.1.1.1 sdfs.fds
*************************** 2. row ***************************
zeile: 1.2.2.2 a.d.a.ds

Mittels egrep -o (Zeigt nur den Trefferbereich) schliessen wir dann einfach alles aus, was wir nicht sehen wollen.

Gruß,
Jacore

herates

(Themenstarter)

Anmeldungsdatum:
16. Dezember 2005

Beiträge: 422

danke dir hat mir sehr geholfen

Antworten |