Я записал сценарий оболочки, который отправляет мой текущий IP в папку диска Google для помощи в автоматизации, входящей в малину PI. Другой сценарий на моем ноутбуке получает IP и входит в систему. Сценарий хорошо работает, когда я выполняю его из командной строки, но я испытываю затруднения, заставляя его работать на запуске после того, как IP присвоен.
Я попробовал crontab, но выполнения сценария перед IP присвоены. Я не хочу устанавливать таймер или использование некоторое время цикл для ожидания IP, который не звучит очень эффективным. Я пытаюсь выполнить свой сценарий во время процесса запуска, но после выполнений DHCP. Я пытался добавить путь к выскочке в allinterfaceup () функция, но это не работало также. Любая справка ценилась бы.
Raspberry Pi 3, помощник Ubuntu 16.04 LTS
сценарий:
#!/bin/sh
#if ([ $reason = "BOUND" ] || [ $reason = "RENEW" ] )
#then
echo `hostname -I | cut -d' ' -f1 ` > ~/ipAddr/ip.txt
rclone copy ~/ipAddr/ip.txt remote:pi
#fi
Существует множество возможностей, как это сделать.
Если вы хотите выполнить свой сценарий « после запуска DHCP », то ловушки - это то, что вам нужно!
dhclient
выполнит все в каталог /etc/dhcp/dhclient-exit-hooks.d/
после его выхода. *
Рекомендуется связывать ваш сценарий с каталогом, а не помещать его туда - но оба работают.
ln -s /path/to/your/script /etc/dhcp/dhclient-exit-hooks.d/name_of_your_script
(*) Однако dhclient
не «завершается» как таковой, а продолжает работать и выполнять («исходники») этот каталог каждый раз, когда он что-то делает для причина .
Итак, чтобы запретить выполнение вашего сценария много раз, я предлагаю вам обернуть его «оператором if», чтобы выполнить его, только если IP-адрес привязан или обновлен следующим образом:
if ([ $reason = "BOUND" ] || [ $reason = "RENEW" ])
then
# your script commands here
fi