Linux 通过脚本互动式设置静态IP

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。Linux 通过脚本互动式设置静态IP,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

CentOS7 静态IP设置脚本

#!/bin/bash
# Auto alter IP script

# Directory for network scripts
NET_DIR="/etc/sysconfig/network-scripts"

# Get non-loopback interfaces
INTERFACES=$(ls /sys/class/net/ | grep -v '^lo')

# Function to choose network interface
choose_interface() {
  PS3="请根据上面提示,输入数字,选择对应的网卡: "
  select INTERFACE in ${INTERFACES}; do
    break
  done
}

# Function to input IP address with validation
get_ip_address() {
  read -p "请输入新IP地址:" IP_ADDR

  # Validate IP format
  while ! [[ ${IP_ADDR} =~ ^[1-2]?[0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; do
    read -p "IP输入不正确,请重新输入:" IP_ADDR
  done
}

# Function to input subnet mask with validation
get_subnet_mask() {
  read -p "请输入子网掩码:" IP_NETMASK

  # Validate subnet mask format
  while ! [[ ${IP_NETMASK} =~ ^[1-2]?[0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; do
    read -p "子网掩码输入不正确,请重新输入:" IP_NETMASK
  done
}

# Function to input gateway address with validation
get_gateway() {
  read -p "请输入网关地址:" IP_GATEWAY

  # Validate gateway format
  while ! [[ ${IP_GATEWAY} =~ ^[1-2]?[0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; do
    read -p "网关输入不正确,请重新输入:" IP_GATEWAY
  done
}

# Check if script is run as root
if [ $UID -ne 0 ]; then
  echo "请用root用户执行本脚本,谢谢"
  exit 1
fi

# Call function to choose network interface
choose_interface

# Call function to input IP address
get_ip_address

# Check if IP conflicts
echo -e "\033[33m 检测IP是否正确及冲突.... \033[0m"
ping -c 2 ${IP_ADDR} | grep "time=" >/dev/null
while [ $? -eq 0 ]; do
  echo -e "\033[33m IP冲突,请重新输入新的IP地址 \033[0m"
  get_ip_address
  echo -e "\033[33m 检测IP是否正确及冲突.... \033[0m"
  ping -c 2 ${IP_ADDR} | grep "time=" >/dev/null
done

# Call functions to input subnet mask and gateway
get_subnet_mask
get_gateway

# Backup network interface configuration file
\cp ${NET_DIR}/ifcfg-${INTERFACE}{,`date +%Y%m%d`.bak}

# Modify network interface configuration file
cat >${NET_DIR}/ifcfg-${INTERFACE} <<EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=${IP_ADDR}
NETMASK=${IP_NETMASK}
GATEWAY=${IP_GATEWAY}
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
ONBOOT=yes
EOF

# Backup DNS configuration file
cp /etc/resolv.conf{,.bak}

# Restart network service
echo -e "\033[32m 重启网络服务中,请使用新IP重新连接,如更改后无法上网,30秒内IP回滚!! \033[0m"
systemctl restart network.service

# Revert DNS configuration file
\cp /etc/resolv.conf.bak /etc/resolv.conf

# Test network connection
echo -e "\033[32m 测试网络是否正常 \033[0m"
ping -c 3 www.baidu.com

if [ $? -eq 0 ]; then
  echo -e "\033[32m IP更改成功,网络正常 \033[0m"
else
  # If network is not reachable, revert to the previous state
  echo -e "\033[33m 无法上网,IP回滚。。。。 \033[0m"
  \mv ${NET_DIR}/ifcfg-${INTERFACE}`date +%Y%m%d`.bak ${NET_DIR}/ifcfg-${INTERFACE}
  systemctl restart network.service
  \cp /etc/resolv.conf.bak /etc/resolv.conf
  ping -c 5 www.baidu.com
  if [ $? -ne 0 ]; then
    echo -e "\033[33m 回滚失败,请检查 \033[0m"
  else
    echo -e "\033[32m 回滚成功,网络正常!! \033[0m"
  fi
fi

Ubuntu22.04 静态IP设置脚本

#!/bin/bash
# 交互式脚本,用于设置静态 IP
echo "此脚本将帮助您设置静态 IP 地址。请提供所需的信息。"
# 交互式输入网络接口名
read -p "请输入网络接口名(例如,ens32): " INTERFACE
# 交互式输入静态 IP 地址
read -p "请输入静态 IP 地址: " STATIC_IP
# 交互式输入网关地址
read -p "请输入网关地址: " GATEWAY
# 交互式输入 DNS 服务器地址列表(逗号分隔)
read -p "请输入 DNS 服务器地址列表(逗号分隔,例如,8.8.8.8,8.8.4.4): " DNS_SERVERS
# 将逗号分隔的DNS地址转换为数组
IFS=',' read -ra DNS_ARRAY <<< "$DNS_SERVERS"
# 备份原始配置文件
cp "/etc/netplan/00-installer-config.yaml" "/etc/netplan/00-installer-config.yaml.bak.$(date +"%Y%m%d%H%M%S")"
# 编辑网络配置文件
echo "编辑 /etc/netplan/00-installer-config.yaml ..."
cat <<EOL | sudo tee /etc/netplan/00-installer-config.yaml > /dev/null
network:
  version: 2
  renderer: networkd
  ethernets:
    $INTERFACE:
      addresses: [$STATIC_IP/24]
      gateway4: $GATEWAY
      nameservers:
        addresses: [$(IFS=, ; echo "${DNS_ARRAY[*]}")]
  version: 2
EOL

# 生成新的MAC地址,防止机器冲突
# 停止网络接口
sudo ifconfig $INTERFACE down
# 生成随机 MAC 地址并设置给网络接口
sudo macchanger -r $INTERFACE
# 启用网络接口
sudo ifconfig $INTERFACE up

# 应用配置
echo "应用网络配置..."
sudo netplan apply

# 显示新的网络配置
echo "新的网络配置:"
ip addr show $INTERFACE
ip route

echo "静态 IP 配置完成。"

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/194636.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!