dpo*_*esz 6 startup scripts login dhcp
我编写了一个 shell 脚本,将我当前的 IP 发送到谷歌驱动器文件夹,以帮助自动登录到树莓派。我笔记本电脑上的另一个脚本检索 IP 并登录。当我从命令行运行该脚本时,该脚本运行良好,但在分配 IP 后无法让它在启动时运行。
我尝试过 crontab,但脚本在分配 IP 之前运行。我不想设置计时器或使用 while 循环来等待 IP,这听起来效率不高。我试图在启动过程中但在 DHCP 运行之后执行我的脚本。我尝试在 allinterfaceup() 函数中添加 upstart 的路径,但这也不起作用。任何帮助,将不胜感激。
树莓派 3,Ubuntu Mate 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
Run Code Online (Sandbox Code Playgroud)
如何做到这一点有多种可能性。
如果您想“在 DHCP 运行后”执行您的脚本,那么钩子就是您的最佳选择!
dhclient/etc/dhcp/dhclient-exit-hooks.d/退出后将执行目录中的所有内容。 *
将您的脚本链接到目录而不是将其放在那里是一种很好的做法 - 但两者都有效。
ln -s /path/to/your/script /etc/dhcp/dhclient-exit-hooks.d/name_of_your_script
Run Code Online (Sandbox Code Playgroud)
(*) 但是,dhclient它本身并不会“退出”,而是会在每次出于某种原因执行某些操作时继续运行并执行(“源”)此目录。
所以,为了禁止你的脚本被多次执行,我建议你用“if语句”包装它,只有在IP地址被绑定或更新时才执行它,如下所示:
ln -s /path/to/your/script /etc/dhcp/dhclient-exit-hooks.d/name_of_your_script
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8154 次 |
| 最近记录: |