У нас есть необходимость назначения IP-адресов малиновым пи. Я хочу автоматизировать это с помощью скрипта, который может запускаться при входе в систему. Сценарий будет пинг диапазоне IP-адресов и первый IP-адрес, который не удается, статически назначить интерфейс устройства, что IP-адрес.
Кто-нибудь знает, как это будет выглядеть или, если это возможно?
Я могу предоставить кое-что полезное, надеюсь:
Код взят (и, изменен ) из:
эхо-запрос нескольких IP-адресов с помощью bash?
#!/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 netmask 255.255.255.0
Изменить: строка ifconfig (...) предназначена для замены найденным автономным IP-адресом по выбору.
Полужирный текст Это то, что я модифицировал, и пока это, вероятно, не будет работать из коробки; Надеюсь, это может дать некоторое представление о том, как бы вы поступили; Поскольку я не эксперт в bash, я просто надеюсь, что это будет полезно. (Думаю, лучше, чем ничего?)
Если это так или если кто-нибудь найдет что-нибудь такое, то безумие. Совершенно неправильно. Или совершенно неправильно. Пожалуйста, отметьте, что
Вместо проверки связи для 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