Il problema che affrontiamo oggi riguarda lo spegnimento di una macchina Ubuntu Core o Ubuntu utilizzando cURL. Questo articolo può tornare utile sia a sviluppatori sia a sistemisti che hanno bisogno di uno strumento facile da invocare che permetta lo spegnimento o il riavvio del sistema.
PowerSwitch Snap
Sullo snap store snapcraft.io è reperibile questo tanto semplice quanto efficace snap https://snapcraft.io/powerswitch che permette con due semplici comandi di spegnere o riavviare remotamente una macchina basata su Ubuntu o Ubuntu Core.
Installazione
Per poterlo installare è sufficiente digitare nella shell il seguente comando:
snap install powerswitch
Come descritto nella pagina ufficiale dello snap, per poterlo utilizzare è necessario anzitutto connettere l’interfaccia di shutdown. Per farlo è sufficiente lanciare il seguente comando:
snap connect powerswitch:shutdown
Utilizzo
A questo punto siamo pronti per il suo utilizzo, che può essere sia sistemistico, sia per risolvere necessità di sviluppo. Per esempio, se per ragioni di amministrazione di sistema volessimo avere a disposizione un comando da invocare remotamente per spegnere o riavviare la nostra macchina, beh, potremmo farlo grazie a due semplici comandi.
Spegnimento
curl http://ip-address:3500/poweroff
Riavvio
curl http://ip-address:3500/reboot
Utilizzo per gli sviluppatori
Per chi si occupa di sviluppo, potrebbe tornare comodo avere due semplici endpoint da invocare che si occupino di riavviare o spegnere la macchina.
Per chi si dovesse chiedere perché non utilizzare un sottoprocesso che invii il comando alla macchina host, la risposta è che potrebbe essere che si stia sviluppando una app che giri containerizzata e pertanto invocare un sottoprocesso non ci permetterebbe di raggiungere e spegnere o riavviare la macchina host.
Certo, ci sono altri escamotage che permettono di accedere la macchina host da dentro un container, come per esempio il privileged mode in Docker, ma è comunque una manovra che per ragioni di sicurezza è da evitare se il nostro unico scopo è quello di spegnere o riavviare la macchina host.
Pertanto, l’utilizzo di questo snap può tornare molto utile anche in scenari di sviluppo. Io personalmente lo uso in ambito IoT.