每天 Shaarli

一天内的所有链接,汇聚在一个页面上。

June 6, 2026

Note: Debian13 改IP和DNS

set_static_ip.sh

#!/bin/bash
# Debian 13 一键设置静态 IP + DNS 脚本 (ens33)

# -----------------------------
# 1️⃣ 安装 NetworkManager
# -----------------------------
echo "安装 NetworkManager..."
apt update && apt install -y network-manager

# 启动并设置开机自启
systemctl enable --now NetworkManager

# -----------------------------
# 2️⃣ 注释掉 /etc/network/interfaces 中的 ens33 配置
# -----------------------------
echo "注释掉 /etc/network/interfaces 中 ens33 配置..."
if grep -q "iface ens33" /etc/network/interfaces; then
    sed -i '/^allow-hotplug ens33/s/^/#/' /etc/network/interfaces
    sed -i '/^iface ens33/s/^/#/' /etc/network/interfaces
fi

# -----------------------------
# 3️⃣ 重启 NetworkManager
# -----------------------------
echo "重启 NetworkManager..."
systemctl restart NetworkManager

# -----------------------------
# 4️⃣ 删除可能存在的旧连接
# -----------------------------
echo "删除旧的 DHCP 或残留连接..."
OLD_CONN=$(nmcli -t -f NAME connection show | grep ens33)
if [ -n "$OLD_CONN" ]; then
    nmcli connection delete "$OLD_CONN"
fi

# -----------------------------
# 5️⃣ 添加静态 IP + DNS
# -----------------------------
STATIC_IP="192.168.18.18/24"
GATEWAY="192.168.18.1"
DNS="8.8.8.8 223.5.5.5"
CON_NAME="ens33-static"

echo "添加静态 IP + DNS..."
nmcli connection add \
  type ethernet \
  ifname ens33 \
  con-name $CON_NAME \
  ipv4.addresses $STATIC_IP \
  ipv4.gateway $GATEWAY \
  ipv4.dns "$DNS" \
  ipv4.method manual \
  autoconnect yes

# -----------------------------
# 6️⃣ 激活连接
# -----------------------------
echo "激活连接..."
nmcli connection up $CON_NAME

# -----------------------------
# 7️⃣ 显示最终状态
# -----------------------------
echo "最终网络状态:"
nmcli device status
ip a show ens33
resolvectl status ens33

echo "静态 IP 设置完成 ✅"

chmod +x set_static_ip.sh

set_static_ip_interactive.sh

#!/bin/bash
# Debian 13 交互式设置 ens33 静态 IP

# -----------------------------
# 1️⃣ 安装 NetworkManager
# -----------------------------
echo "安装 NetworkManager..."
apt update && apt install -y network-manager
systemctl enable --now NetworkManager

# -----------------------------
# 2️⃣ 注释掉 /etc/network/interfaces 中的 ens33 配置
# -----------------------------
if grep -q "iface ens33" /etc/network/interfaces; then
    echo "注释掉 /etc/network/interfaces 中 ens33 配置..."
    sed -i '/^allow-hotplug ens33/s/^/#/' /etc/network/interfaces
    sed -i '/^iface ens33/s/^/#/' /etc/network/interfaces
fi

# -----------------------------
# 3️⃣ 重启 NetworkManager
# -----------------------------
systemctl restart NetworkManager

# -----------------------------
# 4️⃣ 显示当前网络信息
# -----------------------------
CURRENT_IP=$(ip -4 addr show ens33 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
CURRENT_GATEWAY=$(ip route | grep '^default' | awk '{print $3}')
CURRENT_DNS=$(systemd-resolve --status ens33 | grep 'DNS Servers' | awk -F: '{print $2}' | xargs)

echo ""
echo "当前 ens33 网络信息:"
echo "IP       : $CURRENT_IP"
echo "网关     : $CURRENT_GATEWAY"
echo "DNS      : ${CURRENT_DNS:-8.8.8.8 223.5.5.5}"
echo ""

# -----------------------------
# 5️⃣ 读取新 IP
# -----------------------------
read -p "请输入新的静态 IP (格式 192.168.18.xxx/24) :" NEW_IP
DNS="8.8.8.8 223.5.5.5"
CON_NAME="ens33-static"

# -----------------------------
# 6️⃣ 删除旧连接
# -----------------------------
OLD_CONN=$(nmcli -t -f NAME connection show | grep ens33)
if [ -n "$OLD_CONN" ]; then
    nmcli connection delete "$OLD_CONN"
fi

# -----------------------------
# 7️⃣ 添加新静态 IP + DNS
# -----------------------------
nmcli connection add \
  type ethernet \
  ifname ens33 \
  con-name $CON_NAME \
  ipv4.addresses $NEW_IP \
  ipv4.gateway $CURRENT_GATEWAY \
  ipv4.dns "$DNS" \
  ipv4.method manual \
  autoconnect yes

# -----------------------------
# 8️⃣ 激活连接
# -----------------------------
nmcli connection up $CON_NAME

# -----------------------------
# 9️⃣ 显示最终状态
# -----------------------------
echo ""
echo "新网络状态:"
nmcli device status
ip a show ens33
resolvectl status ens33

echo "静态 IP 设置完成 ✅"

chmod +x set_static_ip_interactive.sh

set-ip.sh

#!/bin/bash

set -e

DNS_SERVERS="8.8.8.8 223.5.5.5"

echo "==== Debian 静态IP配置工具 ===="
echo

# 安装 NetworkManager
if ! command -v nmcli >/dev/null 2>&1; then
    echo "安装 NetworkManager..."
    apt update
    apt install -y network-manager
fi

systemctl enable --now NetworkManager >/dev/null 2>&1 || true

# 获取默认网卡
IFACE=$(ip route | awk '/default/ {print $5; exit}')

if [ -z "$IFACE" ]; then
    echo "未找到默认网卡"
    exit 1
fi

echo "检测到网卡: $IFACE"

# 注释 interfaces 配置
if [ -f /etc/network/interfaces ]; then
    sed -i "/allow-hotplug $IFACE/s/^/#/" /etc/network/interfaces
    sed -i "/iface $IFACE inet/s/^/#/" /etc/network/interfaces
fi

systemctl restart NetworkManager

CURRENT_IP=$(ip -4 addr show "$IFACE" | awk '/inet /{print $2; exit}')
CURRENT_GW=$(ip route | awk '/default/ {print $3; exit}')

echo
echo "当前配置:"
echo "IP      : $CURRENT_IP"
echo "网关    : $CURRENT_GW"
echo "DNS     : $DNS_SERVERS"
echo

read -p "请输入新的静态IP(直接回车保持当前IP): " NEW_IP

if [ -z "$NEW_IP" ]; then
    NEW_IP="$CURRENT_IP"
    echo "保持当前IP: $NEW_IP"
fi

CON_NAME="${IFACE}-static"

# 删除旧连接
nmcli -t -f NAME connection show | grep "^${CON_NAME}$" >/dev/null 2>&1 && \
nmcli connection delete "$CON_NAME" >/dev/null

# 创建新连接
nmcli connection add \
    type ethernet \
    ifname "$IFACE" \
    con-name "$CON_NAME" \
    ipv4.addresses "$NEW_IP" \
    ipv4.gateway "$CURRENT_GW" \
    ipv4.dns "$DNS_SERVERS" \
    ipv4.method manual \
    autoconnect yes >/dev/null

nmcli connection up "$CON_NAME"

echo
echo "==== 配置完成 ===="
echo

ip -4 addr show "$IFACE" | grep inet
echo
ip route | grep default
echo
echo "DNS:"
resolvectl dns "$IFACE" 2>/dev/null || true

echo
echo "完成."

chmod +x set-ip.sh