Linux

[Linux] Shell Script๋ฅผ ์ด์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ IP ์„ค์ •

The Engineer, Lucy 2025. 6. 25. 14:23

ํ•„์š”ํ•œ ์ •๋ณด

# ๋ฐ๋น„์•ˆ ๊ณ„์—ด์—์„œ ๋„คํŠธ์›Œํฌ ์„ค์ • ๋ฐฉ๋ฒ•
18.04 LTS ๋ฒ„์ „๋ถ€ํ„ฐ netplan ํŒŒ์ผ ์„ค์ •์œผ๋กœ ๋ณ€๊ฒฝ

# ํŽ˜๋„๋ผ ๊ณ„์—ด์—์„œ ๋„คํŠธ์›Œํฌ ์„ค์ • ๋ฐฉ๋ฒ•
8 ๋ฒ„์ „๋ถ€ํ„ฐ nmcli ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ค์ •

# ๋„คํŠธ์›Œํฌ IP ์„ค์ • ์‹œ ํ•„์š”ํ•œ ์ •๋ณด๋“ค
Network Interface Name
IP/CIDR
Gateway
DNS

์Šคํฌ๋ฆฝํŠธ

#!/bin/bash

ostype=$(cat /etc/*releas | grep ID_LIKE | sed "s/ID_LIKE=//;s/\"//g")

echo "=== Network Devices ==="
ip a | grep '^[0-9]' | awk '{print $1" " $2}' | grep -v -e 'lo' -e 'v' -e 't'
read -p "Please input network interface: " net_name
read -p "Please input network ip(ex:192.168.122.10/24): " net_ip
read -p "Please input network gateway: " net_gw
read -p "Please input network dns: " net_dns

if [[ -z $net_name ]] || [[ -z $net_ip ]] || [[ -z $net_gw ]] || [[ -z $net_dns ]]
then
        echo "You need to input network information. Please retry this script"
        exit;
fi

if [[ $ostype == "fedora" ]]
then
        nmcli con add con-name $net_name type ethernet ifname $net_name ipv4.address $net_ip ipv4.gateway $net_gw ipv4.dns $net_nds ipv4.method manual
        nmcli con up $net_name
elif [[ $ostype == "debian" ]]
then
        ip_chk=$(grep $net_name /etc/netplan/*.yaml  wc -l)
        if [ $ip_chk -eq 0 ]
        then
                cat > /etc/netplan/${net_name}.yaml << EOF
network:
  version: 2
  renderer: networkd
  ethernets:
    $net_name:
      dhcp4: no
      dhcp6: no
      addresses: [$net_ip]
      gateway4: $net_gw
      nameservers:
        addresses: [$net_dns]
EOF
                echo "cat /etc/netplan/${net_name}.yaml"
                cat /etc/netplan/${net_name}.yaml
                echo "apply netplan"
                netplan apply
        else
                echo "This $net_name is configured already."
        fi
fi

ํŽ˜๋„๋ผ ๊ณ„์—ด์˜ ๋ ˆ๋“œํ–‡์—์„œ ๋„คํŠธ์›Œํฌ IP๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ๋น„์•ˆ ๊ณ„์—ด์ธ ์šฐ๋ถ„ํˆฌ์—์„œ๋„ ๋„คํŠธ์›Œํฌ IP ์„ค์ • ๊ฐ€๋Šฅ.
๋ ˆ๋“œํ–‡์—์„œ๋Š” sh ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‚˜ ์šฐ๋ถ„ํˆฌ์—์„œ๋Š” bash ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•จ.