Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Ausgabe einer SSH Verbindung mitloggen

  1. #1
    Registrierter Benutzer
    Registriert seit
    Mar 2001
    Beiträge
    208

    Ausgabe einer SSH Verbindung mitloggen

    Hallo,

    langsam verzweifle ich an einem "kleinen" Problem.

    Hintergrund:
    Sicherung eines MySQL Clusters via innobackupex über SSH.

    Für ein Logfile möchte ich die Ausgabe auf einem zentralen Server ablegen, auf dem das Backup durchgeführt wird.
    Meine Kommando sieht so aus:

    Code:
    ssh backup@node1.local "innobackupex --user=mysqlbackup --password=pass --stream=xbstream ./" | xbstream -x -C /mnt/backup/node1/
    Nun habe ich schon soweit alles mir erdenkliche versucht:

    Code:
    ssh backup@node1.local "innobackupex --user=mysqlbackup --password=pass --stream=xbstream ./" | xbstream -x -C /mnt/backup/node1/ | tee logfile.log # Kein Erfolg
    ssh backup@node1.local "innobackupex --user=mysqlbackup --password=pass --stream=xbstream ./" | xbstream -x -C /mnt/backup/node1/ > logfile.log > 2>&1 # Kein Erfolg
    ssh backup@node1.local "innobackupex --user=mysqlbackup --password=pass --stream=xbstream ./" | xbstream -x -C /mnt/backup/node1/ 2&1 | tee logfile.log # Kein Erfolg
    Gibts noch eine Idee wie ich das Problem lösen könnte?

    Gruß
    I.
    Geändert von Isengard (22.08.17 um 07:55 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    20.483
    Google meint, tee sollte passen - kann ich hier soweit auch nachvollziehen.

    'ne Variante über screen wäre noch denkbar. Oder script?
    Geändert von marce (22.08.17 um 08:56 Uhr)
    Ich bin root - ich darf das.

  3. #3
    Universaldilletant Avatar von fork
    Registriert seit
    Dec 2001
    Ort
    Frankfurt/Main
    Beiträge
    1.054

  4. #4
    Registrierter Benutzer
    Registriert seit
    Mar 2001
    Beiträge
    208
    Script hat doch tatsächlich funktioniert (mittels script -c 'ssh.... ').
    Danke!

  5. #5
    Registrierter Benutzer
    Registriert seit
    Mar 2001
    Beiträge
    208
    Hallo Zusammen,

    jetzt bleibt nur noch eine blöde Situation.

    Anbei mal das Skript

    Code:
    #!/bin/bash
    LOGFILE=/mnt/backup/LOG/logfile.log
    script -f -c /usr/local/sbin/innorunner.sh $LOGFILE
    
    if [ `grep -i "completed ok" ${LOGFILE} | wc -l` -eq 4 ]; then
      echo "Status" | mail -s "MySQL Cluster Backup is fine" -a ${LOGFILE} -r backup@local.home support@local.out
    else
      echo "Status" | mail -s "MySQL Cluster Backup has failed - check logs" -a ${LOGFILE} -r backup@local.home support@local.out
    fi
    Das Logfile wird komplett geschrieben, allerdings wird die Mail schon vor Abschluss der "Session" versendet, natürlich mit einem falschen Ergebnis, da das komplette Skript nicht abgewartet wird.

    Der Fehler selbst ist aber insgesamt sehr komisch:
    * manuelle Ausführung - > funktioniert, Logfile ist komplett
    * cronjob Ausführung -> funktionioert nicht, Logfile wird sofort geprüft (während innorunner.sh noch läuft) und eine falsche Mail ausgelöst

    Wo hab ich denn hier einen Denkfehler?

  6. #6
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    20.483
    man script sagt:
    Code:
           It is not recommended to run script in non-interactive shells.  The
           inner shell of script is always interactive, and this could lead to
           unexpected results.
    sprich vermutlich musst Du vor die Ergebnisprüfung noch einen Test einbauen, ob das Programmchen noch läuft und solange warten - kann sein, daß das funktioniert.

    Alternnativ doch mal über screen probieren oder eine saubere Shell erzwingen - was dafür notwendig wäre kann ich gerade nicht sagen.
    Geändert von marce (31.08.17 um 09:46 Uhr)
    Ich bin root - ich darf das.

  7. #7
    Registrierter Benutzer Avatar von Huhn Hur Tu
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe
    Beiträge
    1.941
    Alternativ geht auch script -c fuuu.sh && mail ....

    && wartet den erfolgreichen Abschluss des vorhergehenden Programmes ab.

    Ich wuerde es aber eher weniger gekapselt schreiben


    #!/bin/bash -c
    ssh backup@node1.local "innobackupex --user=mysqlbackup --password=pass --stream=xbstream ./" | xbstream -x -C /mnt/backup/node1/
    .
    .
    .

    if [ `grep -i "completed ok" ${LOGFILE} | wc -l` -eq 4 ]; then
    echo "Status" | mail -s "MySQL Cluster Backup is fine" -a ${LOGFILE} -r backup@local.home support@local.out
    else
    echo "Status" | mail -s "MySQL Cluster Backup has failed - check logs" -a ${LOGFILE} -r backup@local.home support@local.out
    fi

    exit 1
    Das ist, wenn man es schoen schreibt auch uebersichtlicher

    Kleiner Tipp am Rande, um nicht in der Bash Quoting Hoelle zu landen, quote Befehle nicht mit Backticks "`" sondern mit "$()", das ist weit sicherer, vor allem wenn man bisweilen Befehle per SSH ausfuehrt
    Geändert von Huhn Hur Tu (01.09.17 um 09:45 Uhr)
    Zwischen anonym sein wollen und seine Daten nicht verkaufen wollen, liegen zwei Welten. Wenn man sich einen kostenpflichtigen Dienst sucht, dann meist, weil man für diese Dienstleistung zahlt und nicht selbst das Produkt sein will.


  8. #8
    Registrierter Benutzer
    Registriert seit
    Mar 2001
    Beiträge
    208
    Habs mir einer simplen pgrep Abfrage abgefangen:

    Code:
    #!/bin/bash
    LOGFILE=/mnt/backup/LOG/logfile.log
    script -f -c /usr/local/sbin/innorunner.sh $LOGFILE
    
    while [ `pgrep script | wc -l` -gt 0 ]; do sleep 10; done
    
    if [ `grep -i "completed ok" ${LOGFILE} | wc -l` -eq 4 ]; then
      echo "Status" | mail -s "MySQL Cluster Backup is fine" -a ${LOGFILE} -r backup@local.home support@local.out
    else
      echo "Status" | mail -s "MySQL Cluster Backup has failed - check logs" -a ${LOGFILE} -r backup@local.home support@local.out
    fi
    Mit der Quote Hölle schaue ich mir noch an, Danke für den Tipp @Huhn Hur Tu

Ähnliche Themen

  1. Ausgabe einer Zeichenfolge auf /dev/ttyS*
    Von joharrer im Forum stationäre Hardware
    Antworten: 0
    Letzter Beitrag: 19.10.10, 08:47
  2. bekomme blos eine 802.11b verbindung anstatt einer g verbindung hin
    Von theblackraven im Forum Anbindung an die Aussenwelt
    Antworten: 1
    Letzter Beitrag: 13.06.05, 00:27
  3. Ausgabe einer Logdatei auf der 10. Konsole
    Von no_expert im Forum System installieren und konfigurieren
    Antworten: 6
    Letzter Beitrag: 13.08.04, 21:05
  4. Ausgabe von einer Datei per Mail
    Von Windi im Forum Linux Allgemein
    Antworten: 5
    Letzter Beitrag: 03.01.04, 20:31
  5. Ausgabe in einer Datei
    Von boSen im Forum System installieren und konfigurieren
    Antworten: 2
    Letzter Beitrag: 26.05.03, 11:11

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •