[DevOps] 6. 네트워크 트래픽 (스크립트)

GisangLee·2025년 7월 9일
0

devops

목록 보기
6/11

IP 할당을 관리하던 파일에 문제가 생겼다. 주어진 IP 대역 중에 어떤 주소가 비어있는지 확인이필요하다.

주요 명령어

| seq

  • 순차적으로 프린트
  • seq 254: 1 ~ 254
  • seq 100 200: 100 ~ 200

| tee

  • 표준에서 읽어서 표준 출력도 하지만, 파일에도 쓰게끔 하는 명령어 (-a : --append)

| ping

  • -c1 (count 1번)
  • -w1 (deadlint 1초)

스크립트

#!/bin/bash

# 🎨 스타일 정의
bold=$(tput bold)
normal=$(tput sgr0)
green="\033[1;32m"
red="\033[1;31m"
cyan="\033[1;36m"
blue="\033[1;34m"
reset="\033[0m"

function title()   { echo -e "${blue}${bold}🔷 $1${reset}"; }
function success() { echo -e "${green}$1${reset}"; }
function error()   { echo -e "${red}$1${reset}"; }
function info()    { echo -e "${cyan}📡 $1${reset}"; }

# 초기 설정
LOG=ping.log
PREFIX="192.168.0"
START=1
END=254
alive=0
dead=0

# 로그 초기화
> "$LOG"

echo
title "📊 Ping Sweep Report"
echo "🌐 Target Range : ${PREFIX}.1 ~ ${PREFIX}.${END}"
echo "🕒 Started at    : $(date '+%F %T')"
echo "📄 Log File      : $LOG"
echo "──────────────────────────────────────────────"

# 스캔 시작
for i in $(seq $START $END); do
  (
    IP="${PREFIX}.${i}"
    if ping -c1 -W1 "$IP" &>/dev/null; then
      echo "${IP} is alive" >> "$LOG"
      success "$IP is alive"
    else
      echo "${IP} is dead" >> "$LOG"
      error "$IP is dead"
    fi
  ) &
done

# 모든 백그라운드 작업 대기
wait

# 결과 요약
echo
title "📋 Summary"

alive=$(grep -c "is alive" "$LOG")
dead=$(grep -c "is dead" "$LOG")
echo -e "✅ ${green}Alive Hosts : $alive${reset}"
echo -e "❌ ${red}Dead Hosts  : $dead${reset}"
echo
title "🏁 Done at $(date '+%F %T')"
echo
profile
포폴 및 이력서 : https://upbeat-suede-20b.notion.site/2265782662ce8071aeb7f67163e63467?source=copy_link

0개의 댓글