有没有办法在 Linux 中仅设置静态 IP 的最后 3 位数字?

有没有办法在 Linux 中仅设置静态 IP 的最后 3 位数字?

我需要设置几个 ubuntu 系统,它们最终将插入具有不同 IP 地址的路由器。例如,192.168.1.x 或 192.168.0.x 等。有没有办法根据任何路由器的地址分配静态 IP 地址?假设我希望最后一位数字 (x) 为 77,而不管路由器地址是什么。如果盒子在 192.168.0.x 路由器上,它会将其静态 IP 设置为 192.168.0.77。如果盒子在 192.168.1.x 路由器上,它会将其静态 IP 设置为 192.168.1.77。等等...有没有办法在接口文件或 wpa_supplicant 中执行此操作?

答案1

我编写了一个脚本来检查当前分配的 IP,然后将其更改为以 100 结尾。

仅当您的网络中运行有 DHCP 时,此方法才有效。如果没有,您需要采取一些额外步骤来检查路由器 IP。

#!/bin/bash

#set interface
interface="eth0"

#read current IP address on interface
current_ip=`ifconfig $interface 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://'`
IP=`cut -f1,2,3 -d"." <<< $current_ip`
IP=$IP".100"

#check if IP is taken using ping
count=`ping -c 1 $IP | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }'`

if [ $count -eq 0 ]; then
        #change IP if available
        ifconfig $interface down
        ifconfig $interface $IP up
        ifconfig $interface
else
        #IP change not possible
        echo "IP not available"
fi

检查 IP 是否在网络中被占用时应该提供故障安全保护。

不要忘记您需要 root 权限才能运行它。

相关内容