将连接到接口的 IP 地址设置为 shell 变量的脚本

Script to set IP address connected to an interface to a shell variable

我想编写一个脚本来将连接到 "eth0" 等接口的设备的 IP 地址设置为一个变量。 我可以通过此命令获取 IP 地址:

arp -i eth0 -a

以上命令的输出是:

? (10.42.0.38) at b8:27:eb:07:5d:60 [ether] on eth0

我想将脚本添加到 .bashrc 文件以将上述命令输出的 IP 地址设置到变量 $RASPBERRY_IP 并在其他脚本中使用它。 知道怎么做吗?

试试这个:

Variable=$(ip addr | grep inet | grep eth0 | awk -F" " '{print }'| sed -e 's/\/.*$//')

您的 ARP table 不是查找本地 IP 地址的正确来源。请尝试使用 ip 命令:

RASPBERRY_IP=$(ip addr | awk -F"[ /]" '/inet .*eth0/{print }')

如果您想在您的网络中找到另一个 IP 地址,您可以使用您的 ARP table。试试这个命令:

RASPBERRY_IP=$(arp -ai eth0 | cut -d' ' -f2 | sed 's/[()]//g')

请注意,如果您的 ARP table 在 eth0 上包含更多条目,则 $RASPBERRY_IP 将包含更多 IP 地址!示例:10.42.0.38 10.42.0.39 10.42.0.40。使用树莓派的 MAC 地址添加 grep。如果您只想要第一个条目,请将其更改为:

RASPBERRY_IP=$(arp -ai eth0 | cut -d' ' -f2 | sed 's/[()]//g;q')

不要忘记 ARP 会在一段时间后(在 Unix 下通常为 5 分钟)从 ARP 缓存中删除条目。