Shell 脚本 - Ping 地址范围然后为接口分配一个下行地址

Shell 脚本 - Ping 地址范围然后为接口分配一个下行地址

我们需要为 raspberry pi 分配 IP 地址。我想使用可以在登录时运行的脚本自动执行此操作。该脚本将 ping 一系列 IP 地址,并且第一个失败的 IP 地址将静态地分配给设备的接口该 IP 地址。

有人知道那会是什么样子或者是否有可能吗?

答案1

我希望可以提供一些有用的东西:

代码被占用(并且,修改的) 从:

使用 bash ping 多个 IP?

#!/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

相关内容