Как я выполняю сценарий после того, как DHCP присвоит IP-адрес на запуске?

Я записал сценарий оболочки, который отправляет мой текущий 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
3
задан 14 February 2018 в 03:14

1 ответ

Крючки

<час>

Существует множество возможностей, как это сделать.

Если вы хотите выполнить свой сценарий « после запуска 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
5
ответ дан 1 December 2019 в 15:33

Другие вопросы по тегам:

Похожие вопросы: