PVE自动添加IP地址标签脚本
编辑
17
2025-09-08
一键脚本
wget -O script.sh https://ip-script.zwbcc.cn/set_ip_script.sh && chmod +x script.sh && ./script.sh
必要条件
虚拟机必须安装了qemu-guset-agent
1、安装 QEMU Guest Agent
Ubuntu/Debian 系统
sudo apt update
sudo apt install qemu-guest-agent
sudo systemctl start qemu-guest-agent
sudo systemctl enable qemu-guest-agent
CentOS/RHEL 系统
sudo yum install qemu-guest-agent
sudo systemctl start qemu-guest-agent
sudo systemctl enable qemu-guest-agent
Fedora 系统
sudo dnf install qemu-guest-agent
sudo systemctl start qemu-guest-agent
sudo systemctl enable qemu-guest-agent
验证安装
systemctl status qemu-guest-agent
安装完成后,重启虚拟机以使 guest agent 完全生效。
apt install qemu-guest-agent # debian类别
标签设置
设置标签显示,数据中心➡️选项➡️标记样式设定➡️树形结构,选择完整。
脚本
#!/bin/bash
# ---------------------------
# 脚本说明:
# 遍历本地 PVE 节点所有虚拟机和容器
# QEMU虚拟机 -> 局域网 IP 写入 tags
# LXC容器 -> 局域网 IP 写入 tsgs
# 前提:QEMU虚拟机需安装并运行 qemu-guest-agent
# ---------------------------
echo "开始处理本地节点所有虚拟机和容器..."
# 获取所有 QEMU 虚拟机 ID
QMIDS=$(qm list | awk 'NR>1 {print $1}')
for VMID in $QMIDS; do
echo "处理 QEMU 虚拟机 $VMID ..."
# 获取虚拟机局域网IPv4地址 (10.x.x.x)
IP=$(qm guest cmd $VMID network-get-interfaces 2>/dev/null | \
grep -oP '"ip-address" : "\K10\.[0-9]+\.[0-9]+\.[0-9]+')
if [ -z "$IP" ]; then
echo " 未获取到IP (可能未安装 qemu-guest-agent 或虚拟机未运行)"
continue
fi
echo " 获取到IP: $IP"
# 写入虚拟机tags
qm set $VMID --tags "$IP"
echo " 已将IP写入虚拟机tags"
done
# 获取所有 LXC 容器 ID
CTIDS=$(pct list | awk 'NR>1 {print $1}')
for CTID in $CTIDS; do
echo "处理 LXC 容器 $CTID ..."
# 获取容器局域网IPv4地址 (10.x.x.x)
IP=$(pct exec $CTID -- ip -4 addr show | grep -oP '(?<=inet\s)10\.[0-9]+\.[0-9]+\.[0-9]+')
if [ -z "$IP" ]; then
echo " 未获取到IP (容器未运行或网络未配置)"
continue
fi
echo " 获取到IP: $IP"
# 写入容器 tags
pct set $CTID --tags "$IP"
echo " 已将IP写入容器 tags标签"
done
echo "全部处理完成!"
# 定时任务命令
cron_job="0 2 * * * /bin/bash /root/test.sh >> /var/log/test.log 2>&1"
# 检查任务是否已存在
( crontab -l 2>/dev/null | grep -F "$cron_job" ) >/dev/null
if [ $? -ne 0 ]; then
# 没有就添加
( crontab -l 2>/dev/null; echo "$cron_job" ) | crontab -
echo "定时任务已添加"
else
echo "定时任务已存在"
fi
使用方法
登录 Proxmox VE点击Shell,在任意目录下创建文件,将脚本内容粘贴至该文件中,赋予执行权限后运行即可。
最终效果
脚本添加了定时任务,每天会自动更新
- 0
-
分享