I want to write a script to set the IP address of the device connected to an interface like "eth0" to a variable. I can get the IP address by this command:
arp -i eth0 -a
The output of above command is:
? (10.42.0.38) at b8:27:eb:07:5d:60 [ether] on eth0
I want to add a script to .bashrc
file to set the IP address from output of above command to the variable $RASPBERRY_IP
and use it in other script. Any idea how to do that?
尝试这个:
Variable=$(ip addr | grep inet | grep eth0 | awk -F" " '{print $2}'| sed -e 's/\/.*$//')
Your ARP table is not the right source to find your local IP address. Try the ip
command instead:
RASPBERRY_IP=$(ip addr | awk -F"[ /]" '/inet .*eth0/{print $6}')
If you want to find another IP address in your network, you can use your ARP table. Try this command:
RASPBERRY_IP=$(arp -ai eth0 | cut -d' ' -f2 | sed 's/[()]//g')
Note that $RASPBERRY_IP
will contain more IP addresses if your ARP table contains more entries on eth0! Example: 10.42.0.38 10.42.0.39 10.42.0.40
. Add a grep
with the raspberry's MAC address. If you only want the first entry, change it to:
RASPBERRY_IP=$(arp -ai eth0 | cut -d' ' -f2 | sed 's/[()]//g;q')
Don't forget that ARP removes entries from the ARP cache after some time (usually 5 minutes under Unix).
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.