Menú bin/sh para Raspberry Pi, scripting básico.

Menú bin/sh para Raspberry Pi, scripting básico.

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:

pi-barra

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á:

Menú bin/sh para Raspberry

Espero, que os sirva de ayuda.

 

2 comentarios

  1. Rubencito

    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.

Los comentarios están cerrados