Ausgabe umleitung in einer IF Anweisung

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Deehimself, 07.07.2003.

  1. #1 Deehimself, 07.07.2003
    Deehimself

    Deehimself Jungspund

    Dabei seit:
    06.06.2003
    Beiträge:
    20
    Zustimmungen:
    0
    Hallo zusammen

    Ich hab mir mal en kleines Script für die Zeitsynchronisation gebastelt. Jetzt habe ich ein Problem:

    ...
    ...


    Wenn ich den Befehl in der Shell ausführe:

    "/usr/sbin/ntpdate" ntps1.gwdg.de >$LOG_PATH/ntpdate_status 2>&1"

    Steht dann im $LOG_PATH/ntpdate_status:
    7 Jul 09:53:30 ntpdate[8580]: adjust time server 134.76.10.46 offset 0.001105 sec


    Nach dem Ausführen des Scriptes sieht das File so aus:

    ./timesync: line 47: [: /usr/sbin/ntpdate: unary operator expected


    Wie kann ich es machen das ich auch im Script danach die Meldung im File habe wie wenn ich es von hand ausführe?

    Gruss Dee
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. chb

    chb Steirer

    Dabei seit:
    01.06.2003
    Beiträge:
    2.359
    Zustimmungen:
    0
    Ort:
    ÖSTERREICH
    hmm wieso verwendest du für das ne if schleife es würde doch auch ohne gehn einfach

    Code:
    /usr/sbin/ntpdate ntps1.gwdg.de >$LOG_PATH/ntpdate_status 2>&1 && sbin/hwclock --systohc
    
    mir ist net klar was du da mit if abfragen mußt ..

    btw mit ntpdate -s kannst du die meldung die du willst auch nur ins syslog schreiben lassen falls du das willst ..
     
  4. #3 Deehimself, 07.07.2003
    Deehimself

    Deehimself Jungspund

    Dabei seit:
    06.06.2003
    Beiträge:
    20
    Zustimmungen:
    0
    Ich brauche die if anweisungen da ich zwei verschiedene Mails generiere (erfolgreich bez. fehlgeschlagen) und an die mail hänge ich dan die datei mit der meldung an.

    Ich denke es ist nur etwas kleines, da der Fehler darin besteht das es irgendwie von der shell falsch interpretiert wird.... weil es ja ausserhalb des scriptes funktioniert.
     
  5. chb

    chb Steirer

    Dabei seit:
    01.06.2003
    Beiträge:
    2.359
    Zustimmungen:
    0
    Ort:
    ÖSTERREICH
    verstehe ..

    najo wegen der if schleife kann ich dir net viel weiterheflen bis auf ein " zuviel oder zuwenig kann ich nix erkennen .. btw machst du daraus ein cron script .. ?
     
  6. #5 Deehimself, 07.07.2003
    Zuletzt bearbeitet: 07.07.2003
    Deehimself

    Deehimself Jungspund

    Dabei seit:
    06.06.2003
    Beiträge:
    20
    Zustimmungen:
    0
    Ja es wird ein cronjob.

    Hier mal das ganze script:


    #!/bin/bash
    #
    ############################################
    # Autor: Deehimself
    # Name: timesync
    # Date: 4.7.03
    # Last update: 4.7.03
    # Ver.: 1.1
    # Status: still testing
    # Fuktion: It makes a time/datum synchro and sends a mail to the news group with the result
    ############################################
    #
    # Variabl(en) definieren
    LOG_PATH="/tmp"
    #
    #
    # Funktion(en) definieren
    help ()
    {
    cat <<HELP
    ##################################
    # This is a time/datum synchro script #
    #-------------------------------------------------------- #
    # You must give me the Servername as Parameter #
    # USAGE: timesync -sn <servername> #
    # or: timesync -h to display this Help #
    ##################################
    HELP
    exit 0
    }
    #
    #
    if [ -n "$1" ] && [ -n "$2" ]; then
    case $1 in
    -h) help;;
    -sn) SRV_NAME=$2;shift 2;;
    --) shift;brak;;
    -*) echo "Error: No such option $1 type -h for help";exit 2;;
    *) echo "Error: No such option $1 type -h for help";exit 2;;
    esac
    else
    help
    fi
    #
    #
    # Das Hauptprogramm
    if [ "'/usr/sbin/ntpdate' ntps1.gwdg.de >$LOG_PATH/ntpdate_status 2>&1" ] && [ "/sbin/hwclock --systohc" ];
    then
    cat $LOG_PATH/ntpdate_status | mailx -s "$SRV_NAME: datum- & zeit-check --succeeded" xxx@xxx.com;

    else
    cat $LOG_PATH/ntpdate_status | mailx -s "$SRV_NAME: datum- & zeit-check --failed" xxx@xxx.com;
    fi
    #
    #
    rm "$LOG_PATH"/ntpdate_status
    #
    #
    # EnD oF ScRiPt
     
  7. rup

    rup Haudegen

    Dabei seit:
    10.04.2002
    Beiträge:
    627
    Zustimmungen:
    0
    Versuch mal folgendes:

    if [ $(/usr/sbin/ntpdate ntps1.gwdg.de >$LOG_PATH/ntpdate_status 2>&1) ] && [ "/sbin/hwclock --systohc" ];
     
  8. #7 Deehimself, 07.07.2003
    Deehimself

    Deehimself Jungspund

    Dabei seit:
    06.06.2003
    Beiträge:
    20
    Zustimmungen:
    0
    Ja jetzt gehts.
    Danke viel mal...

    Was bedeutet dieses $( ) genau?
     
  9. chb

    chb Steirer

    Dabei seit:
    01.06.2003
    Beiträge:
    2.359
    Zustimmungen:
    0
    Ort:
    ÖSTERREICH
    damit führt er ein programm aus wie in der console sozusagen und gibt dann den
    wert ins script zb zurück also

    echo $(ls) -> gibt die ausgabe von ls auf dem schirm mittels echo aus ;)
     
  10. #9 Patrick123, 22.09.2005
    Patrick123

    Patrick123 Grünschnabel

    Dabei seit:
    22.09.2005
    Beiträge:
    1
    Zustimmungen:
    0
    ich habe was falsch und brauche hielfe

    das ist was ich geschrieben habe wo ist der fehler???????????????

    ( "$1" != "a" && "$1" != "b" )
    bitte sagt es mir
    ;(
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. #10 Wolfgang, 22.09.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Was soll das sein?
    Was erwartest du damit?
    Falls du ein Test durchführen willst, solltest du das auch tun-
    Also
    man bash-buildins

    if [ "$1" != "a" -a "$1" != "b" ]; then ...


    @Deehimself

    Du musst in solch einem Fall den Rückgabewert auswerten, $?.
    Das Programm test (if) erwartet einen Vergleich. Wenn du deinen Befehl in eine Variable steckst, bekommst du diesen bei fast allen zurück.
    Deshalb ging es im ersten Fall nicht.
    Im Zweifelsfall nachsehen, was die Funktion/Programm zurückliefert.

    Gruß Wolfgang
     
  13. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    @ Wolfgang: Also wenn Deehimself das mittlerweile nicht selber rausbekommen hat, dann ist ihm nicht zu helfen ;)

    Gruss, Phorus
     
Thema:

Ausgabe umleitung in einer IF Anweisung

Die Seite wird geladen...

Ausgabe umleitung in einer IF Anweisung - Ähnliche Themen

  1. printf Formatierung: echo schreibt bei Ausgabeumleitung auf File nichts. Wieso?

    printf Formatierung: echo schreibt bei Ausgabeumleitung auf File nichts. Wieso?: #!/bin/sh ZAHL="372" FARBE="gelb" printf "%s%06d%s" "Bearbeitungsnummer 888" $ZAHL ", Farbe: $FARBE" echo printf "%s%06d%s" "Bearbeitungsnummer...
  2. [GELÖST] Ausgabeumleitung erweitert - alles in eine Zeile bringen

    [GELÖST] Ausgabeumleitung erweitert - alles in eine Zeile bringen: Hallo Gemeinde, ich habe ein recht triviales SetUp, eine Ausgabeumleitung in Bsp. test.log echo $VAR1 $VAR2.. >test.log Nun kommen direkt...
  3. Umleitung der Ausgabe bei Batchjobs

    Umleitung der Ausgabe bei Batchjobs: Hallo, das Umleiten der Standardausgabe/-Fehlerausgabe in eine Datei ist kein Problem und funktioniert auch bei Batchjobs. Allerdings kommt man...
  4. C: ausgabeumleitung bei exec

    C: ausgabeumleitung bei exec: Hallo zusammen ich hab in einem Vatereine beliebiges programm z.b eine shell laufen und möchte die ausgabe der shell umleiten hier mein versuch...
  5. Ausgabenumleitung über 3 Hosts

    Ausgabenumleitung über 3 Hosts: Ich habe 3 Hosts (A, B, C) Von A soll über B die Information an C geschickt werden. Ich bekomme aber die umlenkung nicht ganz gebacken. A und B...