本文目录导读:

我来帮您编写一个自动绑定地址的脚本,根据您的需求,这里提供几种常见场景的解决方案:
Linux网络接口绑定脚本
#!/bin/bash
# 自动绑定IP地址到网络接口脚本
# 使用方法: ./bind_ip.sh <接口名> <IP地址> <子网掩码>
INTERFACE=${1:-eth0}
IP_ADDRESS=${2:-192.168.1.100}
NETMASK=${3:-255.255.255.0}
echo "正在绑定IP地址到 $INTERFACE..."
# 检查接口是否存在
if ! ip link show "$INTERFACE" &>/dev/null; then
echo "错误: 接口 $INTERFACE 不存在"
exit 1
fi
# 添加IP地址
if ip addr add "$IP_ADDRESS/$NETMASK" dev "$INTERFACE" 2>/dev/null; then
echo "成功绑定 $IP_ADDRESS 到 $INTERFACE"
ip link set "$INTERFACE" up
else
echo "绑定失败,请检查IP地址是否已被使用"
exit 1
fi
批量绑定多个IP地址
#!/bin/bash
# 批量绑定IP地址脚本
CONFIG_FILE="ip_config.txt"
# 检查配置文件是否存在
if [ ! -f "$CONFIG_FILE" ]; then
echo "创建配置文件模板..."
cat > "$CONFIG_FILE" << EOF
# IP地址配置文件格式: 接口名 IP地址 子网掩码
eth0 192.168.1.100 255.255.255.0
eth0 192.168.1.101 255.255.255.0
eth1 10.0.0.100 255.255.255.0
EOF
echo "请编辑 $CONFIG_FILE 后重新运行脚本"
exit 0
fi
echo "开始批量绑定IP地址..."
while IFS=' ' read -r interface ip netmask || [ -n "$interface" ]; do
# 跳过注释行和空行
[[ "$interface" =~ ^#.*$ ]] && continue
[ -z "$interface" ] && continue
echo "绑定 $ip 到 $interface..."
# 检查接口是否存在
if ! ip link show "$interface" &>/dev/null; then
echo "警告: 接口 $interface 不存在,跳过"
continue
fi
# 绑定IP地址
if ip addr add "$ip/$netmask" dev "$interface" 2>/dev/null; then
echo "✓ 成功绑定 $ip 到 $interface"
ip link set "$interface" up
else
echo "✗ 绑定 $ip 失败,可能已被使用"
fi
done < "$CONFIG_FILE"
echo "批量绑定完成"
MAC地址绑定脚本
#!/bin/bash
# MAC地址绑定脚本
INTERFACE=${1:-eth0}
NEW_MAC=${2:-"00:11:22:33:44:55"}
echo "正在绑定MAC地址到 $INTERFACE..."
# 检查接口是否存在
if ! ip link show "$INTERFACE" &>/dev/null; then
echo "错误: 接口 $INTERFACE 不存在"
exit 1
fi
# 关闭接口
ip link set "$INTERFACE" down
# 修改MAC地址
if ip link set "$INTERFACE" address "$NEW_MAC" 2>/dev/null; then
echo "MAC地址已修改为: $NEW_MAC"
# 重新启用接口
ip link set "$INTERFACE" up
echo "接口已重新启用"
else
echo "MAC地址修改失败"
ip link set "$INTERFACE" up
exit 1
fi
Docker容器IP绑定脚本
#!/bin/bash
# Docker容器IP绑定脚本
CONTAINER_NAME=$1
NETWORK_NAME=${2:-bridge}
IP_ADDRESS=${3:-172.17.0.100}
if [ -z "$CONTAINER_NAME" ]; then
echo "使用方法: $0 [容器名] [网络名] [IP地址]"
echo "示例: $0 mycontainer bridge 172.17.0.100"
exit 1
fi
echo "正在绑定IP $IP_ADDRESS 到容器 $CONTAINER_NAME..."
# 连接容器到网络并指定IP
if docker network connect --ip "$IP_ADDRESS" "$NETWORK_NAME" "$CONTAINER_NAME" 2>/dev/null; then
echo "成功绑定IP $IP_ADDRESS 到容器 $CONTAINER_NAME"
docker inspect "$CONTAINER_NAME" | grep -A5 "IPAddress"
else
echo "绑定失败,请检查容器和网络是否存在"
exit 1
fi
DHCP地址绑定脚本
#!/bin/bash
# DHCP地址绑定脚本
# 基于MAC地址绑定固定IP
DHCP_CONFIG="/etc/dhcp/dhcpd.conf"
HOST_NAME=$1
MAC_ADDRESS=$2
FIXED_IP=$3
if [ $# -ne 3 ]; then
echo "使用方法: $0 [主机名] [MAC地址] [固定IP]"
echo "示例: $0 myserver 00:11:22:33:44:55 192.168.1.100"
exit 1
fi
echo "添加DHCP固定IP绑定..."
# 备份配置文件
cp "$DHCP_CONFIG" "${DHCP_CONFIG}.backup"
# 添加主机配置
cat >> "$DHCP_CONFIG" << EOF
host $HOST_NAME {
hardware ethernet $MAC_ADDRESS;
fixed-address $FIXED_IP;
}
EOF
# 重启DHCP服务
if systemctl restart dhcpd 2>/dev/null; then
echo "成功添加DHCP绑定: $HOST_NAME -> $FIXED_IP"
echo "MAC地址: $MAC_ADDRESS"
else
echo "重启DHCP服务失败,请检查配置"
exit 1
fi
使用方法
- 保存脚本:将需要的脚本保存为
.sh文件 - 添加执行权限:
chmod +x script.sh - 运行脚本:
./script.sh [参数]
注意事项
- 管理员权限:大部分网络操作需要root权限,使用
sudo运行 - 配置文件权限:修改系统配置文件时请谨慎
- IP冲突:确保绑定的IP地址未被其他设备使用
- 网络影响:修改网络配置可能会中断现有连接
请根据您的具体需求选择合适的脚本,如果需要其他类型的地址绑定,请说明具体场景。