Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

11.05.2006, 10:49

sql Befehl in Shellscript ausführen ?

Hallo Forenmitglieder.

Es geht um SLES9.

Ich habe einen SQL-Befehl, den ich, wenn ich ihn an der normalen Eingabeaufforderung eingebe, wunderbar funktioniert.
Nun möchte ich diesen per Cronjob 1x täglich automatisch absetzen lassen.
Also habe ich ihn einfach in ein Shellscript gepackt. Leider interpretiert das Shellscript die Anführungsstriche und das sql-Komando funktioniert nicht und ich erhalte eine leere email.

Ich hab schon versucht alle ' und " mit \ bzw. mit \'\ und \"\ zu escapen, aber das hat nicht geklappt.
Wie muss ich den Befehl umschreiben, damit er, so wie er dort steht, einfach ausgeführt wird und das ergebnis der SQL Abfrage per Mail gesendet wird.
Kann mir da jemand weiterhelfen?

Danke & Gruss,

Andreas Cremer

#!/bin/bash
sql "SELECT sum(blocks) FROM results WHERE datum >='2006-05-01 00:00:00' AND datum<='2006-05-31 23:59:59' AND client LIKE 'extern%'" | mail -s "Volumen intern" user303@gmx.de -r Statistikserver

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

2

11.05.2006, 12:03

RE: sql Befehl in Shellscript ausführen ?

set -x dazuschreiben, das Script ausfuehren und die Fehlermeldung hier posten.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

blackjack924

Nobelpreisgewinner durch Losverfahren

  • »blackjack924« ist männlich

Beiträge: 32

Wohnort: Hamburg

Beruf: Leiter IT

  • Nachricht senden

3

11.05.2006, 12:12

Hi Andreas,
versuche einmal mit \' oder \" zu escapen...

Ansonsten kannst auch mal ausprobieren, die einfachen ' durch doppelte ' zu ersetzen.

In deinem Posting ist nicht erkennbar ob du zwei ' oder Anführungszeichen gesetzt hast.


Gruß
blackjack
--
Don't mess with the systems guys...

4

11.05.2006, 12:39

RE: sql Befehl in Shellscript ausführen ?

Es sind nicht 2 einfache sondern doppelte Anführungsstriche, also dieGänsefüßchen über der 2, die in dem SQL-Befehl verwendet werden.

Anbei die Fehlermeldung nach set-x

+ sql 'SELECT sum(blocks) FROM results WHERE datum >='\''2006-05-01 00:00:00'\'' AND datum<='\''2006-05-31 23:59:59'\'' AND client LIKE '\''extern%'\'''
./statistik.sh: line 4: sql: command not found
+ mail -s 'Volumen intern' user303@gmx.de -r Statistikserver

Der verhuddelt mir die komplette SQL-Abfrage wenn ich das richtig sehe ?

Andreas

ozoon

Chefdiplomat

  • »ozoon« ist männlich

Beiträge: 1 461

Wohnort: Österreich

Beruf: Student

  • Nachricht senden

5

11.05.2006, 12:51

ich würde den ' vor dem sql statment einmal durch ein " ersetzen versuchen.

6

11.05.2006, 12:59

Dort steht schon ein " (siehe Script im 1. Posting)

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

7

11.05.2006, 13:01

Gib den absoluten Pfad von sql an.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

blackjack924

Nobelpreisgewinner durch Losverfahren

  • »blackjack924« ist männlich

Beiträge: 32

Wohnort: Hamburg

Beruf: Leiter IT

  • Nachricht senden

8

11.05.2006, 13:06

Probiere doch einmal folgendes Konstrukt.
Das hat mir damals bei einem Shellscript geholfen.

sql<<STAT
SELECT sum(blocks) FROM results WHERE datum >='2006-05-01 00:00:00' AND datum<='2006-05-31 23:59:59' AND client LIKE 'extern%
STAT
| mail -s "Volumen intern" user303@gmx.de -r Statistikserver


Gruß
blackjack
--
Don't mess with the systems guys...

9

11.05.2006, 15:49

Nimmt er nicht, hängt sich bereits an dem <<STAT auf

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

10

11.05.2006, 16:11

Wieso liest/machst Du nicht das, was ich gepostet habe?
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

blackjack924

Nobelpreisgewinner durch Losverfahren

  • »blackjack924« ist männlich

Beiträge: 32

Wohnort: Hamburg

Beruf: Leiter IT

  • Nachricht senden

11

11.05.2006, 16:23

strcat hat recht, sorry, da hat mein Geschreibsel den sehr guten Rat von strcat überlagert.

Den Pfad angeben sollte das prob tatsächlich beheben. Dein Script hängt sich nicht auf, sondern weiss erst gar nichts mit dem Aufruf sql anzufangen...


Gruß
blackjack
--
Don't mess with the systems guys...

Thema bewerten