Comando para salir del script pero no de la sesión SSH
Esta es mi primera publicación aquí y todavía no soy un experto en scripts de Linux / Bash. :-)
Así que escribí el siguiente código para mi Raspberry Pi y funciona bien, excepto por un pequeño problema.
Estoy usando SSH para iniciar sesión en la Raspberry Pi. Cuando el pin 17 está alto (valor lógico digital de 1 también conocido como 5 voltios), quiero que el mensaje "Noté un 1" impreso en la salida del terminal y luego quiero salir del script y permanecer conectado a la Raspberry Pi.
El problema al que me enfrento es cuando el script ve un valor lógico de 1, apaga toda la conexión ssh y me lleva de vuelta a la sesión de terminal de mi computadora portátil.
No quiero que el script salga de la conexión ssh cuando el pin 17 lee un 1. Solo quiero que deje de ejecutar el scriot y me lleve de regreso a la terminal raspberry Pi donde todavía estoy conectado a raspberry Pi para poder hacer otras cosas. cosas.
Básicamente, NO quiero cerrar la sesión SSH cuando el scipt sale. ¿Podría darme algunas sugerencias para solucionar este problema?
¡Gracias por la respuesta!
pin=17
gpio mode $pin in while true; do if [[ $(gpio read $pin) -eq 1 ]]; then echo "I noticed a 1 whcih means I noticed 5 volts!" return elif [[ $(gpio read $pin) -eq 0 ]]; then
echo "Did not see a 1, so I will keep looping"
echo ""
sleep 2
fi
done
Respuestas
Bienvenido a Server Fault. Intente usar el siguiente código:
pin=17
gpio mode $pin in while true; do if [[ $(gpio read $pin) -eq 1 ]]; then echo "I noticed a 1 whcih means I noticed 5 volts!" kill -INT $$
elif [[ $(gpio read $pin) -eq 0 ]]; then
echo "Did not see a 1, so I will keep looping"
echo ""
sleep 2
fi
done
Asumo que haces algo como
ssh raspberrypi /path/to/script
Entonces, sí, cuando el script sale, la sesión ssh también termina.
Sin embargo, en el script, en lugar de salir, genere un shell interactivo:
if [[ $(gpio read $pin) -eq 1 ]]; then
echo "I noticed a 1 whcih means I noticed 5 volts!"
exec bash -li
Eso reemplaza el proceso de secuencia de comandos en ejecución con un shell de inicio de sesión interactivo.
Es posible que necesite ssh -to ssh -ttprobar sin primero.