IT 기술 문서


2025.02.17 11:58

Windows & Linux 네트워크 자동화 스크립트 만들기

  • it33 25일 전 2025.02.17 11:58
  • 35
    0

alt text


PowerShell & Bash를 활용한 네트워크 관리 자동화

네트워크 관리에서 자동화는 중요한 역할을 합니다. Windows PowerShell과 Linux Bash를 사용하면 네트워크 연결 테스트, 장비 상태 확인, 로그 분석 등을 자동화할 수 있습니다. 이번 포스팅에서는 Windows 및 Linux 환경에서 네트워크 관리 작업을 자동화하는 방법을 다뤄보겠습니다.


1. 네트워크 기본 명령어 비교 (Windows & Linux)

기능

Windows (PowerShell)

Linux (Bash)

네트워크 인터페이스 확인

Get-NetIPAddress

ifconfig 또는 ip a

네트워크 연결 확인

Test-Connection

ping

포트 열림 확인

Test-NetConnection

nc -zv 또는 netstat

네트워크 속도 측정

Measure-Command {Test-Connection}

iperf

네트워크 트래픽 분석

Get-NetTCPConnection

ss -tulnp 또는 netstat -an

PowerShell은 Get-Net* 계열 명령어를 제공하며, Linux는 ping, netstat, ss 등의 명령어를 활용합니다.


2. Windows 네트워크 자동화 (PowerShell)

① 네트워크 연결 상태 확인 자동화

PowerShell을 사용하면 여러 개의 IP 주소에 대한 연결 상태를 자동으로 테스트할 수 있습니다.

# 특정 IP 목록에 대해 핑 테스트를 실행하는 PowerShell 스크립트
$servers = @("8.8.8.8", "1.1.1.1", "192.168.1.1")
foreach ($server in $servers) {
    Test-Connection -ComputerName $server -Count 3
}

② 포트 열림 여부 확인

# 특정 IP와 포트에 대한 연결 테스트
$ip = "192.168.1.1"
$port = 80
Test-NetConnection -ComputerName $ip -Port $port

③ 네트워크 인터페이스 정보 확인

# 현재 네트워크 인터페이스 정보 조회
Get-NetIPAddress

④ 자동 네트워크 로그 저장

네트워크 정보를 정기적으로 저장하도록 설정할 수도 있습니다.

Get-NetTCPConnection | Export-Csv C:\logs\network_log.csv -NoTypeInformation

3. Linux 네트워크 자동화 (Bash)

① 네트워크 연결 상태 확인 자동화

Linux에서는 ping 명령어를 반복 실행하여 특정 서버와의 연결 상태를 확인할 수 있습니다.

#!/bin/bash
# 특정 서버들의 연결 상태 확인
targets=("8.8.8.8" "1.1.1.1" "192.168.1.1")
for target in "${targets[@]}"
do
  ping -c 3 $target
  echo "----------------"
done

② 포트 열림 여부 확인

#!/bin/bash
# 특정 서버의 포트가 열려 있는지 확인
nc -zv 192.168.1.1 80

③ 네트워크 인터페이스 정보 확인

#!/bin/bash
# 현재 네트워크 인터페이스 정보 확인
ip a

④ 네트워크 로그 자동 저장

#!/bin/bash
# 네트워크 연결 상태를 로그 파일로 저장
netstat -tulnp > /var/log/network_status_$(date +%Y-%m-%d).log

이 스크립트를 cron에 추가하면 정기적으로 로그를 저장할 수 있습니다.

crontab -e
0 * * * * /home/user/network_check.sh

4. PowerShell vs. Bash 네트워크 자동화 비교

기능

Windows (PowerShell)

Linux (Bash)

네트워크 연결 확인

Test-Connection

ping

포트 열림 확인

Test-NetConnection

nc -zv 또는 netstat

네트워크 인터페이스 조회

Get-NetIPAddress

ip a 또는 ifconfig

자동 로그 저장

Export-Csv 사용 가능

cronawk 활용

GUI 연동 가능 여부

가능

CLI 전용

Windows에서는 PowerShell을 활용하여 GUI 및 CSV 파일과 연동 가능하며, Linux에서는 Bash를 활용하여 크론 작업과 연동하여 정기적인 네트워크 관리를 수행할 수 있습니다.


5. 실무에서의 활용 사례

① 네트워크 장애 자동 감지 및 이메일 알림

Windows (PowerShell):

# 특정 서버가 응답하지 않을 경우 관리자에게 이메일 알림
$server = "8.8.8.8"
if (-not (Test-Connection -ComputerName $server -Count 1 -Quiet)) {
    Send-MailMessage -To "admin@example.com" -From "server@example.com" -Subject "네트워크 장애 발생" -Body "서버 응답 없음" -SmtpServer "smtp.example.com"
}

Linux (Bash + Slack 알림):

#!/bin/bash
# 특정 서버 응답이 없을 경우 Slack 알림
server="8.8.8.8"
if ! ping -c 1 $server &> /dev/null; then
    curl -X POST -H 'Content-type: application/json' --data '{"text":"서버 응답 없음: $server"}' https://hooks.slack.com/services/your-webhook-url
fi

네트워크 자동화를 통한 관리 최적화

PowerShell과 Bash를 활용하면 네트워크 연결 상태를 자동으로 감시하고, 장애 발생 시 즉각 대응할 수 있는 환경을 구축할 수 있습니다. 각 운영체제의 특성을 고려하여 적절한 방법을 선택하여 실무에 적용하세요!

  • 공유링크 복사