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.