blog.bartlweb - a technologist's external brain

remote Befehle per SSH ausführen

SSH erlaubt es direkt Befehle an den entfernten Rechner als Parameter mit zu übergeben.

ssh <servername> -p <port> -l <username> -t "<remote-command>"

Das folgende Beispiel startet den Remote-Rechner neu.

ssh 10.0.0.1 -p 22 -l root -t "shutdown -r now"

Wer den SSH-Zugriff über Zertifikate steuert kann somit auch innerhalb von seinen Skripten Befehle per SSH an entfernte Rechner senden.

Dieser Artikel hat Dir deinen Tag gerettet?

... und mühevolles Probieren, Recherchieren und damit Stunden an Zeit gespart? Oder einfach nur Dein Problem gelöst?

Dann würde ich mich freuen, wenn Du meine Zeit für die Erstellung dieses Blogartikels mit einer kleinen Anerkennung honorierst:

Zahlung mit PayPal oder Kreditkarte.

Hinweis zur Verwendung

Die Übermittlung einer Zahlung ist eine persönliche Anerkennung Ihrerseits an den Entwickler (Christian Bartl, Privatperson). Eine Zahlung ist nicht zweckgebunden und es ist keine Gegenleistung zu erwarten. Bitte beachten Sie, dass für eine übermittelte Zahlung keine Quittung ausgestellt werden kann.

Über den Autor

Christian Bartl

Christian Bartl Requirements Engineer
& Solution Architect für Online und Mobile

Als Technologie-Enthusiast und begeisterter Programmierer entwickle ich in meiner Freizeit Websites, Software und IT-Lösungen, die mir selbst und anderen den Alltag vereinfachen.

mehr auf christian.bartl.me

Kommentare

  1. Kann man in diesen befehl auch noch das Passwort intigrieren?

    kommentieren

    1. Hallo Linus,

      das Passwort kannst du nicht direkt mitgeben, aber du kannst deinen Login so konfigurieren, dass du dich anstelle des Passworts mittels Privatekey authentifizierst - dabei entfällt nämlich die Notwendigkeit zur Eingabe eines Passworts. Siehe dazu den Abschnitt "Automatischer Login per SSH" in folgendem Artikel https://blog.bartlweb.net/2010/11/backup-von-linux-servern-via-ssh-und-rsync/

      lg Christian

      kommentieren

  2. Hi,

    vielen Dank, eine Frage dazu. Wir müssen auf einem entfernten Sever ein CURL Befehl ausführen. Der Zugriff mittels SSH ist klar, aber wir muss der CURL Befehl verpackt sein?

    JETZT:
    curl -H "Conent-Type: application/json" -X POST -d '{"jsonrpc": "2.0", ....

    Wie man sieht viele Anführungszeichen. Wie muss das aber aussehen, wenn ich das am entfernten Server starten will.
    Danke
    RENE

    kommentieren

    1. Hallo Rene,
      im Ganzen betrachtet handelt es sich um einen langen Shell-Befehl, daher sollten auch die normalen Regeln für das "Escapen" von Anführungszeichen gelten. Sprich alle Anführungszeichen innerhalb des Remote-SSH-Befehls sollten maskiert werden. In etwa so:

      ssh -p -l -t "url -H \"Conent-Type: application/json\" -X POST -d \'{\"jsonrpc\": \"2.0\", ...."

      lg Christian

      kommentieren

    2. Hallo Christian,

      Vielen Dank, ein wenig noch modifiziert, aber es geht!!!

      lg
      RENE

      kommentieren

  3. Kann ich mittels eines Befehls verschiedene entfernte Server gleichzeitig mit diesem Befehl/Kommando beglücken?

    kommentieren

    1. Hallo realhanno,

      der ssh-Befehl alleine bietet diese Möglichkeit nicht. Als einfache Lösung kannst du dir dazu ein kleines Shellskript schreiben, dass den Befehl mit unterschiedlichen Servern mehrmals hintereinander ausführt.

      lg Christian

      kommentieren

Kommentar schreiben

Der hier angegebene Name wird gemeinsam mit deinem Kommentar auf der Website veröffentlicht.

Deine E-Mail-Adresse wird zur einmaligen Benachrichtigung bei Veröffentlichung des Kommentars genutzt.

Benachrichtigung per E-Mail über Antworten auf meinen Kommentar erhalten.

Bitte tippe die Zahlenkombination "4242" ein, nur dann kann ich deinen Kommentar entgegennehmen.

Bitte fülle dieses Feld nicht aus, nur dann kann ich deinen Kommentar entgegennehmen.