Anzeige:
Ergebnis 1 bis 6 von 6

Thema: BASH - SSH-Tunnel - Befehle ausführen

  1. #1
    Registrierter Benutzer
    Registriert seit
    30.01.2010
    Beiträge
    21

    BASH - SSH-Tunnel - Befehle ausführen

    Hallo zusammen,

    habe ein Script das einen SSH-Tunnel vom lokalen Linux-System zu einem anderen Linux-System (remote) aufbaut. Anschließend sollen die im Script enthaltenen Befehle auf dem Remote-System ausgeführt werden. Funktioniert aber irgendwie nicht.

    Folgendes zum Test:

    Code:
    #!/bin/bash
    
    SSHKEY="/root/.ssh/tunnel"
    WHOYOUARE=$(ping -c 1 $REMOTE_MACHINE | awk -F" |:" '/from/{print $4}')
    
    ssh -i $SSHKEY root@$WHOYOUARE
    
    DUMP_FILE_NAME=$("ls -t $DUMP_ARCHIVE$ORACLE_USER*.DMP* | head -1")
    
    echo $DUMP_FILE_NAME
    Das "ls -t" führt er nicht wie er sollte auf dem Remote-System aus sondern local obwohl das Script durch den SSH-Tunnel doch bereits auf dem neuen System ist oder nicht? Scheinbar aber nicht! ^^

    Habe es auch schon mit EOF probiert...

    Code:
    #!/bin/bash
    
    SSHKEY="/root/.ssh/tunnel"
    WHOYOUARE=$(ping -c 1 $REMOTE_MACHINE | awk -F" |:" '/from/{print $4}')
    
    ssh -i $SSHKEY root@$WHOYOUARE <<EOF
    
    DUMP_FILE_NAME=$("ls -t $DUMP_ARCHIVE$ORACLE_USER*.DMP* | head -1")
    
    echo $DUMP_FILE_NAME
    
    EOF
    funktionierte leider auch nicht. Kann mir bitte jemand sagen wie das umzusetzen ist?

    Gruß

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    du kannst ssh den befehl den es aufrufen soll als parameter übergeben:


    ssh root@server "ls -l /was/auch/immer" > lokale_datei

    so kannst du dann den output von dem befehl ls -l ... (wird auf dem remoten rechner aufgerufen) in der lokalen datie gespeichert.

  3. #3
    Registrierter Benutzer
    Registriert seit
    30.01.2010
    Beiträge
    21
    Gibt es wirklich keine andere Möglichkeit die Befehle direkt an die Remote-Shell zu senden?

    Mein Script beinhaltet mehr als nur das obige Beispiel... da sind if-Abfragen, jede Menge Variablen... exit-Codes usw.

    Ich weiß nicht, ob das mit deinem Beispiel so einfach möglich ist. Aber danke.

  4. #4
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    deine zweite variante mit dem <<EOF ... EOF funktioniert so schon auch.
    Allerdings wrid $(..) schon auf deinem lokalen rechner ausgewertet.
    wenn du das nicht möchtest musst du entspr escapen


    bsp.:

    Code:
    # ssh localhost <<EOF
    > cd /tmp
    > echo \$(ls -l)
    > EOF
    root@localhost's password:
    stdin: is not a tty
    total 20 -rw-r--r-- 1 root root 1 2010-01-29 01:54 tcpdump.out -rw-r--r-- 1 root root 15264 2010-01-29 01:54 temp.cap

  5. #5
    Registrierter Benutzer
    Registriert seit
    30.01.2010
    Beiträge
    21
    Klasse @msi !!

    Der erste Test hat funktioniert und das gewünschte Resultat gebracht.

    Mal sehen ob es auch mit dem ganzen Script funktioniert.

  6. #6
    Registrierter Benutzer
    Registriert seit
    30.01.2010
    Beiträge
    21
    Zitat Zitat von tetex Beitrag anzeigen
    Klasse @msi !!

    Der erste Test hat funktioniert und das gewünschte Resultat gebracht.

    Mal sehen ob es auch mit dem ganzen Script funktioniert.
    ###edit###

    Nach ein paar Stunden habe ich es nun geschafft.

    Ergebnis: Einen zentralen Hudson geschaffen von dem aus Oracle Dumps auf Maschinen nach Wahl automatisiert importiert werden können.

Lesezeichen

Berechtigungen

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