SSH Befehl remote ausführen

Hallo,

ich möchte per SSH einen Befehl remote auf einem anderen Linux Rechner ausführen und das Ergebnis in einer Entität speichern.
Dazu habe ich folgenden Befehl der wundbar im SSH Terminal in HA funktioniert:

ssh -o LogLevel=QUIET userid@hostname -t "apt-get -qq update && apt-get -q -y --ignore-hold --allow-change-held-packages --allow-unauthenticated -s dist-upgrade | /bin/grep ^Inst | wc -l"

ssh-keygen und ssh-copy-id habe ich im Terminal ausgeführt, so dass eine Anmeldung vom remote Client ohne Passwort möglich ist.

Packe ich das ganze nun in die configuration.yaml wird der Befehl mit Errorcode 255 beendet.

- platform: command_line
    name: vzlooger Linux Update
    command : "ssh -o LogLevel=QUIET userid@hostname -t \"apt-get -qq update && apt-get -q -y --ignore-hold --allow-change-held-packages --allow-unauthenticated -s dist-upgrade | /bin/grep ^Inst | wc -l\""

Wo liegt mein Fehler?

So. Hab eine Lösung für mein Problem:

  • SSH terminal protection mode off
  • docker exec -it homeassistant bash
  • ssh-keygen -t rsa
    no passphrase
    save in /config/.ssh/id_rsa.pub
  • ssh-copy-id -i /config/.ssh/id_rsa userid@hostname
  • ssh -o LogLevel=QUIET userid@hostname -i /config/.ssh/id_rsa -t “my command for remote host”

Und dann in die configuration.yaml

sensor:
  - platform: command_line
    name: My Entity Name
    command : "ssh -o LogLevel=QUIET userid@hostname -i /config/.ssh/id_rsa -t \"my command for remote host\""
1 „Gefällt mir“

Hallo,
Danke für die schnelle Antwort.
Ist zwar nicht mein Thema aber ich habe das gleiche Problem. Ich möchte einen anderen RasPi bei Problemen automatisiert rebooten.
Und dann später eventuell nur die laufende ScreenSession in der der MS läuft. Für alles habe ich auf dem MC Scropte und die funktionieren dort sube und auch in der crontab.

Leider scheitere ich schon bei den ersten beiden Zeilen.
Wie stelle ich den “protection mode” auf off?
Wenn ich den Befehl der zweiteZeile absetze bekomme ich “docker: command not found”

Gruß
Frank

Hier:

Guten Morgen,

ich habe alle Schritte erfolgreich durchgeführt. Was ich nicht verstehe: jetzt habe ich einen Sensor command line mittels configuration.yml erstellt.

Wie führe ich nun den externen Befehl mittels des Sensors aus?

Danke und Grüsse

Was möchtest du denn genau machen? Das Ergebnis deines Kommandos als Sensorwert erhalten, oder das Kommando bei Bedarf ausführen? In letzterem Fall solltest du eher shell_command benutzen.

Nachtrag:
Bin mir fast sicher, du hättest den Docker-Teil weglassen können. Der Parameter -i hätte vermutlich gereicht.

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

ich möchte meinen Raspberry Pi runterfahren lassen idealerweise mit einer Automatsierung welche ich dann manuell auslöse

Dann schau dir mal shell_command an, damit solltest du erfolgreich sein.