IT 기술 문서
Windows & Linux 네트워크 자동화 스크립트 만들기
- it33 25일 전 2025.02.17 11:58
-
35
0
PowerShell & Bash를 활용한 네트워크 관리 자동화
네트워크 관리에서 자동화는 중요한 역할을 합니다. Windows PowerShell과 Linux Bash를 사용하면 네트워크 연결 테스트, 장비 상태 확인, 로그 분석 등을 자동화할 수 있습니다. 이번 포스팅에서는 Windows 및 Linux 환경에서 네트워크 관리 작업을 자동화하는 방법을 다뤄보겠습니다.
1. 네트워크 기본 명령어 비교 (Windows & Linux)
기능 | Windows (PowerShell) | Linux (Bash) |
---|---|---|
네트워크 인터페이스 확인 |
|
|
네트워크 연결 확인 |
|
|
포트 열림 확인 |
|
|
네트워크 속도 측정 |
|
|
네트워크 트래픽 분석 |
|
|
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) |
---|---|---|
네트워크 연결 확인 |
|
|
포트 열림 확인 |
|
|
네트워크 인터페이스 조회 |
|
|
자동 로그 저장 |
|
|
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를 활용하면 네트워크 연결 상태를 자동으로 감시하고, 장애 발생 시 즉각 대응할 수 있는 환경을 구축할 수 있습니다. 각 운영체제의 특성을 고려하여 적절한 방법을 선택하여 실무에 적용하세요!
- 이전글Windows 방화벽 & Linux iptables/firewalld 설정 및 활용법2025.02.17
- 다음글Windows & Linux 로그 파일 분석 및 자동 보고서 생성하기2025.02.17
댓글목록
등록된 댓글이 없습니다.