-
Snitch는 기존 ss나 netstat보다 사람이 보기 쉬운 네트워크 연결 검사 도구로, 터미널 UI(TUI)와 스타일링된 표 형식을 지원
-
실시간 인터랙티브 화면 또는 한 번에 출력되는 표 형식으로 연결 상태를 표시하며, TCP/UDP, 리스닝, 연결됨 상태 등 다양한 필터 제공
-
JSON·CSV 출력, DNS/서비스명 해석, 프로세스 감시 및 종료, 자동 업데이트 기능을 포함
-
Homebrew, Go, Nix, Arch Linux, Shell Script, Binary 등 여러 설치 방법을 지원하며, macOS의 Gatekeeper 경고 자동 해제 기능 포함
- 개발자와 시스템 관리자가 네트워크 연결을 직관적으로 모니터링하고 스크립트 자동화에 활용할 수 있는 유용한 도구
개요
- Snitch는 네트워크 연결을 시각적으로 탐색할 수 있는 도구로, ss나 netstat의 대체 도구로 설계
-
TUI 인터페이스 또는 스타일링된 표 출력을 통해 연결 상태를 표시
- Linux와 macOS에서 동작하며, 루트 권한 또는 CAP_NET_ADMIN 권한이 필요할 수 있음
설치 방법
-
Homebrew: brew install snitch 명령으로 설치 가능
-
Go: go install github.com/karol-broda/snitch@latest
-
Nix/NixOS: nix-env -iA nixpkgs.snitch 또는 flake 입력으로 추가 가능
-
Arch Linux (AUR) : yay -S snitch-bin 또는 paru -S snitch-bin
-
Shell Script: curl -sSL ... | sh 명령으로 설치, 기본 경로는 ~/.local/bin 또는 /usr/local/bin
- macOS에서는 설치 스크립트가 자동으로 quarantine 속성 제거
-
Binary 다운로드: GitHub Releases에서 Linux(.tar.gz, .deb, .rpm, .apk) 및 macOS(.tar.gz) 버전 제공
빠른 시작
-
snitch 실행 시 인터랙티브 TUI 실행
-
snitch -l은 리스닝 소켓만 표시, snitch ls는 표 형식으로 출력 후 종료
-
snitch ls -t -e는 TCP 연결된 세션만 표시, snitch ls -p는 파싱 가능한 단순 출력
주요 명령
-
snitch / snitch top : 실시간 갱신되는 연결 목록 표시
- 옵션: -l(리스닝), -t(TCP), -e(연결됨), -i(갱신 주기)
- 키 바인딩: j/k 이동, t/u TCP·UDP 전환, K 프로세스 종료, / 검색, q 종료 등
-
snitch ls : 한 번에 표 출력, 터미널 높이를 초과하면 자동으로 pager 사용
- 출력 형식: 기본 표, -o json, -o csv, -p(단순), --no-headers(헤더 제거)
-
snitch json : JSON 형식 출력으로 스크립트 활용 가능
-
snitch watch : 일정 간격으로 JSON 프레임 스트리밍
-
snitch upgrade : 버전 확인 및 자동 업데이트
필터 및 해석 옵션
- 공통 플래그: -t(TCP), -u(UDP), -l(리스닝), -e(연결됨), -4(IPv4), -6(IPv6)
-
DNS 및 서비스명 해석:
-
--resolve-addrs, --resolve-ports, --no-cache 옵션 지원
- 병렬 DNS 조회 및 캐싱 수행, --no-cache로 캐시 비활성화 가능
-
세부 필터링: key=value 형식으로 프로세스명, 포트, 상태 등 지정 가능
- 예: snitch ls proto=tcp state=listen, snitch ls proc=nginx
출력 형식
-
기본 표 출력: 프로세스명, PID, 프로토콜, 상태, 로컬 주소·포트 표시
-
단순 출력(-p) : 파싱 가능한 텍스트 형태
-
JSON/CSV 출력: 스크립트 자동화 및 로그 분석에 활용 가능
설정 및 환경 변수
- 설정 파일: ~/.config/snitch/snitch.toml
-
numeric, dns_cache, theme(auto/dark/light/mono) 설정 가능
- 환경 변수:
-
SNITCH_THEME, SNITCH_RESOLVE, SNITCH_DNS_CACHE, SNITCH_NO_COLOR, SNITCH_CONFIG 등 지원
시스템 요구사항
-
Linux 또는 macOS 환경 필요
- Linux: /proc/net/*에서 데이터 읽기, 전체 프로세스 정보에는 루트 또는 CAP_NET_ADMIN 권한 필요
- macOS: 시스템 API 사용, 전체 프로세스 정보에는 sudo 필요