¿Cómo puedo ejecutar un script de shell cuando hay WiFi conectado?

Tengo un script de shell realmente simple, que solo agrega una ruta a mi máquina de desarrollo interna. Esto es útil, ya que esa máquina tiene algunos contenedores LXC dentro, por lo que puedo acceder a todos mis contenedores desde mi teléfono celular (para probar sitios web desde el navegador móvil o cuentas SIP de Asterisk desde CSipSimple)

#!/system/bin/sh
su -c "ip route add 10.0.3.0/24 via 192.168.0.200 dev wlan0"

Para usar esta regla, he creado una nueva conexión local en ConnectBot, con el nombre del script como comando de inicio de sesión. Esto funciona muy bien.

Sin embargo, soy demasiado vago. Solo quiero saber si hay alguna forma de aplicar este script, tan pronto como me conecte al WiFi de mi casa automáticamente. Tal vez algo para ejecutar un script en cada cambio de red, ya que podría verificar desde el mismo script si estoy conectado al WiFi de mi hogar usando dumpsys y algo de magia grep.

¿ Has mirado a Tasker ? Esa es generalmente la aplicación de acceso para tareas de automatización activadas en Android.
Gracias @Matthew, he usado AutomateIt y Shell Plugin, ¡y funciona muy bien! Eso resuelve mi problema. Sin embargo, tal vez alguien podría explicar si Android activa algún script en los cambios de red, como lo hacen otras variantes de Linux con los archivos ifup-ifdown.
No me sorprendería si lo hubiera, pero lamentablemente no estoy familiarizado con eso.
Todavía estoy buscando una herramienta de este tipo, ya que no puedo aceptar instalar un monstruo de 18 MB como AutomateIt solo para ejecutar un script de una sola línea.

Respuestas (1)

Matthew ya señaló a para esta tarea (uh), una aplicación que ya uso durante años. Así que permítanme agregar los pasos para lograr esto. Obviamente, una condición previa es que el dispositivo esté rooteado, pero el sucomando en la pregunta me dice que lo está. Así que, aquí vamos:

  • Condición: Estado › Red › WiFi Conectado
    Como parámetro, incluye el SSID de tu red WiFi, para que no dispare en redes ajenas :)
  • Tarea: Script › Ejecutar Shell
    Aquí se agrega el nombre del script a ejecutar (ruta completa), precedido de un signo de exclamación (para indicar que debe ejecutarse como root)

Esto debería hacerlo. No lo probé yo mismo, ya que no tengo rutas para agregar :)