NAS herunterfahren

Begonnen von Litle_Bob, 15 Februar 2014, 14:20:04

Vorheriges Thema - Nächstes Thema

Litle_Bob

Hallo liebe FHEM gemeinde,
gibt es Personen die Ihren NAS Server per FHEM herunterfahren? Es gibt hier Forum einen Eintrag zu diesem Thema, was ich nicht verstehe darum frage ich noch einmal nach, ob evtl mir einer dabei helfen kann.

Ich kann per SSH auf meinen NAS zugreifen, und auch ein shutdown Befehl absetzen, das ganze möchte ich gerne per FHEM umsetzen, aber wie ;)

Hier der Tread in dem es schon zwei Personen geschafft haben: http://forum.fhem.de
/index.php?topic=12791.0



[/codesub ssh_cmd($$@)
{
  my($host,$cmd,$user) = @_;

  my $ret;

  my $ssh = qx(which ssh);   
  chomp( $ssh );
  $ssh .= ' ';
  $ssh .= $user."\@" if( defined($user) );
  $ssh .= $host ." ". $cmd;
  if( open(my $fh, "$ssh|" ) ) {   
    $ret = <$fh>;
    close($fh);
  }

return $ret;
}]

Wie habt ihr das umgesetzt? Ich verstehe nicht wie bei oben genannten Code eine SSH verbindung mit dem Schlüssel erzeugt wird?

Gruß Bob

justme1968

du musst deine sah verbindung so konfigurieren das nicht mehr nach dem password gefragt wird.

gruss
  abdre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Litle_Bob

danke, aber da ist glaube ich mein problem, ich weiß nicht wie ich es umsetzen kann. SSH bietet nicht an ein Passwort zu übergeben, habe es ganz am Anfang mit einem | echo probiert, dann gesehen man kann ein Passwortlose SSH Verbindung mit einem SSH Key, was der NAS Server auch anbietet, machen, darum hatte ich die hoffnung es würde mit dem oben genannten Code funktionieren. Ich komme dabei nicht weiter :-(

justme1968

du musst auf fhem seite ein schlüsselpaar erzeugen. das geht mit sshkeygen.

den öffentlichen teil musst du dann auf nas seite ins authorized_keys file tun.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

marvin78

Du brauchst sshpass

Dann geht das ganze mit diesem einfachen Skript:

#! /bin/bash

USERNAME=USER
HOSTS="192.168.178.XX"
SCRIPT="poweroff"
for HOSTNAME in ${HOSTS} ; do
    sshpass -p PASSWORD ssh -o StrictHostKeyChecking=no -l ${USERNAME} ${HOSTNAME} "${SCRIPT}"
done

justme1968

und welchen Sinn hat ein password das irgendwo im Klartext steht?

genau dafür gibt es doch die Authentifizierung per key.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Litle_Bob

da ich FHEM auf einer FritzBox am laufen habe, werde ich wohl auf sshkeygen zurückgreifen. sshpass ist ja kein standart Bestandteil der FB, oder?

@sshpass
In meinem Fall ist der NAS sowie FHEM nicht von außen erreichbar, dann ist es doch legitim, oder?

Litle_Bob

Zitat von: justme1968 am 15 Februar 2014, 14:40:20
du musst auf fhem seite ein schlüsselpaar erzeugen. das geht mit sshkeygen.

um diesen ganzen Vorgang zu verstehen habe ich gerade im Wiki nachgeschaut, da gibt es noch keine Anleitung. Bin ein neuling und habe noch keine Erfahrung. Hast du Lust mir stichpunktartig diesen Vorgang zu beschriebene? Würde dann auch einen Wiki Eintrag erstellen.

Vorgang:

  • SSH Key erzeugen
  • SSH Key eintragen
  • per SSH verbinden
  • unter 99_Utils.pm eine Modul (sub) erstellen, in der poweroff steht

Wernieman

Es gibt dazu keinen Eintrag im FHEM-Wiki, da es diverse einträge in Unix/Linux-Wikis (Mehrzahl!) gibt.

SSH wird verwendet, umd sicherer zu sein. sshpass wiederspricht dem, ein ssh mit SSH-Keys dagegen NICHT!

Prinzipiell hast Du mit Deinem Vorgehen recht.

Du kannst es beim Einrichten manuell probieren. Wenn Du Dich als "Fhem-user" ohne Passwort vom FHEM-rechner zur NAS verbinden kanst, ist alles O.K.

Kurzfassung (Für Linux-user) in Pseudokode, als FHEM-user
ssh-keygen -t rsa
cat .ssh/id_rsa.pub NAS:/user-Dir/.ssh/authorized_keys
ssh user@NAS

Das letzte sollte dann one Passwortabfrage funktionieren

Hinweis:
Bitte den Pseudokode an Deine Verhältnisse anpassen, bzw. die Daten passend kopieren ....

Ansonsten mal Tante Google mit "ssh keygen" füttern ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html