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