Как я могу запустить сценарий оболочки, когда какой-либо Wi-Fi подключен?

У меня есть очень простой сценарий оболочки, который просто добавляет маршрут к моей внутренней машине разработки. Это полезно, так как внутри этой машины есть несколько контейнеров LXC, поэтому я могу получить доступ ко всем своим контейнерам со своего мобильного телефона (для тестирования веб-сайтов из мобильного браузера или учетных записей SIP Asterisk из CSipSimple).

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

Чтобы использовать это правило, я создал новое локальное соединение на ConnectBot с именем сценария в качестве команды входа в систему. Это прекрасно работает.

Однако я слишком ленив. Я просто хочу знать, есть ли способ применить этот скрипт, как только я автоматически подключаюсь к домашнему Wi-Fi. Может быть, что-то для выполнения сценария при каждом изменении сети, так как я мог бы проверить из того же сценария, подключен ли я к своему домашнему Wi-Fi, используя dumpsys и некоторую магию grep.

Вы смотрели Таскер ? Обычно это приложение для триггерных задач автоматизации на Android.
Спасибо, @Matthew, я использовал AutomateIt и плагин Shell, и все отлично работает! Это решает мою проблему. Однако, возможно, кто-то может объяснить, запускает ли Android какой-либо сценарий при изменении сети, как это делают другие варианты Linux с файлами ifup-ifdown.
Не удивлюсь, если есть, но я с этим, к сожалению, не знаком.
Я все еще ищу такой инструмент, так как я просто не могу согласиться установить 18-мегабайтного монстра, такого как AutomateIt, только для запуска однострочного скрипта.

Ответы (1)

Мэтью уже указал на для этой задачи (э-э) — приложение, которое я использую уже много лет. Итак, позвольте мне добавить шаги для достижения этого. Очевидно, что предварительным условием является рутирование устройства, но команда suв вопросе говорит мне, что это так. Итак, приступим:

  • Условие: State › Net › WiFi Connected
    В качестве параметра укажите SSID вашей сети WiFi, чтобы он не срабатывал в чужих сетях :)
  • Задача: Сценарий › Запустить оболочку
    Здесь вы добавляете имя сценария для запуска (полный путь), которому предшествует восклицательный знак (чтобы указать, что он должен запускаться от имени пользователя root)

Это должно сделать это. Сам не проверял, так как у меня нет маршрутов для добавления :)