-
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/uTCP·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필요