
nmlinux v1.7.11
Linux용 통합 네트워크 툴킷 — Python 3 + PySide6
NMLinux · v1.7.11
Linux 및 macOS를 위한 통합 네트워크 툴킷 — 검사, 연결, 진단.
NMLinux는 29개의 네트워크 모듈을 하나의 창에 통합한 단일 GUI입니다: 인터페이스 모니터링, Wi-Fi, DNS, SSH 터미널, 방화벽 뷰어, 토폴로지 맵, traceroute 등이 포함됩니다. Python과 PySide6(Qt 6)로 처음부터 구축되었으며, 8개 인터페이스 언어를 지원하고 표준 시스템 도구 외에는 외부 종속성이 없습니다.
[!NOTE] NMLinux는 Linux 시스템 데몬
/usr/bin/NetworkManager(Red Hat/GNOME의 NetworkManager)와 관련이 없습니다. NMLinux는 Python과 PySide6로 처음부터 구축된 독립 프로젝트입니다.
Claude Code(Anthropic)와 저자의 기여로 제작되었습니다.
개발 프로세스
NMLinux는 AI 지원으로 구축되었습니다 — 구체적으로는 Claude Code이며, 이는 이 저장소 어디에도 숨겨져 있지 않습니다. 오늘날 거의 모든 진지한 소프트웨어 프로젝트는 명시하든 하지 않든 파이프라인 어딘가에서 AI를 사용합니다. 따라서 "AI가 관여했는가"는 흥미로운 질문이 아닙니다. 흥미로운 질문은: AI가 무언가 잘못했을 때 그것을 잡아내는 무언가가 있는가입니다.
제 말을 믿기보다 직접 확인하고 싶다면, 다음과 같은 것들이 그 역할을 합니다:
- 162개 테스트 —
pytest tests/ -v. 순수 로직에 더해 실제 Qt 위젯 테스트(메뉴, 테이블) 몇 개가 포함되어 있으며, 흥미로운 부분을 mocking으로 대체하지 않습니다. docs/Decisions-Techniques.md— 명확하지 않은 모든 기술적 결정, 기각된 대안, 발견되어 수정된 버그(AI가 유발한 것 포함)와 그 근거가 기록되어 있습니다.docs/Architecture.md및docs/Carte-des-Modules.md— 코드의 실제 구조를 배포되는 내용과 동기화하여 유지합니다.- 모든 릴리스 전에 실행되는 i18n 일관성 검사로 8개 지원 언어에서 누락된 번역 키를 찾아냅니다.
이러한 것들은 AI를 신뢰할 수 없기 때문에 존재하는 것이 아닙니다. 손으로 작성한 코드를 포함해, 검증 프로세스 없이 배포되어서는 안 되기 때문에 존재합니다. 결과물과 검증 방식을 평가하세요, 작성에 도움을 준 도구가 아니라.
그래도 버그를 발견했다면? 그것은 부끄러운 일이 아니라 유용한 일입니다 — 이슈를 열어주세요.
커뮤니티
GitHub Discussions가 열려 있습니다 — 피드백을 공유하고, 아이디어를 제보하고, 질문하거나 그냥 인사해 보세요. 저자는 인프라 및 운영 분야에서 30년 이상의 경력을 갖고 있으며, Linux에도 좋고 무료이며 단순한 소프트웨어가 존재해야 한다는 신념으로 이 도구를 만들었습니다.
스크린샷
Linux 스크린샷은 v1.2.7, macOS 스크린샷은 v1.3.5 기준입니다. 이 앱은 현재 29개 모듈과 8개 인터페이스 언어(FR/EN/ES/DE/IT/PT/JA/ZH)를 지원합니다.
Linux (KDE)
| Dashboard | Topology |
|---|---|
![]() | ![]() |
| Traceroute | Wi-Fi |
|---|---|
![]() | ![]() |
macOS
| Dashboard | Traceroute |
|---|---|
![]() | ![]() |
변경 내역
v1.7.11 — 2026-08-03
- Flatpak 패키징(KDE Linux):
packaging/flatpak/아래의 로컬 빌드 매니페스트는 KDE Linux 및 기타 Flatpak 전용 배포판을 대상으로 합니다. nmlinux가 외부 명령으로 호출하는 호스트 CLI 도구(nmcli,pkexec,mount.cifs,ssh,nmap, …)는 각각을 개별적으로 샌드박싱하는 대신PATH의flatpak-spawn --host셔를 통해 연결됩니다; PySide6는 PyPI 휠 대신 Flathub의io.qt.PySide.BaseApp에서 가져옵니다. Flathub에는 게시되지 않으며 —packaging/flatpak/build-bundle.sh로 단일.flatpak번들을 빌드하여 AppImage와 동일한 방식으로 각 릴리스에 첨부합니다.
v1.7.10 — 2026-08-03
- SSH 터미널 — 수정: 세션 시작 시 터미널 위젯의 실제 크기가 아직 알려지지 않은 경우 PTY가 잘못된 크기(기본 24×80)로 시작되어 크기 조정 요청이 조용히 유실되는 경쟁 조건(race condition)을 수정했습니다. 이로 인해 원격 전체 화면 앱(예: Claude Code CLI, htop, vim)이 실제 창 크기와 동기화되지 않아 화면 하단에 새 출력이 스크롤되어 지나가야만 지워지는 오래된/잔여 텍스트가 남는 문제가 발생했습니다. 사용자가 보고했으며, 실제 대화형 세션으로 재현했습니다.
v1.7.9 — 2026-08-02
- SSH 터미널 — 복사/붙여넣기: 마우스로 텍스트를 선택하고(클릭-드래그, 강조 표시),
Ctrl+Shift+C또는 오른쪽 클릭 메뉴로 복사하며,Ctrl+Shift+V(기존)로 붙여넣습니다. 이전에는 텍스트 선택 기능 자체가 없어 복사가 불가능했습니다. - SSH 터미널 — 다중 동시 세션: SSH 페이지는 이제 단일 공유 세션 대신 각 연결을 자체 탭에서 엽니다. 저장된 연결에 다시 연결하면 — 같은 연결을 두 번이라도 — 작동하는 대체 세션을 열지 않고 활성 세션을 종료하곤 했습니다; 이제 모든 연결 액션은 새롭고 독립적인 탭을 엽니다.
v1.7.8 — 2026-07-14
- 속도 테스트 — 새로운 LAN(iperf3) 탭: 기존 인터넷 속도 테스트와 함께, 새 탭은 번들된 공용 서버 목록(26개국) 또는 저장된 사용자 지정 서버(예: 내부 조직 서버)를 대상으로 클라이언트 전용
iperf3테스트를 실행합니다. TCP/UDP, IPv4/IPv6/자동 및 역방향(다운로드) 방향을 지원하며, UDP 테스트에는 지터/손실이 표시됩니다. issue #6에서 제안되었습니다. - 새로운 선택적 종속성:
iperf3— LAN 탭을 활성화하려면 설치하세요; 그렇지 않으면 탭에 배너가 표시되고 비활성 상태로 유지됩니다.
v1.7.6 — 2026-07-05
- 자산 인벤토리 — 오른쪽 클릭 새로고침: 이미 스캔된 행 하나 이상을 오른쪽 클릭하고(다중 선택 지원) "Refresh selected"를 선택하면 전체 네트워크 스캔을 다시 실행하지 않고 해당 호스트만 제자리에서 재스캔합니다.
- 자산 인벤토리 — SSH 인증 실패 피드백: 거부된 SSH 로그인은 이제 조용히 실패하는 대신 "SSH auth failed"를 표시하며, Nmap으로 감지된 호스트 이름/OS 기준 정보를 잃지 않습니다 — 실제 Synology NAS에서 확인했으며, 다른 구성된 자격 증명 세트가 먼저 시도된 후 DSM의 Auto Block이 올바른 비밀번호를 거부하는 경우였습니다.
v1.7.5 — 2026-07-04
- 핑 모니터 — 저장된 대상 디렉터리: 새로운 왼쪽 패널에서 핑 대상(이름, 호스트, 간격)을 영구 목록에 저장할 수 있어, 모니터링 중인 호스트를 다시 입력할 필요 없이 앱 재시작 후에도 유지됩니다. 활성 모니터링 중인 각 행의 ★ 버튼은 세션 중 언제든 해당 호스트를 디렉터리에 저장합니다 — 앱이 예기치 않게 종료되기 전에 미리 계획해 둘 필요가 없습니다.
- 핑 모니터 — "Start monitoring": 저장된 대상을 선택하고 저장된 간격을 재사용하여 한 번의 클릭으로 모니터링을 시작합니다.
v1.7.4 — 2026-07-04
- 자산 인벤토리 — 비일관적인 스캔 결과 수정: 활성 검사가 재시도 없이 1초 타임아웃 핑 한 번만 보내서, 스캐너 자체의 동시 부하(한 번에 최대 40개 호스트 프로빙) 또는 Wi-Fi 호스트가 비콘 사이에 잠시 절전 상태일 때 실제 장치를 놓칠 수 있었습니다 — 동일 범위를 반복 실행할 때 장치 수가 다르게 나온 실제 서브넷에서 실측 확인했습니다. 이제 검사는 TCP 포트 프로브로 폴백하기 전에 핑을 재시도합니다.
- 자산 인벤토리 — 새로운 "Refresh empty" 버튼: 스캔 후 전체 범위를 다시 스캔하는 대신 데이터를 반환하지 않은 IP만 재스캔합니다; 새로 발견된 호스트는 기존 결과에 병합됩니다.
v1.7.3 — 2026-07-03
- SMB — 오른쪽 클릭 메뉴에서 공유 마운트: SMB 탭에서 공유를 오른쪽 클릭하고 Mount/Unmount를 선택하면 일시적인 탐색 뷰가 아닌 터미널과 다른 앱에서 사용할 수 있는 안정적인 로컬 경로(
~/mnt/<host>_<share>)에 마운트합니다. 세션 전용(fstab/systemd 영속성 없음)이며, 기존 사용자/비밀번호 필드의 자격 증명을 재사용합니다. Linux는 제한된 권한의 자격 증명 파일(ps로 노출되지 않음)과 함께pkexec mount -t cifs를 사용합니다; macOS는mount_smbfs를 직접 사용합니다. 서버가 기본 협상을 거부하면(오래된 NAS 장치에서 흔함) 이전 SMB 방언(vers=2.0)으로 자동 재시도합니다 — 두 시도 모두 전용 헬퍼 프로세스를 통해 단일 인증 프롬프트에서 이루어집니다. - 새로운 선택적 종속성: SMB 마운트용
cifs-utils(Linux); macOS에는 내장되어 있습니다.
v1.7.2 — 2026-07-03
- macOS 설치 — 새 Mac에서 발견된 두 가지 부트스트랩 버그 수정:
bootstrap_macos.sh는 더 이상 Homebrew 설치 프로그램에NONINTERACTIVE=1을 강제하지 않습니다. 기존에는 sudo 비밀번호를 묻지 않고 새 관리자 계정에서 즉시 중단되었습니다; 문서화된 원라이너는 이제 직접bash로 파이프하는 대신 먼저 스크립트를 다운로드합니다. 중첩된 대화형 단계(Xcode CLT 설치 프로그램, Homebrew 자체의 sudo 프롬프트)가 파이프 시 외부 스크립트의 입력 스트림을 방해할 수 있기 때문입니다. - 범용 오른쪽 클릭 메뉴 — SMB 추가: v1.7.0에서 제공된 모듈 간 오른쪽 클릭 시스템에서
SmbNfsPage는 유일하게 누락된 대상 페이지였습니다; 이제 호스트를 오른쪽 클릭하고 SMB를 선택하면 호스트 필드가 미리 채워지고 즉시 스캔이 시작되며, 포트 445가 열린 것으로 감지되면 메뉴에서 굵게 표시됩니다. - i18n — 나머지 대시보드 문자열 번역: 게이트웨이 지연 시간 레이블, TLS Watchlist 카드 제목 및 상태 행이 여전히 하드코딩된 프랑스어였습니다; 이제 8개 인터페이스 언어 모두로 번역되었습니다.
v1.7.1 — 2026-07-02
- macOS 26 (Tahoe) — Wi-Fi SSID 수정: 기본 데이터 소스를
system_profiler(위치 서비스 없이는<redacted>반환)에서 CoreWLAN으로 전환했습니다; 앱은 이제 첫 실행 시 위치 서비스 권한을 요청합니다; 권한이 부여되면 Wi-Fi 페이지에 실제 이름의 모든 네트워크가 표시됩니다. - macOS — 연결 관리자: 연결된 SSID를 이제 CoreWLAN으로 읽으며, 보안 모드는
system_profiler를 사용합니다. - macOS — SMB: NAS가 자격 증명을 요구할 때 명확한 "인증 필요" 메시지 표시; Homebrew smbclient의 불필요한 smb.conf 경고 수정.
- macOS — 첫 번째 위치 서비스 권한 대화상자 후 종료 시 발생할 수 있는 충돌 수정.
v1.7.0 — 2026-07-02
- 모든 IP 또는 호스트 이름이 포함된 테이블의 범용 오른쪽 클릭 컨텍스트 메뉴 — 복사-붙여넣기 없이 모듈 간 직접 이동: 발견된 호스트를 오른쪽 클릭하고 Ping, Scan ports, Whois, DNS, Traceroute, MTR, SSH, RDP, VNC, View in Topology 또는 Add to Inventory를 선택하세요. 해당 포트가 열린 것으로 감지되면 SSH/RDP/VNC 메뉴 항목이 굵게 표시됩니다. 레이블은 8개 인터페이스 언어 모두로 완전히 번역되어 있습니다.
- 소스 페이지(오른쪽 클릭 액션 생성): IP Scanner, Nmap, Ping, Port Scanner, Traceroute, MTR, Topology(노드 오른쪽 클릭)
- 대상 페이지(호스트를 받아 미리 채움): Whois(
set_target+ 자동 쿼리), DNS(set_target사전 채움만), Ping(set_target+ 자동 시작), Traceroute(set_target+ 자동 시작), MTR(set_target+ 자동 시작), Port Scanner(set_target+ 포커스), SSH / RDP / VNC(set_target시 미리 채워진 새 연결 양식 열림), Topology(load_hosts는 재스캔 없이 IP Scanner/Nmap 스캔의 노드를 주입 — 게이트웨이 자동 감지, 엣지 그리기, 원본 노드 빨간색 강조), Asset Inventory(prefill_hosts는 발견된 호스트에서 직접 자격 증명 스캔 시작, ICMP 발견 단계 건너뜀) - 대시보드 — 게이트웨이 핑 그래프: 2초마다 업데이트되는 실시간 지연 시간 스파크라인; 색상 코드(<20 ms 녹색 / 20–100 ms 주황색 / >100 ms 빨간색 / 타임아웃 빨간색)
- 대시보드 — TLS Watchlist 요약: 대시보드의 상태 카드가 재쿼리 없이 TLS Watchlist 상태(OK / 만료 임박 / 경고)를 자동으로 반영합니다.
- 대시보드 — 지리 지도 크기 조정: 창 크기를 조정하면 세계 지도가 이제 가로로 확장됩니다.
v1.6.4 — 2026-06-28
- macOS: 메뉴 바가 이제 Python 대신 NMLinux를 표시합니다 — 근본 원인:
exec()로 Python에 진입한 후NSBundle.mainBundle()이 Qt가 QApplication 구성 중에 읽는Python.framework번들(CFBundleName = "Python")으로 확인됩니다; 애플리케이션 메뉴가 생성되기 전에 번들의infoDictionary()를 패치하고 AppKit을 통해 네이티브 메뉴 항목 이름을 변경하여 수정했습니다.
v1.6.3 — 2026-06-28
- macOS:
pyobjc-framework-Cocoa를 통한NSProcessInfo.setProcessName_을 사용한 메뉴 바 수정의 첫 시도(v1.6.4로 대체됨)
v1.6.2 — 2026-06-28
- macOS:
install_macos_app.sh에서 bash 런처 스크립트를 컴파일된 C 스텁으로 교체하여 macOS가.app번들을 실행 중인 프로세스와 올바르게 연결하도록 했습니다; 폴백으로setprogname및sys.argv[0]오버라이드를 추가했습니다.
v1.6.1 — 2026-06-25
- SSH 터미널 — 원격 에코 수정: 내장 SSH 터미널에서 입력한 키 입력이 원격 셸로 전송되었지만 다시 에코되지 않았습니다(로그인 후 키보드가 "죽은" 것처럼 보임). nmlinux가 로컬 PTY 에코를 강제로 끄도록 했고, ssh가 해당 터미널 모드(pty-req)를 통해 "에코 없음"을 원격 pty로 전파하여 원격 셸이 입력 에코를 중단했습니다. 새 Ubuntu 26.04 VM에서 재현했습니다(최신 OpenSSH는 이러한 모드를 충실히 적용합니다). 이제 터미널은 PTY를 일반 모드로 유지하고 ssh가 에코를 관리하도록 하여 실제 터미널 에뮬레이터와 일치합니다.
v1.6.0 — 2026-06-24
- 자산 인벤토리 — WinRM Windows(완전): Windows 방화벽이 ICMP를 차단할 때 TCP 포트 프로브로 호스트 감지; PowerShell은 이제 cmd.exe가 파이프
|를 해석하지 못하도록 전체 절대 경로 + **EncodedCommand(base64)**를 사용합니다; 관리자 권한 없이 전체 폴백 체인: OS는ver, CPU는 레지스트리, RAM은systeminfo, 디스크는wmic→fsutil(로케일 인식 EN 쉼표 / FR 공백) →dir /-C - 자산 인벤토리 — 다중 자격 증명 SSH: 여러 SSH 자격 증명 세트 지원; macOS 디스크 수정(
/System/Volumes/Data), Apple Silicon CPU 폴백(hw.model), Synology(/volume1), Unraid(/mnt/user) - 버그 수정: WinRM 오류가 이제 조용한 폴백 대신 테이블에 표시됩니다; WinRM/SNMP 호스트 감지가 더 이상 SSH 자격 증명 존재로 차단되지 않습니다; pywinrm 타임아웃 수정.
v1.5.3 — 2026-06-24
- macOS .app — Homebrew 도구 감지: Homebrew로 설치된
sshpass,nmap,snmpget을 이제 절대 경로로 찾아 호출합니다; macOS의.app번들은 Homebrew PATH(/opt/homebrew/bin,/usr/local/bin)를 상속하지 않으므로 기존에 설치된 도구가 조용히 무시되었습니다. - macOS 업데이트 경로: 저장소 루트에서
git pull && bash packaging/install_macos_app.sh를 실행하는 것이 이제 문서화된 업그레이드 방법입니다; 스크립트는 자체 venv(~/.local/share/nmlinux/venv)를 관리하며 시스템 레벨의pip또는pipx가 필요하지 않습니다.
v1.5.2 — 2026-06-24
- 자산 인벤토리 — 새 모듈(29번째); CIDR 범위를 스캔하고 SSH, WinRM, SNMP 또는 Nmap을 통해 각 호스트에서 OS, CPU, RAM, 디스크 및 업타임을 수집합니다; 프로토콜별 다중 자격 증명 세트 지원(각각 순서대로 시도); 무보존 정책: 자격 증명을 디스크에 절대 기록하지 않으며 스캔 후 메모리에서 제거됩니다; 결과를 JSON, CSV 또는 Markdown으로 내보내기; 대시보드 IP Geolocation 섹션에 애니메이션 지리 지도 추가.
- SSH 수집 수정: 디스크 명령의 awk 따옴표 오류 수정;
free -h를 BusyBox 호환free로 대체; macOS 코드 경로는 이제 OS 이름에sw_vers, Apple Silicon CPU에hw.model폴백, APFS 사용자 데이터 볼륨에/System/Volumes/Data를 사용합니다; Synology/Unraid 볼륨(/volume1,/mnt/user)을 루트보다 먼저 감지;df | tail -1 || …의 오탐 패턴을test -d가드로 수정;lsb_release출력에서 주변 따옴표 제거; 다중 SSH/WinRM 자격 증명 세트 지원(호스트별로 각각 순서대로 시도).
v1.5.0 — 2026-06-17
- 파일 전송 서버 — 앱에서 직접 경량 TFTP 또는 HTTP 서버를 시작/중지하는 새 모듈; 대표적인 사용 사례: 라우터, 스위치 또는 프린터 구성 백업 및 복원; 한 번에 하나의 서버만 활성화(TFTP 또는 HTTP), 포트와 루트 디렉터리 구성 가능, 로컬 IP가 클립보드 복사 버튼으로 표시됩니다; HTTP는 디렉터리 목록(LAN의 모든 브라우저에서 탐색), GET(다운로드) 및 POST/PUT(업로드)을 포함합니다; TFTP는 GET 및 PUT(양방향)을 지원하며, 포트 69는 root 권한이 필요 — 권한 오류 시 앱에 "Start as root (pkexec)" 버튼이 표시됩니다; 실시간 전송 로그 테이블(타임스탬프, 파일 이름, 클라이언트 IP, 방향 ↑/↓, 크기); 포트 순회 보호; 8개 인터페이스 언어; 새 종속성:
tftpy.
v1.4.3 — 2026-06-14
- TLS Watchlist 수정: 자체 서명 및 신뢰할 수 없는 인증서가 이제 녹색 대신 "⚠ Invalid / untrusted cert"(주황색)로 올바르게 표시됩니다; SSL 예외 처리를 모든
ssl.SSLError하위 클래스를 포괄하도록 확장; 항목은 이제 백그라운드 검사 중 "… (checking)"을 표시하고 호스트에 연결할 수 없으면 "— (unreachable)"을 표시합니다.
v1.4.2 — 2026-06-14
- TLS Watchlist — 인증서 만료를 모니터링할 호스트 이름의 영구 목록;
+ Watch(현재 호스트/포트 사용) 또는 패널에서 수동으로 호스트 추가; 백그라운드 검사는 실행 2초 후 자동으로 수행됩니다; 사이드바의 "TLS Inspector" 항목에 색상 점이 표시됩니다: 인증서가 만료되면 빨간색, 30일 이내에 만료되면 주황색; 패널의 재검사 버튼; 목록은 항목별 상태(✓ / ⚠ / EXPIRED)를 색상 코드로 표시합니다.
v1.4.1 — 2026-06-14
- macOS — IP 스캐너: macOS에서 MAC 주소, 벤더 및 인터페이스 조회 수정;
_arp_entry()는 이제 Linux 전용인/proc/net/arp를 읽는 대신 macOS에서arp -n <ip>를 호출하고 출력 형식(? (IP) at AA:BB:CC on en0)을 파싱합니다; 네 개의 스캐너 열이 모두 macOS에서 올바르게 채워집니다. - VNC 도움말: Linux에는 기본 VNC 서버가 없으며 설치할 수 있는 일반적인 옵션(x11vnc, tigervnc-server, wayvnc)을 설명하는 메모를 8개 언어 모두에 추가했습니다.
v1.4.0 — 2026-06-14
- macOS — IP 스캐너: 크로스 플랫폼 역방향 DNS 해석을 위해 Linux 전용
getent를 Python의socket.gethostbyaddr()로 대체; 호스트 이름 조회가 이제 추가 도구 없이 macOS에서 기본적으로 작동합니다. - macOS — SMB 브라우저:
smbclient(Homebrew samba 필요)에서smbutil view(macOS 내장 도구)로 전환; SMB 공유 목록이 이제 설치 없이 macOS에서 작동합니다. - macOS — NFS 브라우저:
showmount는 macOS에 내장되어 있지만--no-headers를 지원하지 않습니다; macOS에서는 플래그를 제거하고 파서에서 헤더 행을 건너뜁니다; NFS 내보내기 목록이 이제 기본적으로 작동합니다. - macOS — RDP:
xfreerdp를 찾을 수 없으면open rdp://URL 스킴으로 폴백합니다; 설치된 경우 Microsoft Remote Desktop(App Store)을 호스트, 포트, 사용자 이름 및 도메인이 미리 채워진 상태로 엽니다. - macOS — VNC:
vncviewer를 찾을 수 없으면open vnc://URL 스킴으로 폴백합니다; macOS 화면 공유(내장, 설치 불필요)를 엽니다.
v1.3.9 — 2026-06-13
- SSH 에이전트 포워딩 — SSH 연결 양식에 새로운 "Agent forwarding" 체크박스;
ssh명령에-A를 추가합니다; 개인 키를 복사하지 않고 서버 간 점프(PC → A → B)를 허용합니다; 활성 SSH 에이전트(SSH_AUTH_SOCK)가 필요합니다; 상황별 도움말이 8개 언어 모두로 업데이트되었습니다.
v1.3.8 — 2026-06-13- 명령 팔레트(Ctrl+P) — 27개 모듈 중 하나로 즉시 키보드 탐색; 이름 및 키워드 퍼지 검색(예: "firewall", "tls", "ssh key", "scan"); 위/아래 화살표 + Enter 또는 단일 클릭으로 이동; 앱 어디서나 Ctrl+P로 열림
- 내보내기 관리자 — 전체 네트워크 스냅샷(인터페이스, 경로, DNS 리졸버)을 파일 → 네트워크 보고서 내보내기…(Export Network Report…)에서 JSON, Markdown, 일반 텍스트 또는 PDF로 내보내기(선택 사항:
pip install reportlab) - 모듈별 내보내기 버튼 — Interfaces, DNS, Firewall, SSH Connections 및 Connection Manager 페이지에 내보내기 버튼이 추가되었습니다. 각 페이지는 선택한 형식으로 현재 데이터를 내보내며, 형식 필터가 변경되면 파일 이름 확장자가 실시간으로 업데이트됩니다.
v1.3.6 — 2026-06-12
- Topology — 장치 아이콘 — 이제 각 노드는 일반적인 원 대신 장치 유형에 해당하는 Lucide SVG 아이콘(라우터/와이파이, 컴퓨터/노트북, 프린터, NAS/서버, 스마트폰, 네트워크 스위치, 라즈베리 파이)을 표시합니다. 번들에 새로 포함된 SVG 아이콘 5개(
printer,server,smartphone,cpu,laptop)가 추가되었습니다. - Topology — mDNS 감지 —
avahi-browse로 장치 유형을 감지합니다(선택 사항, nmap 스캔과 병렬 실행). 프린터(_ipp._tcp,PDL Printer), Android 휴대폰 및 TV(_googlecast._tcp,_androidtvremote2._tcp), Apple Mac(AirPlay TXT의am=Mac16,x모델), NAS 장치(Synology가model=Xserve보고), KDE Connect 데스크톱을 식별합니다. avahi를 사용할 수 없으면 MAC 벤더 OUI 및 호스트명 휴리스틱으로 대체합니다. - Topology — 상세 패널 — 일반
"Host"라벨 대신 감지된 장치 클래스(Printer, Smartphone, NAS…)를 표시합니다. 8개 언어 모두 i18n 지원. - Traceroute — 자동 확대/축소 — 세계 지도는 각 경로가 끝나면 지리적 위치가 확인된 홉의 경계 상자에 자동으로 확대 및 중앙 정렬합니다. 사용자가 수동으로 이동하거나 확대/축소하면 비활성화되고, 다음 traceroute에서 복원됩니다. 마우스 오른쪽 버튼 클릭 시 전체 세계 지도 보기로 재설정됩니다.
v1.3.5 — 2026-06-06
- macOS 호환성 — 이제 9개 네트워크 모듈이 Linux 동작을 깨뜨리지 않고 macOS에서 실행됩니다. 각 모듈은 시작 시 플랫폼을 감지(
_IS_MACOS)하고 기본 macOS 명령으로 분기합니다:route -n get default,ifconfig,scutil --dns,networksetup,system_profiler SPAirPortDataType,pfctl,netstat -ib. 권한 상승은pkexec대신osascript+with administrator privileges를 사용하며, 고정 폭 글꼴은Monospace대신Menlo를 사용합니다. - Linux/macOS 이중 경로 모듈: Dashboard, Interfaces, Wi-Fi, Topology, Bandwidth, Firewall(pf.conf + pfctl), Connection Manager, Hosts File, MTR
- 변경되지 않은 모듈(두 플랫폼에서 동일한 도구): DNS, Nmap Scan, SNMP, Whois
v1.3.2 — 2026-06-06
- i18n 8개 언어로 확장 — Italiano, Português, 日本語(일본어), 中文(중국어 간체) 추가. 전체 UI(27개 모듈 전체, 약 720개 번역 키)가 이제 FR / EN / ES / DE / IT / PT / JA / ZH로 제공됩니다. 설정에서 언어를 변경한 후 다시 시작하라는 메시지가 표시됩니다.
- 8개 언어 상황별 도움말 —
?배지 패널(설명, 사용 예시 및 해당 CLI 명령)이 이제 모든 모듈에서 8개 언어를 지원합니다. 이전에는 JA와 ZH가 영어로 대체되었습니다. - 버그 수정 — SMB/NFS 및 Hosts File의 내비게이션 툴팁이 선택한 언어와 관계없이 프랑스어로 표시되던 문제를 수정했습니다. 누락된
nav_hint_smb_nfs및nav_hint_hosts키를 7개 비프랑스어 언어 블록에 추가했습니다.
v1.3.1 — 2026-06-05
- SSH Key Manager —
~/.ssh/의 모든 키 페어 나열(파일, 유형, 비트, 주석, SHA256 지문). 선택적 암호문구로 Ed25519 또는 RSA 4096 키 생성(불일치 감지, 유형별 자동 파일 이름). 공개 키를 클립보드에 복사. 비밀번호 프롬프트에 대한 stdin 입력을 지원하는 인라인 터미널에서ssh-copy-id를 통해 원격 서버에 배포. 확인 후 키 페어 삭제.~/.ssh/가 없으면 자동 생성. i18n: fr / en / es / de
v1.3.0 — 2026-06-03
- TLS / SSL Inspector — 모든 서버의 인증서를 검사합니다: 주체 CN, SAN, 발급자, 유효 기간(색상 코드: 녹색 / 주황색 < 30일 / 빨간색 만료), 일련 번호, TLS 프로토콜, 암호화 스위트 및 인증서 체인(
openssl s_client이용). 유효, 만료 및 자체 서명 인증서 모두에서 작동합니다. 연결할 수 없는 호스트에 대해 친숙한 오류 메시지를 표시합니다. - SMB / NFS Browser — 모든 서버에서 공유 및 내보내기 목록 표시. SMB 탭: 선택적 자격 증명이 포함된
smbclient -L, 공유 이름 / 유형 / 설명 표시. NFS 탭:showmount -e, 내보내기 경로 및 액세스 목록 표시. 배포판별 설치 지침과 함께 누락된 도구를 감지합니다. - Hosts File Editor —
/etc/hosts보기 및 편집. 활성화/비활성화 토글이 있는 테이블, 대화상자를 통한 항목 추가/편집/삭제. IP 또는 호스트명으로 필터링.pkexec cp로 저장(polkit 인증 대화상자). - install.sh — Debian / Ubuntu / Linux Mint용 새 스크립트:
~/.local/share/nmlinux/venv에 venv 생성, apt로 시스템 종속성 설치, 런처 및.desktop항목 생성(PEP 668externally-managed-environment오류 수정).
v1.2.9 — 2026-05-30
- VNC — VNC 연결 프로필을 관리하는 새 모듈. SSH 및 RDP와 같은 그룹/하위 그룹 지원.
vncviewer(TigerVNC) 실행. macOS ARD와 호환(DH30 인증은 vncviewer가 기본 처리). 비밀번호는 저장되지 않습니다. 배포판별 설치 지침과 함께vncviewer누락을 감지합니다. - 정보 — 도구 및 서비스 — 앱이 의존하는 모든 타사 도구와 API를 나열하는 새 섹션.
- 사이드바 i18n — 이제 23개 내비게이션 툴팁이 모두 FR/EN/ES/DE로 번역됨(이전에는 프랑스어로 하드코딩됨). 라벨 수정: Topology, Connections, Subnet.
v1.2.8 — 2026-05-30
- Remote Desktop (RDP) — Windows RDP 연결 프로필을 관리하는 새 모듈. SSH와 같은 그룹/하위 그룹 지원.
xfreerdp를 외부 프로세스로 실행. 연결 시 비밀번호를 묻고 저장하지 않음. 필드: host, port, username, domain, resolution, fullscreen. 배포판별 설치 지침(Arch / Debian / Fedora)과 함께xfreerdp누락을 감지합니다.
v1.2.7 — 2026-05-26
- Lucide 아이콘 번들 — Lucide(MIT)의 SVG 아이콘 21개가 이제
assets/icons/에 번들로 포함됩니다. 런타임에QSvgRenderer로 렌더링되며#60a5fa색상으로 표시됩니다. 앱은 더 이상 시스템 아이콘 테마(Breeze, Adwaita, Papirus…)를 요구하지 않습니다.
v1.2.6 — 2026-05-24
- GNOME/Adwaita 호환성 — 비 KDE 데스크톱에서 아이콘 수정:
main.py는 이제gsettings를 통해 GTK 아이콘 테마를 자동 감지하여 Qt에 적용합니다. Wi-Fi, Traceroute, Speed Test, Interfaces, Port Scanner, Firewall, MTR에 대한 대체 체인 확장.themed_icon()은 이제 테마 아이콘을 수락하기 전에 실제 pixmap이 존재하는지 검증합니다. - NixOS/KDE 호환성 — NixOS의 모든 아이콘 수정: Breeze 6.x는 SVGZ 전용 아이콘을 제공합니다. Nix 래퍼는 이제
QT_PLUGIN_PATH에qt6.qtsvg를 추가하여 Qt가 SVG 아이콘을 렌더링할 수 있게 합니다.themed_icon()은 크기 22/24/16/32/48을 시도합니다(Breeze는 24가 아닌 22px 사용). Nix 번들 아이콘 세트가 감지되면 테마를breeze로 강제합니다. 또한 시스템 전체 KDE 구성을 위해/etc/xdg/kdeglobals를 확인합니다.
v1.2.5 — 2026-05-23
- MTR — 내장 My Traceroute:
mtr --report실행, 텍스트 출력 파싱, 홉별 손실률 %, RTT Last/Avg/Best/Worst/Jitter를 표시하는 실시간 테이블 제공, 손실 심각도에 따라 색상 코드 표시. 연속 모드; CSV + TXT 내보내기. - Speed Test —
curl+ Cloudflare(speed.cloudflare.com)를 통한 종속성 없는 속도 테스트: 다운로드(25MB), 업로드(10MB),1.1.1.1핑. 최대 5회 실행이 JSON으로 저장됩니다. 기록 선 그래프(다운로드/업로드). - Firewall Viewer — 읽기 전용 규칙 집합 뷰어: 루트 없이
/etc/nftables.conf및/etc/iptables/*.rules파싱.pkexec nft list ruleset을 통한 실시간 규칙 집합. 열: Table / Chain / Rule / Port / Action / Comment. 색상 코드 동작, 실시간 필터. - 사이드바 힌트 — 이제 각 내비게이션 항목에 은은한
?배지가 표시됩니다. 마우스를 올리면 모듈이 수행하는 작업을 설명하는 툴팁이 표시됩니다. 사이드바와 콘텐츠 영역 사이에 세로 구분선이 추가되었습니다. - i18n — 모든 새 모듈이 프랑스어, 영어, 스페인어로 번역되었습니다.
v1.2.0 — 2026-05-22
- 테마 적응 — 모든 페이지에서 전체 런타임 라이트/다크 전환 지원.
is_dark(),color_ok(),color_err()가 포함된 새core/theme.py. 사용자 정의 페인터 위젯(_Graph,_MapWidget)이 페인트 시 팔레트를 읽습니다. 하드코딩된 모든 Catppuccin Mocha 색상이 의미론적 Qt 팔레트 역할로 대체되었습니다. - 서브넷 마스크 — Dashboard, Interfaces 및 Connexions 페이지에서 이제 CIDR 접두사에서 파생된 점으로 구분된 십진수 서브넷 마스크(예:
255.255.255.0)를 표시합니다. - Bandwidth Monitor — 페이지 로드 시 신뢰할 수 없는 자동 시작을 명시적인 시작/중지 버튼으로 대체.
- CSV/TXT 내보내기 — Nmap 및 Traceroute 페이지에서 이제 스캔/추적 완료 후 나타나는 CSV 내보내기 및 TXT 내보내기 버튼을 제공합니다.
- i18n — 위 모든 기능에 대한 새 번역 키(fr/en/es/de).
v1.1.1 — 2026-05-16
- SSH 터미널 — pyte(VT100/xterm 에뮬레이터) + QPainter 렌더러로 완전히 재작성. 2000줄 스크롤백, 커서 깜빡임, 256색 지원.
- Visual Traceroute — 세계 지도(Natural Earth 110m), 홉별 실시간 지리적 위치(ip-api.com), 대화형 확대/축소 및 이동, 이중 파서(
traceroute/tracepath대체). - Bandwidth Monitor — 인터페이스별 실시간 처리량, 60초 슬라이딩 그래프, 실시간 속도, 세션 합계 및 최고값.
- Wake on LAN — 순수 Python 매직 패킷(UDP 브로드캐스트), 영구 호스트 목록(JSON).
- IP Scanner —
getent/avahi/nmblookup을 통한 호스트명 해석. MAC 주소, 벤더(IEEE OUI 39K 항목), 인터페이스 열. CSV/TXT 내보내기 업데이트. - i18n — 모든 새 페이지에 대한 전체 fr/en/es/de 번역.
v1.0.0 — 2026-05-14
최초 공개 릴리스 — 13개 모듈: Dashboard, Interfaces, Wi-Fi, Subnet Calculator, DNS Lookup, Ping Monitor, IP Scanner, Port Scanner, Nmap, Whois, SNMP, SNTP/NTP, SSH.
기능
| 모듈 | 설명 |
|---|---|
| Dashboard | 로컬 머신 정보, 게이트웨이, 공용 IP, 지리적 위치, DNS 리졸버 |
| Connection Manager | nmcli를 통한 NetworkManager 프로필: 목록, 필터, 연결/연결 해제/편집/삭제 |
| Interfaces | 인터페이스별 세부 정보가 포함된 네트워크 인터페이스 테이블(ip + nmcli) |
| Wi-Fi | 사용 가능한 네트워크, 신호 강도, 보안, 연결된 네트워크 강조 |
| Subnet Calculator | CIDR의 네트워크/브로드캐스트/호스트 범위, 최대 4096개 항목의 호스트 테이블 |
| DNS Lookup | A, AAAA, MX, TXT, NS, CNAME, PTR, SOA, ANY 레코드에 대한 dig 기반 조회 |
| Ping Monitor | 여러 호스트에 대한 지속적인 ping, RTT 통계, 패킷 손실 % |
| IP Scanner | CIDR/범위 ping 스캔, 50개 스레드, 호스트명(DNS/mDNS/NetBIOS), MAC 주소, 벤더(OUI), 인터페이스, CSV + TXT 내보내기 |
| Port Scanner | TCP 연결 스캔, 200개 스레드, 서비스 사전 설정, CSV + TXT 내보내기 |
| Nmap | 7가지 스캔 모드, XML 출력 파싱, Host/Port/Protocol/State/Service 테이블, CSV + TXT 내보내기 |
| Whois | 고정 폭 글꼴의 원시 whois 출력 |
| SNMP | snmpwalk/snmpget, v1/v2c, 10개 OID 사전 설정, 결과 테이블 |
| SNTP / NTP | 순수 Python RFC 4330 UDP 클라이언트, 오프셋/지연/계층/참조 |
| SSH | 내장 PTY 터미널(pyte/VT100), 저장된 연결(JSON), 키 인증, 스크롤백 |
| Remote Desktop | RDP 연결 프로필(그룹/하위 그룹); xfreerdp 실행; 비밀번호는 저장되지 않음 |
| VNC | VNC 연결 프로필(그룹/하위 그룹); vncviewer(TigerVNC) 실행; macOS ARD 호환; 비밀번호는 저장되지 않음 |
| SSH Key Manager | ~/.ssh/ 키 페어 목록(유형, 비트, 지문); Ed25519/RSA 4096 생성; 공개 키 복사; ssh-copy-id로 서버에 배포; 확인 후 페어 삭제 |
| TLS Inspector | 인증서 세부 정보: CN, SAN, 발급자, 유효 기간 + 만료 카운트다운, 일련 번호, 프로토콜, 암호화, 체인; 백그라운드 만료 모니터 및 사이드바 색상 점이 있는 Watchlist |
| SMB / NFS | 모든 서버 또는 NAS에서 SMB 공유(smbclient) 및 NFS 내보내기(showmount) 목록 표시; SMB용 선택적 자격 증명 |
| Hosts File | /etc/hosts 보기/편집: 항목 추가, 삭제, 토글; 필터링; pkexec로 저장 |
| Visual Traceroute | 세계 지도의 홉별 경로, 실시간 지리적 위치(ip-api.com), 확대/축소 및 이동, CSV + TXT 내보내기 |
| MTR | 내장 My Traceroute: 홉별 손실률 %, RTT Last/Avg/Best/Worst/Jitter, 색상 코드, CSV + TXT 내보내기 |
| Firewall Viewer | 읽기 전용 nftables + iptables/ip6tables 규칙 집합(루트 불필요); pkexec로 실시간; 테이블/체인/동작별 필터 |
| Speed Test | Cloudflare를 통한 다운로드/업로드/ping; curl 외 외부 도구 불필요; 기록 그래프(최근 5회 실행) |
| Bandwidth | 인터페이스별 실시간 처리량: 60초 슬라이딩 그래프, 실시간 속도, 세션 합계, 최고값 |
| Wake on LAN | 순수 Python 매직 패킷(UDP 브로드캐스트), 영구 호스트 목록, 외부 도구 불필요 |
| Topology Map | nmap -sn으로 LAN 장치 자동 검색; 드래그 가능한 노드가 있는 대화형 그래프, 확대/축소 및 이동, 상세 패널 |
| Settings | 언어 선택(FR / EN / ES / DE / IT / PT / JA / ZH), 영구 저장; 변경 후 다시 시작 필요 |
| Command Palette | Ctrl+P 오버레이: 이름 또는 키워드로 29개 모듈 전체 퍼지 검색 |
| File Transfer | 주문형 TFTP 또는 HTTP 서버; 포트 및 루트 디렉터리 구성 가능; 로컬 IP를 복사 버튼으로 표시; 실시간 로그 테이블(파일 이름, 클라이언트 IP, 방향 ↑/↓, 크기); HTTP 디렉터리 목록 + GET/POST/PUT; TFTP GET + PUT; 포트 69에서 pkexec 프롬프트 |
| Export | 파일 → 네트워크 보고서 내보내기(JSON/Markdown/Text/PDF); Interfaces, DNS, Firewall, SSH, Connections에서 모듈별 내보내기 |
요구 사항
시스템 도구
Linux — 대부분 표준 설치에 이미 포함되어 있습니다:```bash
Arch / EndeavourOS
sudo pacman -S iproute2 networkmanager bind-tools nmap whois net-snmp iputils mtr curl
Debian / Ubuntu
sudo apt install iproute2 network-manager dnsutils nmap whois snmp mtr-tiny curl
Fedora
sudo dnf install iproute NetworkManager bind-utils nmap whois net-snmp-utils mtr curl
**macOS** — [Homebrew](https://brew.sh)를 통해 설치:```bash
# Required
brew install nmap mtr curl
# Optional — enable additional modules
brew install whois # WHOIS page
brew install net-snmp # SNMP page (snmpwalk / snmpget)
brew install samba # SMB scan with credentials (smbclient)
macOS는
ping,dig,traceroute,netstat,ifconfig,smbutil,route를 기본으로 제공합니다.networksetup과scutil은 macOS 내장 도구이므로 설치가 필요 없습니다. IP 스캐너의 OUI 제조업체 조회도 설치가 필요 없습니다 — Wiresharkmanuf데이터베이스가 첫 사용 시 백그라운드에서 자동으로 다운로드되어 로컬에 캐시됩니다.
선택 도구
| 도구 | 기능 | Linux | macOS |
|---|---|---|---|
xfreerdp / xfreerdp3 | 원격 데스크톱 (RDP) | Arch: freerdp · Ubuntu ≤24.04: freerdp2-x11 · Ubuntu 26.04+: freerdp3-x11 | 선택 사항 — Microsoft Remote Desktop으로 대체됨 (open rdp://) |
vncviewer | VNC | Arch: tigervnc · Debian: tigervnc-viewer | 선택 사항 — macOS 화면 공유로 대체됨 (open vnc://, 내장) |
nm-connection-editor | 연결 관리자에서 연결 편집 | Arch: nm-connection-editor | — (대신 시스템 환경설정이 열림) |
traceroute | Traceroute 대안 (기본적으로 tracepath 사용) | Arch: traceroute | 내장 |
mount.cifs (cifs-utils) | 오른쪽 클릭 메뉴에서 SMB 공유 마운트 | Arch/Debian: cifs-utils | 내장 (mount_smbfs) |
iperf3 | 속도 테스트 — LAN 탭 | Arch: iperf3 · Debian/Ubuntu: iperf3 | brew install iperf3 |
Python
- Python 3.11+
- PySide6 6.6+
- ptyprocess 0.7+
- pyte 0.8+ (
pip install pyteorsudo pacman -S python-pyte) - tftpy 0.8+ (
pip install tftpyorsudo pacman -S python-tftpy) — 파일 전송 모듈
설치
옵션 1 — Arch Linux / Manjaro / EndeavourOS (AUR)```bash
yay -S nmlinux
모든 종속성(PySide6, ptyprocess, pyte, nmcli, …)은 자동으로 처리됩니다.
### 옵션 2 — NixOS / Nix
번들된 `flake.nix`로 직접 실행하세요 — 시스템 전체 설치가 필요하지 않습니다:```bash
git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
nix run .
또는 개발 셸로 들어가세요:```bash nix develop python3 -m nmlinux.main
모든 Python 종속성(PySide6, ptyprocess, pyte, tftpy)과 시스템 도구(nmcli, nmap, freerdp, vncviewer, mtr, avahi-browse…)는 Nix 래퍼를 통해 자동으로 제공됩니다.
### 옵션 4 — AppImage (모든 Linux 배포판, 설치 불필요)
[최신 릴리스](https://github.com/thongor77/nmlinux/releases/latest)에서 `NMLinux-x.y.z-x86_64.AppImage`를 다운로드하세요:```bash
chmod +x NMLinux-*.AppImage
./NMLinux-*.AppImage
설치 불필요 — Python, Qt 및 모든 NMLinux 모듈이 단일 파일에 번들로 포함되어 있습니다.
glibc 2.17+가 있는 모든 x86_64 Linux에서 작동합니다 (Ubuntu 16.04+, Fedora 26+, Arch, Mint 등).
시스템 네트워크 도구(
nmap,whois,mtr…)는 번들로 제공되지 않습니다 — 해당 모듈이 작동하도록 패키지 관리자를 통해 설치하세요. 아래 요구 사항을 참조하세요.
옵션 5 — macOS
가장 빠른 방법 — 원라이너 부트스트랩. 완전히 빈 Mac에서 작동합니다: Xcode Command Line Tools, Homebrew, 모든 시스템 도구, 그리고 NMLinux 자체를 설치합니다. 다시 실행해도 안전합니다(재설치 대신 업데이트됨):```bash curl -fsSL https://raw.githubusercontent.com/thongor77/nmlinux/main/packaging/bootstrap_macos.sh -o /tmp/bootstrap_macos.sh && bash /tmp/bootstrap_macos.sh
`~/Applications` 대신 시스템 전체(`/Applications`)에 설치:```bash
curl -fsSL https://raw.githubusercontent.com/thongor77/nmlinux/main/packaging/bootstrap_macos.sh -o /tmp/bootstrap_macos.sh && bash /tmp/bootstrap_macos.sh --system
Apple Developer 계정이나 유료 공증(notarization)이 필요 없습니다 — 내부적으로는 동일한 오픈소스
install_macos_app.sh를 가져와서 실행할 뿐입니다. 스크립트는 단순하고 읽을 수 있는 bash입니다. 실행 전에/tmp/bootstrap_macos.sh를 열어 읽어 보거나, 여기에서 직접 확인할 수 있습니다:packaging/bootstrap_macos.sh.다운로드 후 실행(
bash로 직접 파이프하는 대신)은 의도적인 방식입니다. 새 Mac에서 스크립트는 중첩된 대화형 단계(Xcode Command Line Tools 설치 프로그램, 사용자의sudo암호를 묻는 Homebrew 설치 프로그램)를 트리거하며, 이 단계들은 터미널에서 입력을 읽습니다. 스크립트를bash로 직접 파이프하면 중첩된 프롬프트가 스크립트 자체의 입력 스트림을 방해하여 중간에 중단될 수 있습니다. 다운로드한 파일에서 실행하면 그런 문제가 완전히 피해집니다.
수동 설치 — 각 단계를 직접 실행하고 싶거나 이미 Homebrew가 있다면:```bash
1. Install Homebrew system tools (see Requirements above)
brew install nmap mtr curl
2. Clone and install
git clone https://github.com/thongor77/nmlinux.git cd nmlinux bash packaging/install_macos_app.sh
업데이트: `git pull && bash packaging/install_macos_app.sh`
제거: `bash packaging/uninstall_macos.sh`
시스템 전체(`/Applications`)에 설치: `bash packaging/install_macos_app.sh --system`
이 스크립트는 다음 Python 패키지를 venv에 자동으로 설치합니다:
- `PySide6`, `ptyprocess`, `pyte`, `tftpy`
- `pyobjc-framework-Cocoa` — macOS 메뉴 막대, 기본 대화상자
- `pyobjc-framework-CoreWLAN` — Wi-Fi SSID 스캔
- `pyobjc-framework-CoreLocation` — Wi-Fi 이름에 대한 위치 서비스 권한
**macOS 26(Tahoe)의 Wi-Fi:** 첫 실행 시 macOS에서 위치 서비스 권한을 요청합니다 — Wi-Fi 네트워크 이름을 표시하려면 허용하세요. 이 권한은 *시스템 설정 › 개인정보 보호 및 보안 › 위치 서비스* 아래에 표시됩니다.
> 대부분의 모듈은 macOS에서 수정 없이 작동합니다. RDP는 `open rdp://`(Microsoft Remote Desktop)로 대체되고, VNC는 `open vnc://`(내장 화면 공유)로 대체됩니다. 연결 관리자는 macOS에서 기능이 축소됩니다(`nmcli` 사용 불가).
### 옵션 6 — Debian / Ubuntu / Linux Mint(설치 스크립트)
> **Linux Mint / Ubuntu 사용자 참고:** Python 3.12+에서는 시스템 전체에 `pip install`이 차단됩니다(PEP 668 — `externally-managed-environment`). 제공된 설치 스크립트를 사용하세요 — 이 스크립트는 가상 환경을 자동으로 생성하고 `.desktop` 항목을 설치합니다.```bash
git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
bash install.sh
스크립트는 다음을 수행합니다:
apt를 통해 시스템 종속성을 설치합니다 (libgl1, python3-venv, freerdp, tigervnc…)~/.local/share/nmlinux/venv에 가상 환경을 생성합니다- venv 내부에 NMLinux 및 해당 Python 종속성을 설치합니다
~/.local/bin/nmlinux에 실행기를 생성합니다.desktop항목을 추가하여 NMLinux가 애플리케이션 메뉴에 표시되도록 합니다
설치 후 터미널에서 nmlinux를 실행하거나 애플리케이션 메뉴에서 시작하십시오.
옵션 7 — Wheel (모든 배포판 / macOS)
최신 릴리스에서 .whl을 다운로드하여 설치합니다:```bash
Arch / Fedora / macOS — no pip restrictions
pip install nmlinux-1.5.3-py3-none-any.whl
Debian / Ubuntu / Mint — install system libs first, then use pipx
Ubuntu ≤24.04:
sudo apt install libgl1 libglib2.0-0 libdbus-1-3 freerdp2-x11 tigervnc-viewer
Ubuntu 26.04+:
sudo apt install libgl1 libglib2.0-0 libdbus-1-3 freerdp3-x11 tigervnc-viewer
pipx install nmlinux-1.5.3-py3-none-any.whl
> **Ubuntu 26.04+ 참고:** `pipx`를 사용하려면 먼저 시스템 라이브러리(libGL 등)를 설치해야 합니다. 위 명령어들이 이를 처리합니다. `pipx install`이 PySide6 빌드 오류로 실패하면 **옵션 4**(설치 스크립트)를 대신 사용하세요. 이 옵션은 모든 것을 자동으로 처리합니다.
### 옵션 8 — 소스에서 설치 (Arch / Fedora / macOS)```bash
git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
pip install PySide6 ptyprocess pyte tftpy
python3 -m nmlinux.main
Option 9 — 데스크톱 항목 (KDE / GNOME / 등)
.desktop 파일을 복사하여 NMLinux를 애플리케이션 런처에 표시하세요:```bash
cp data/nmlinux.desktop ~/.local/share/applications/
update-desktop-database ~/.local/share/applications/
그런 다음 필요하면 파일에서 `Exec=` 경로를 편집하세요.
---
## 실행```bash
./nmlinux.sh
# or, after pip install:
nmlinux
# or directly:
python3 -m nmlinux.main
프로젝트 구조```
nmlinux/ core/ i18n.py — Translation system (8 languages: fr/en/es/de/it/pt/ja/zh), tr(key) function icons.py — themed_icon(): 21 bundled Lucide SVG icons via QSvgRenderer theme.py — is_dark(), color_ok(), color_err(): runtime light/dark helpers settings.py — AppSettings dataclass, JSON persistence ssh.py — SshConnection dataclass, SshStore rdp.py — RdpConnection dataclass, RdpStore, find_xfreerdp() vnc.py — VncConnection dataclass, VncStore, find_vncviewer() terminal.py — SshWorker (QThread) + PTY via ptyprocess, emits raw bytes tls_watchlist.py — TlsWatchlist: background cert expiry checker, JSON persistence http_server.py — ThreadedHTTPServer: directory listing, GET/PUT/POST, port binding tftp_helper.py — TftpServerThread: tftpy wrapper, configurable port and root help_content.py — Module contextual help strings (all 8 languages) cli_bar.py — CliBar singleton: pedagogical CLI equivalent bar export_dialog.py — open_export_dialog(): QFileDialog with live extension update command_palette.py — CommandPalette (Ctrl+P): fuzzy search across 29 modules export_manager.py — collect_snapshot(), to_json/text/markdown/pdf, save_export() pages/ about.py — About page (credits, tools & services) bandwidth.py — Bandwidth Monitor: per-interface 60s graph, live stats connection_manager.py — Connection Manager: nmcli profiles, connect/disconnect/edit dashboard.py — Dashboard dns.py — DNS Lookup file_transfer.py — File Transfer: TFTP + HTTP server, live log, pkexec for port 69 firewall.py — Firewall Viewer: nftables + iptables parser, live via pkexec help_page.py — Contextual help overlay hosts.py — Hosts File: view/edit /etc/hosts, toggle entries, save via pkexec interfaces.py — Network Interfaces ip_scanner.py — IP Scanner mtr.py — MTR: mtr --report parser, live hop stats table, export nmap_scan.py — Nmap ping.py — Ping Monitor port_scanner.py — Port Scanner rdp.py — Remote Desktop: RDP profiles, launches xfreerdp settings.py — Settings page smb_nfs.py — SMB/NFS Browser: smbclient + showmount snmp.py — SNMP sntp.py — SNTP / NTP speedtest.py — Speed Test: curl + Cloudflare, history graph ssh.py — SSH page (connection manager + terminal) ssh_keys.py — SSH Key Manager: list/generate/deploy/delete key pairs subnet.py — Subnet Calculator terminal_view.py — TerminalView: pyte VT100 emulator + QPainter renderer tls.py — TLS Inspector + TLS Watchlist: cert details, background expiry monitor topology.py — Topology Map: nmap -sn, interactive graph, zoom/pan traceroute.py — Visual Traceroute: world map, geolocation, zoom/pan vnc.py — VNC: connection profiles, launches vncviewer whois.py — Whois wifi.py — Wi-Fi wol.py — Wake on LAN: magic packet, persistent host book assets/ icons/ — 21 bundled Lucide SVG icons (#60a5fa) world.geojson — Natural Earth 110m countries (map background) window.py — MainWindow (sidebar + QStackedWidget) main.py — Entry point
---
## 데스크톱 환경 호환성
v1.2.7부터 NMLinux는 런타임에 `QSvgRenderer`를 통해 렌더링되는 21개의 번들 [Lucide](https://lucide.dev) SVG 아이콘을 사용합니다. 이 앱은 더 이상 시스템 아이콘 테마(Breeze, Adwaita, Papirus 등)에 의존하지 않으며 KDE, GNOME, XFCE 등에서 올바르게 표시됩니다. Qt 스타일은 실행 중인 데스크톱에 자동으로 적응합니다.
---
## 제한 사항
### Linux
완전 지원 — 29개 모듈 모두 사용 가능.
### macOS
대부분의 모듈은 두 플랫폼에서 사용할 수 있는 도구(`ssh`, `dig`, `ping`, `curl`, `nmap`, `openssl` 등)에 의존하므로 별도 설정 없이 바로 작동합니다.
**9개 모듈은 명시적인 macOS 적응이 필요합니다** (시작 시 플랫폼을 감지하는 이중 코드 경로): Dashboard, Interfaces, Wi-Fi, Topology, Bandwidth, Firewall, Connection Manager, Hosts File, MTR — 이 모듈들은 Linux 대신 기본 macOS 명령어(`ifconfig`, `networksetup`, `scutil`, `pfctl`, `system_profiler` 등)를 사용합니다.
**macOS 지원이 제한적이거나 없는 모듈:**
| 모듈 | 상태 | 참고 |
|--------|--------|-------|
| **RDP** | ✓ macOS | `open rdp://`로 대체 → Microsoft Remote Desktop(App Store) |
| **VNC** | ✓ macOS | `open vnc://`로 대체 → 화면 공유(내장, 설치 불필요) |
| **IP Scanner** | ✓ macOS | `socket.gethostbyaddr()` 사용 — 기본 Python, 추가 도구 없음 |
| **SMB** | ✓ macOS | `smbclient` 대신 `smbutil view`(내장) 사용 |
| **NFS** | ✓ macOS | `showmount` 내장, 헤더 파싱 조정됨 |
| **Connection Manager** | ⚠ 제한됨 | 편집/삭제는 `nmcli` 필요(Linux 전용), 목록 보기는 작동 |
### 일반
- root/polkit 통합 없음 — 상승된 권한이 필요한 도구(일부 Nmap 모드, raw socket)는 `sudo`로 실행해야 합니다. macOS에서는 권한 상승에 `osascript` + `administrator privileges`를 사용합니다
- SSH 에이전트 포워딩은 활성 SSH 에이전트(`SSH_AUTH_SOCK`)가 필요합니다. macOS에서는 시스템이 자동으로 처리하므로 수동 설정이 필요 없습니다
---
## 크레딧 및 감사의 말
- **[Anthropic](https://www.anthropic.com)** — 이 프로젝트를 구축하는 데 사용된 AI 어시스턴트, Claude Code
- 비전, 테스트, 방향을 제공한 저자
---
## 프로젝트 지원
NMLinux가 유용하다면 개발을 지원하는 것을 고려해 주세요:
- **PayPal** — [PayPal로 기부하기](https://www.paypal.com/donate/?business=JFQGY7NU3ANCN&no_recurring=0&item_name=Every+donation%2C+no+matter+how+small%2C+helps+me+keep+this+project+alive.+Thank+you%21%0A¤cy_code=EUR)
- **Bitcoin** — `bc1qspe0tky7552qas72wgn8w9dswr0dxlv24w39t6ztjqk3nz6kc5tqv753a4`
---
## 라이선스
GPL-2.0 — [LICENSE](https://github.com/thongor77/nmlinux/blob/HEAD/LICENSE)를 참조하세요.
이 프로젝트는 독립적인 재구현입니다. NETworkManager의 코드는 사용되거나 번역되지 않았습니다.





