Запуск сценария на вашем компьютере намного проще и определенно более понятен, чем настройка веб-сервера, который будет ждать, пока телефон начнет с ним разговаривать. Поэтому я собираюсь пойти с вашей первой идеей.
Предположения:
- У вас есть root-доступ.
/etc/init.d/motion
используется для запуска и остановкиmotion
.systemctl start|stop motion.service
заsystemd
- Вы подключаетесь к той же сети, что и ваш телефон, используя
eth0
. - Ваша реализация cron использует
crontab
команду.
Получение MAC-адреса:
Получить arp-scan
и запустить arp-scan -I eth0 -l -r 10
от имени пользователя root. (Я обнаружил, -r 10
что важно всегда обнаруживать мой телефон на Android)
Это вернет список устройств в вашей сети. Третий столбец должен облегчить идентификацию вашего телефона. Допустим, мы получили 01:01:01:01:01:01
.
Сценарий это:
Запуск arp-scan -I eth0 -l -r 10 | grep -q '01:01:01:01:01:01'
от имени пользователя root. Это вернется, 0
только если телефон подключен.
Запустите crontab -e
с правами root и добавьте эту строку, чтобы проверить, подключен ли ваш телефон к сети каждую минуту:
* * * * * arp-scan -I eth0 -l -r 10 | grep -q '01:01:01:01:01:01' && /etc/init.d/motion stop || /etc/init.d/motion start
Сохраните файл и выйдите из редактора.
Имейте в виду, что нам не нужно проверять, motion
работает ли мы сами. Сервисный скрипт делает это внутренне.