温馨提示×

Linux DHCP脚本编写:自动化管理

小樊
38
2025-10-18 03:43:37
栏目: 智能运维

在Linux系统中,DHCP(动态主机配置协议)服务通常由isc-dhcp-server软件包提供。为了自动化管理DHCP配置,你可以编写脚本来动态地添加、修改或删除DHCP租约和配置。

以下是一个简单的示例,展示如何使用Bash脚本自动化管理DHCP配置。这个脚本将添加一个新的DHCP租约到指定的子网中。

前提条件

  1. 安装isc-dhcp-server

    sudo apt-get update
    sudo apt-get install isc-dhcp-server
    
  2. 配置/etc/dhcp/dhcpd.conf文件,确保你的子网配置正确。

脚本示例

创建一个名为add_dhcp_lease.sh的脚本文件:

#!/bin/bash

# 参数检查
if [ "$#" -ne 3 ]; then
    echo "Usage: $0 <subnet> <ip_address> <mac_address>"
    exit 1
fi

SUBNET=$1
IP_ADDRESS=$2
MAC_ADDRESS=$3

# 检查IP地址是否在指定子网内
if ! ip addr show dev eth0 | grep -q "$IP_ADDRESS"; then
    echo "IP address $IP_ADDRESS is not in subnet $SUBNET"
    exit 1
fi

# 检查MAC地址是否有效
if ! macchanger -m "$MAC_ADDRESS" > /dev/null 2>&1; then
    echo "Invalid MAC address $MAC_ADDRESS"
    exit 1
fi

# 添加DHCP租约
LEASE_FILE="/var/lib/dhcp/dhcpd.leases"
LEASE_ENTRY=$(cat <<EOF
lease $IP_ADDRESS {
    hardware ethernet $MAC_ADDRESS;
    fixed-address $IP_ADDRESS;
    option subnet-mask 255.255.255.0;
    option routers 192.168.1.1;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
}
EOF
)

# 将新的租约条目追加到租约文件中
echo "$LEASE_ENTRY" >> "$LEASE_FILE"

# 重启DHCP服务以应用更改
sudo systemctl restart isc-dhcp-server

echo "DHCP lease for $IP_ADDRESS added successfully."

使用脚本

  1. 赋予脚本执行权限:

    chmod +x add_dhcp_lease.sh
    
  2. 运行脚本:

    sudo ./add_dhcp_lease.sh 192.168.1.0 192.168.1.100 00:11:22:33:44:55
    

注意事项

  1. 权限:修改DHCP配置文件和租约文件需要root权限,因此脚本需要以root用户运行。
  2. IP地址冲突:确保添加的IP地址在指定子网内且未被其他设备使用。
  3. MAC地址格式:确保MAC地址格式正确,例如00:11:22:33:44:55

通过这种方式,你可以自动化管理DHCP租约和配置,提高管理效率。根据实际需求,你可以进一步扩展脚本功能,例如删除租约、查询租约等。

0