Éteindre une machine à distance via un bouton dans HA

Comment éteindre une machine à distance via un bouton dans HA ?

Bonjour,
J’ai déjà mis en place un Wake-On-Lan pour allumer NAS et serveur proxmox.
Maintenant j’aimerais pouvoir éteindre les machines proxmox depuis HA.

Quelqu’un connait-il une solution pour faire ça de manière assez sécurisée ?

Merci d’avance :innocent:

SAlut

une petite recherche sur le forum…

et tu aurais trouvé ton bonheur

1 « J'aime »

@jrvrcd
Merci :innocent:
Je ne pensais pas qu’il y aurait une intégration pour ça :slight_smile:
C’est encore mieux que ce que je voulais faire ^^
Car je vais pouvoir contrôler les VM :smile:

Le sujet étant assez dense en lien et infos, j’ai isolé ce tuto que tu sembles avoir suivi :

Je vais aller poser (enfin j’ai déjà posé) mes questions là-bas ^^

Ouais ou sinon un daemon à l’écoute d’un broker mqtt qui exécute la méthode shutdown à la réception d’un message précis pour ceux qui n’utilisent pas de VM :joy: ou qui veulent une solution plus générique.

Ça commence à devenir complexe pour moi :sweat_smile:

J’ai un NAS sur base d’un Rpi 4 et OpenMediavault.
Comme il est peu sollicité, la plupart du temps il est complètement éteint et hors tension.
Je l’ai paramétré pour qu’il boot dès qu’il est sous tension.
Il est sur un plug connecté.
Donc pour le mettre en route, je switch on le plug.

Pour l’éteindre proprement, j’exécute d’abord une shell_command.

shell_command:
  stop_nasgdx2: ssh -i /config/ssh_keys/id_rsa_core-ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no core-ssh@192.168.5.230 sudo reboot

Donc pour l’éteindre complètement et le remettre hors tension, j’ai un petit script.

  stop_nasgdx2:
    alias: Arreter nasgdx2
    sequence:
    - service: shell_command.stop_nasgdx2
      data: {}
    - delay:
        seconds: 45
    - service: switch.turn_off
      data: {}
      target:
        entity_id: switch.plug_pilote_nas
    mode: single
    icon: mdi:server-network

Personnellement j’utilise aussi du SSH. L’acces ssh HA → windows préalablement configurer puis:

Ceci dans configuration.yaml

shell_command:
  windows_shutdown: ssh -i /ssl/ssh_host_ecdsa_key -o UserKnownHostsFile=/ssl/known_hosts_win USER@192.168.XXX.XXX 'powershell -c (New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").PlaySync(); && shutdown /s /t 5'
  windows_reboot: ssh -i /ssl/ssh_host_ecdsa_key -o UserKnownHostsFile=/ssl/known_hosts_win USER@192.168.XXX.XXX 'powershell -c (New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").PlaySync(); && shutdown /r /t 5'

Des switch dans switch.yaml

# Reboot WINDOWS
- platform: template
  switches:
    win_reboot:
      icon_template: 'mdi:microsoft-windows'
      value_template: "{{ is_state('binary_sensor.win_status', 'on') }}"
      turn_on:
      turn_off:
        service: shell_command.windows_reboot
# Switch du Wake on Lan
- platform: wake_on_lan
  name: Wake on lan WIN
  mac: XX:XX:XX:XX:XX:XX
  host: 192.168.XXX.XXX
  turn_off:
    - service: shell_command.windows_shutdown

Et une carte sur mon dashboard

type: entities
entities:
  - entity: switch.wake_on_lan_WIN
  - entity: switch.win_reboot

C’est une version simplifier de ce que j’utilise ayant deux OS différent sur mon ordi (chacune sur un disque dur différent) j’ai la meme chose pour l’autre OS et aussi des switch pour redemarer l’ordi directement sur l’autre systeme d’un simple clic sans avoir a choisir le disque de démarrage à l’allumage de l’ordinateur :wink:

1 « J'aime »

Ok donc de ce que je comprends il faut une clé ssh pour faire ça.
Mais je n’ai pas ça … jamais compris comment ça marchait :sweat_smile: