我想编写一个脚本来将连接到“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
,并在其他脚本中使用它。
知道怎么做吗?
答案 0 :(得分:2)
试试这个:
Variable=$(ip addr | grep inet | grep eth0 | awk -F" " '{print $2}'| sed -e 's/\/.*$//')
答案 1 :(得分:1)
您的ARP表不是查找本地IP地址的正确来源。请改为使用ip
命令:
RASPBERRY_IP=$(ip addr | awk -F"[ /]" '/inet .*eth0/{print $6}')
如果要在网络中查找其他IP地址,可以使用ARP表。试试这个命令:
RASPBERRY_IP=$(arp -ai eth0 | cut -d' ' -f2 | sed 's/[()]//g')
请注意,如果您的ARP表包含更多关于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缓存中删除条目。