diff --git a/set_dhcp_requested_ip.sh b/set_dhcp_requested_ip.sh old mode 100644 new mode 100755 diff --git a/set_static_ip.sh b/set_static_ip.sh new file mode 100755 index 0000000..64f2366 --- /dev/null +++ b/set_static_ip.sh @@ -0,0 +1,81 @@ +#!/usr/bin/env bash +# ============================================================================= +# set_static_ip.sh — задаёт статический IP на сетевом интерфейсе через netplan +# +# ИСПОЛЬЗОВАНИЕ: +# sudo bash set_static_ip.sh [интерфейс] [шлюз] [DNS] +# +# ПРИМЕРЫ: +# sudo bash set_static_ip.sh 192.168.1.50 +# → IP: 192.168.1.50/24, интерфейс: первый найденный, шлюз: .1 +# +# sudo bash set_static_ip.sh 192.168.1.50 eth0 192.168.1.1 8.8.8.8 +# → все параметры заданы явно +# +# ТРЕБОВАНИЯ: Ubuntu/Debian с netplan, запуск от root (sudo) +# ============================================================================= + +set -euo pipefail + +# --- проверка прав --- +if [[ $EUID -ne 0 ]]; then + echo "Ошибка: запустите скрипт через sudo" >&2 + exit 1 +fi + +# --- проверка аргументов --- +if [[ $# -lt 1 ]]; then + echo "Использование: sudo bash $0 [интерфейс] [шлюз] [DNS]" + echo "Пример: sudo bash $0 192.168.1.50" + exit 1 +fi + +DESIRED_IP="$1" + +# --- определяем параметры сети --- +# Берём подсеть /24 и вычисляем шлюз (.1) из IP, если не заданы явно +NETWORK_PREFIX=$(echo "$DESIRED_IP" | cut -d. -f1-3) + +IFACE=${2:-$(ip -o link show | awk -F': ' '$2 !~ /^lo$/ {print $2; exit}')} +GATEWAY=${3:-"${NETWORK_PREFIX}.1"} +DNS=${4:-"8.8.8.8"} +MASK="/24" + +echo "→ Интерфейс : $IFACE" +echo "→ IP : ${DESIRED_IP}${MASK}" +echo "→ Шлюз : $GATEWAY" +echo "→ DNS : $DNS" +echo + +# --- путь к конфигу netplan --- +NETPLAN_FILE="/etc/netplan/99-static-ip.yaml" + +# --- создаём конфиг --- +cat > "$NETPLAN_FILE" <