我们需要为 raspberry pi 分配 IP 地址。我想使用可以在登录时运行的脚本自动执行此操作。该脚本将 ping 一系列 IP 地址,并且第一个失败的 IP 地址将静态地分配给设备的接口该 IP 地址。
有人知道那会是什么样子或者是否有可能吗?
答案1
我希望可以提供一些有用的东西:
代码被占用(并且,修改的) 从:
#!/bin/bash
# Program name: pingall.sh
date
#/cat /path/tolist.txt | while read output
cat list.txt | while read output
do
ping -c 1 "$output" > /dev/null
if [ $? -eq 0 ]; then
# a try to assign ip adress:
sudo ifconfig eth0 192.168.0.1 netmask 255.255.255.0
echo "node $output is up"
else
echo "node $output is down"
fi
done
尝试分配 IP 地址:
sudo ifconfig eth0 192.168.0.1 网络掩码 255.255.255.0
编辑:ifconfig (...) 行应该由找到的所选离线 IP 替换。
粗体文本是我修改过的内容,虽然这可能不是开箱即用的;但希望它能为您提供一些关于如何操作的见解;由于我不是 bash 专家,我只是希望这会很有用。(我想总比没有好?)
如果这是或如果有人发现任何事情是疯狂的。完全错误。或完全错误。请指出这一点
答案2
您无需 ping 一个 IP 地址,而是可以使用 MAC 地址的一部分作为唯一的 IP 地址。
#!/bin/bash
dev=eth0
read -r iface ifstatus mac _ < <( \
ip -o -br link show $dev) || exit 1
mapfile -td : -s 3 <<< $mac
printf -v ip '10.%d.%d.%d' ${MAPFILE[@]/#/0x}
echo $ip
#ip addr add $ip/8 broadcast + dev $dev
#ip link set $dev up
#ip route add default via 10.0.0.1 dev $dev