Vamos a confeccionar un Menú bin/sh para Raspberry, y así controlar un Plex Media Server.
Es un sistema básico, que en realidad, permite:
- Apagar completamente la Raspberry Pi.
- Reinicializar la Raspi.
- Comprobar conectividad.
- Salir a la consola, para operaciones no previstas.
- Volver a inicializar Plex Media Server.
- Rebotar Samba, por si no tenemos acceso remoto a ficheros.
Y más funcionalidades que podrás implementar tú mismo, según las necesidades del sistema.
El acceso remoto, lo efectuamos mediante un cliente SSH, en mi caso, Putty.
Una pequeña explicación:
Antes de comenzar a codificar, vamos a explicar cómo funcionan los menús en bin/sh:
Primero creamos una función llamada menú, haremos la visualización del menú, propiamente dicho, limpiaremos la pantalla, asignaremos valor a las diferentes entradas al menú, y mostraremos un input, que recoja el valor de la tecla pulsada:
_menu() { clear echo "Selecciona una opcion:" echo echo "1) Apagado Total" echo "2) Rebotar Raspberry" echo "3) Ping a google.es" echo "4) Consola" echo "5) Plex restart" echo "6) Samba restart" echo "9) Salir" echo echo -n "Indica una opcion: " }
Crearemos unos mensajes de salida, con otra función, este es un ejemplo:
_plex() { echo "" echo "------------------------------------" echo "Restaurando Plex Server" echo "------------------------------------" echo "" }
Ahora, vamos realmente con la programación, asignando a la variable opc valor «0», y creamos, primero un blucle «until», al que diremos que si la opción es diferente a 9, se ejecute el código siguiente, y si es 9, que salga del menú, cerrando la conexión con la Raspberry, tal como:
opc="0" until [ "$opc" -eq "9" ];
Y seguimos, codificando, con un «do case», que es realmente el seleccionador de accciones, «En el caso que opc sea igual al valor case, ejecuta los comandos a continuación».
do case $opc in 1) _apagar /sbin/poweroff ;; 2) _rebotar /sbin/reboot ;;
Acabamos el programa, con el cierre de «until» y «do case».
Menú bin/sh para Raspberry.
Con tu editor de texto preferido, (te recomiendo NotePad++, el cual utilizo para casi todo lo que tenga que ver con programación), crea un fichero llamado, por ejemplo, menu.sh e inserta el código siguiente:
#!/bin/sh # Muestra el menu general _menu() { clear echo "Selecciona una opcion:" echo echo "1) Apagado Total" echo "2) Rebotar Raspberry" echo "3) Ping a google.es" echo "4) Consola" echo "5) Plex restart" echo "6) Samba restart" echo "9) Salir" echo echo -n "Indica una opcion: " } # Muestra la opcion seleccionada del menu _mostrarResultado() { clear echo "" echo "------------------------------------" echo "Has seleccionado la opcion $1" echo "------------------------------------" echo "" } _rebotar() { echo "" echo "------------------------------------" echo "Procedemos a REBOTAR la Raspberry" echo "------------------------------------" echo "" } _apagar() { echo "" echo "------------------------------------" echo "Procedemos a APAGAR la Raspberry" echo "------------------------------------" echo "" } _reservado() { echo "" echo "------------------------------------" echo "¿Pero que haces, es una opcion RESERVADA" echo "------------------------------------" echo "" } _consola() { echo "" echo "------------------------------------" echo "Recuerda salir con el comando exit" echo "------------------------------------" echo "" } _plex() { echo "" echo "------------------------------------" echo "Restaurando Plex Server" echo "------------------------------------" echo "" } _samba() { echo "" echo "------------------------------------" echo "Restaurando SAMBA" echo "------------------------------------" echo "" } # opcion por defecto opc="0" # bucle mientas la opcion indicada sea diferente de 9 (salir) until [ "$opc" -eq "9" ]; do case $opc in 1) _apagar /sbin/poweroff ;; 2) _rebotar /sbin/reboot ;; 3) ping google.es -c 10 _menu ;; 4) _consola /bin/bash ;; 5) _plex /etc/init.d/plexmediaserver restart _menu ;; 6) _samba /etc/init.d/samba restart _menu ;; *) # Esta opcion se ejecuta si no es ninguna de las anteriores clear _menu ;; esac read opc done
El acceso directo:
Yo tengo, un acceso directo, anclado en la barra de tareas, con un icono de una raspberry:
En mi caso, tengo el fichero menu.sh, residiendo en una carpeta del disco duro D:, llamada Desktop, y el programa Putty en el escritorio de Windows 10, el acceso directo, lo creo, dentro del mismo lugar que tengo menu.sh.
Crea un acceso directo, con el icono que prefieras, y añade la siguiente línea en Destino, de esta manera:
C:\Tu\RUTA\hacia\putty.exe -ssh TU.IP.DE.RASPI -l TUusuario -pw TUpassword -m D:\TU RUTA A\menu.sh -t
Cambia, la ruta hacia putty, añade la ip de tu Raspi, ponle TU usuario y password, e indica, la ruta al fichero menu.sh.
Luego anclarlo a tu barra de tareas, o donde prefieras tenerlo.
Si todo va bien, y la conexión es correcta, te aparecerá:
Espero, que os sirva de ayuda.
Y si utilizas un router con openwrt como cliente de red wifi, y la ip de la raspberry está en otra subred (que le proporciona este router), se podría hacer?
Saludos.
Hola Rubencito:
Si las redes se ven, es decir, hay enrutamiento, ya sea por máscara o por static routing, no hay problema.
Como ya sabes, haciendo un ping desde el pc que contendrá el menu.sh a la raspberry, te confirmará si llega.
Un saludo.