我想在每次启动时自动发送计算机的 IP。我编辑/etc/rc.local
sleep 10
ifconfig > /tmp/myip
scp /tmp/myip <server>
exit 0
inet addr, Bcast, Mask
我试过了,里面没有/tmp/myip
。我猜网络是在脚本之后启动的。那么该怎么做呢?非常感谢!
答案1
ifconfig
不显示输出,可能是因为在运行时,网络设置尚未完全完成。此外,不能 100% 保证动态 IP 地址不会在服务器正常运行时间内发生变化。
如果使用dhclient
,请将脚本移动到该目录/etc/dhcp/dhclient-exit-hooks.d
,以便它执行后通过 DHCP 获取 IP 地址。 Debian 通常会填充此目录;如果它不存在,则可能需要创建它。
可以更改脚本以在启动时以及每次更改时发送 IP 地址。请注意,根据您的 IP 地址 DHCP 租用期限,您可能或者也许不会每次都有兴趣复制它。
如果在 ISP/Internet 环境中,使用动态 DNS 服务可能也(更)有趣。
请参阅此了解更多详细信息处理 ISP 更改 IP 地址的更好方法?
和
http://manpages.ubuntu.com/manpages/wily/man8/dhclient-script.8.html
答案2
解决方案取决于您使用的 dhcp 客户端守护程序。大多数发行版(在 *bsd 和 linux 上)使用dhcpcd
或dhclient
.在这两种情况下,您都可以将脚本插入客户端配置中。
dhcpcd
/etc/dhcpcd.sh
每次受控接口启动或关闭时运行脚本(如果存在)。您只需scp
在此脚本中插入您的即可。Hooking into DHCP events dhcpcd will run /etc/dhcpcd.sh, or the script specified by the -c, --script option. It will set $1 to a shell compatible file that holds various configuration settings obtained from the DHCP server and $2 to either up, down or new depending on the state of dhcpcd. dhcpcd ignores the exist code of the script.
dhclient
ETCDIR/dhclient-exit-hooks
在设置接口后立即调用脚本。您可以按照手册页Hook
部分中的说明进行操作dhclient-script
。After all processing has completed, CLIENTBINDIR/dhclient-script checks for the presence of an executable ETCDIR/dhclient-exit-hooks script, which if present is invoked using the ´.´ command. The exit status of dhclient-script will be passed to dhclient-exit-hooks in the exit_sta- tus shell variable, and will always be zero if the script succeeded at the task for which it was invoked. The rest of the environment as described previously for dhclient-enter-hooks is also present. The ETCDIR/dhclient-exit-hooks script can modify the valid of exit_status to change the exit status of dhclient-script.
答案3
ifconfig ethx > /tmp/myip
x 是您的接口号,例如 eth0