
network-monitor v0.7.4
रस्ट और GTK4 के साथ निर्मित एक रीयल-टाइम नेटवर्क कनेक्शन मॉनिटरिंग टूल, जो आधुनिक ग्राफिकल इंटरफ़ेस में सक्रिय कनेक्शनों को लाइव I/O आँकड़ों के साथ प्रदर्शित करता है।
नेटवर्क मॉनिटर

Rust और GTK4 के साथ बनाया गया एक रीयल-टाइम नेटवर्क कनेक्शन मॉनिटरिंग टूल, जो एक आधुनिक ग्राफिकल इंटरफ़ेस में लाइव I/O आंकड़ों के साथ सक्रिय कनेक्शन प्रदर्शित करता है।
विशेषताएँ
- रीयल-टाइम मॉनिटरिंग: सक्रिय नेटवर्क कनेक्शनों की लगातार निगरानी करता है
- I/O आंकड़े: प्रत्येक कनेक्शन के लिए लाइव अपलोड/डाउनलोड दर दिखाता है
- प्रोसेस पहचान: प्रत्येक कनेक्शन से जुड़े प्रोग्राम और PID को प्रदर्शित करता है
- प्रोसेस क्रियाएँ: किसी पंक्ति पर राइट-क्लिक करके उसका मान/कमांड कॉपी करें या उस प्रोसेस को किल करें जो कनेक्शन का स्वामी है (Terminate या Force Kill, पुष्टि के साथ)
- स्थायी चयन: चयनित पंक्ति रीफ्रेश के दौरान अपना हाइलाइट बनाए रखती है और स्टेटस स्ट्रिप में दिखाई जाती है
- आधुनिक GTK4 UI: Libadwaita स्टाइलिंग के साथ साफ़, उत्तरदायी ग्राफिकल इंटरफ़ेस
- टर्मिनल UI (TUI): समान मॉनिटरिंग क्षमताओं वाला इंटरैक्टिव टर्मिनल इंटरफ़ेस
- पता रिज़ॉल्यूशन: सामान्य पतों (localhost, any, mDNS) को सरल बनाता है
- कनेक्शन फ़िल्टरिंग: साफ़ आउटपुट के लिए localhost कनेक्शनों को फ़िल्टर करता है
- GNOME एकीकरण: डॉक पिनिंग और डेस्कटॉप एकीकरण के लिए उचित WM क्लास समर्थन
- दोहरी इंस्टॉलेशन: उपयोगकर्ता-स्थानीय और सिस्टम-व्यापी दोनों इंस्टॉलेशन का समर्थन करता है
- मज़बूत त्रुटि प्रबंधन: स्पष्ट सेटअप मार्गदर्शन के साथ व्यापक त्रुटि रिकवरी
- प्रदर्शन अनुकूलित: बेहतर प्रतिक्रियाशीलता के लिए प्रोसेस कैशिंग और लेआउट कैशिंग
आवश्यकताएँ
- Rust 1.70+ (2021 edition)
- GTK4 डेवलपमेंट लाइब्रेरीज़
- Libadwaita डेवलपमेंट लाइब्रेरीज़
/procफ़ाइलसिस्टम वाला Linux सिस्टम- Linux 5.8+ (eBPF ग्रैनुलर क्षमताओं के लिए)
- Nightly Rust और
bpf-linker(eBPF कंपाइलेशन के लिए)
Ubuntu/Debian पर इंस्टॉलेशन:
sudo apt update
sudo apt install libgtk-4-dev libadwaita-1-dev
Fedora पर इंस्टॉलेशन:
sudo dnf install gtk4-devel libadwaita-devel
इंस्टॉलेशन
विधि 1: डेस्कटॉप एकीकरण के साथ स्रोत से इंस्टॉल करें
- रिपॉज़िटरी क्लोन करें:
git clone <repository-url>
cd network-monitor
- स्थानीय रूप से इंस्टॉल करें (sudo की आवश्यकता नहीं):
./scripts/install.sh
- या सिस्टम-व्यापी इंस्टॉल करें (sudo आवश्यक):
sudo ./scripts/install.sh
इंस्टॉलेशन स्क्रिप्ट यह करेगी:
- GTK4 और TUI दोनों बाइनरीज़ बनाएगी (स्थानीय के लिए debug, सिस्टम-व्यापी के लिए release)
- बाइनरीज़ को
~/.local/bin/(स्थानीय) या/usr/local/bin/(सिस्टम-व्यापी) में इंस्टॉल करेगी - GNOME डॉक पिनिंग के लिए उचित WM क्लास के साथ डेस्कटॉप फ़ाइल इंस्टॉल करेगी
- उपयुक्त आइकन निर्देशिकाओं में आइकन इंस्टॉल करेगी
- आइकन कैश और डेस्कटॉप डेटाबेस अपडेट करेगी
- सुनिश्चित करेगी कि एप्लिकेशन को GNOME डॉक/डैशबोर्ड पर पिन किया जा सके
विधि 2: सीधे बिल्ड और रन करें
- रिपॉज़िटरी क्लोन करें:
git clone <repository-url>
cd network-monitor
- बिल्ड और रन करें:
cargo run
या release मोड में बिल्ड करें:
cargo build --release
./target/release/network-monitor
विधि 3: TUI संस्करण बिल्ड और रन करें
- रिपॉज़िटरी क्लोन करें:
git clone <repository-url>
cd network-monitor
- TUI बिल्ड और रन करें:
cargo build --bin nmt
./target/debug/nmt
या release मोड में बिल्ड करें:
cargo build --release --bin nmt
./target/release/nmt
अनइंस्टॉलेशन
इंस्टॉल किए गए संस्करण को हटाएँ
स्थानीय इंस्टॉलेशन हटाना:
./scripts/uninstall.sh
सिस्टम-व्यापी हटाना (sudo आवश्यक):
sudo ./scripts/uninstall.sh
अनइंस्टॉलेशन स्क्रिप्ट उपयुक्त स्थानों से बाइनरी, डेस्कटॉप फ़ाइल और आइकन हटा देगी और सभी प्रासंगिक कैश अपडेट कर देगी।
उपयोग
GTK4 ग्राफिकल इंटरफ़ेस
नेटवर्क मॉनिटर एप्लिकेशन लॉन्च करें:
cargo run
एप्लिकेशन एक GTK4 विंडो खोलेगा जो प्रदर्शित करेगी:
- Process(ID): सटीक socket-to-process मैपिंग के साथ प्रोसेस नाम और PID
- Protocol: TCP/UDP प्रोटोकॉल
- Source: स्थानीय एंडपॉइंट (पठनीय प्रारूप में रिज़ॉल्व किया गया)
- Destination: रिमोट एंडपॉइंट (पठनीय प्रारूप में रिज़ॉल्व किया गया)
- Status: कनेक्शन स्थिति (ESTABLISHED, LISTEN, आदि)
- TX: प्रोसेस I/O आंकड़ों से गणना की गई अपलोड दर
- RX: प्रोसेस I/O आंकड़ों से गणना की गई डाउनलोड दर
- Path:
/proc/[pid]/cmdlineसे पूर्ण कमांड पथ और आर्गुमेंट्स
पंक्ति क्रियाएँ
- लेफ़्ट क्लिक: एक पंक्ति चुनें (नीचे की स्ट्रिप में भी दिखाई जाती है)
- राइट क्लिक: Copy Value, Copy Command और Kill "process" (PID) के साथ कॉन्टेक्स्ट मेनू खोलें, जो पूछता है कि Terminate (SIGTERM) करना है या Force Kill (SIGKILL)
- Delete: वर्तमान में चयनित पंक्ति को किल करें (समान पुष्टि संवाद)
- Ctrl+C: सेल सामग्री कॉपी करें
- हेडर बार में Refresh बटन: तुरंत अपडेट करें (सूची हर 3 सेकंड में भी रीफ्रेश होती है)
टर्मिनल इंटरफ़ेस (TUI)

टर्मिनल इंटरफ़ेस लॉन्च करें:
cargo run --bin nmt
TUI एक इंटरैक्टिव टर्मिनल इंटरफ़ेस में समान मॉनिटरिंग क्षमताएँ प्रदान करता है:
की नियंत्रण:
q- एप्लिकेशन से बाहर निकलेंr- होस्टनेम रिज़ॉल्यूशन टॉगल करेंR- कनेक्शनों को मैन्युअल रूप से रीफ्रेश करेंa- ऑटो-रीफ्रेश टॉगल करें (2-सेकंड अंतराल)↑/↓- कनेक्शनों के माध्यम से नेविगेट करें←/→- तालिका को क्षैतिज रूप से स्क्रॉल करेंk/ राइट क्लिक - किसी पंक्ति के लिए kill मेनू खोलें (Terminate / Force Kill / Cancel)1-8- स्तंभों के अनुसार क्रमबद्ध करें (Process(ID), Protocol, Source, Destination, Status, TX, RX, Path)
माउस: लेफ़्ट क्लिक एक पंक्ति चुनता है, राइट क्लिक उसे चुनता है और kill मेनू खोलता है।
विशेषताएँ:
- ऑटो-रीफ्रेश के साथ रीयल-टाइम कनेक्शन मॉनिटरिंग
- दृश्य संकेतकों के साथ क्रमबद्ध करने योग्य स्तंभ
- चौड़ी तालिकाओं के लिए क्षैतिज स्क्रॉलिंग
- स्मार्ट स्तंभ आकार - अंतिम स्तंभ को पूरी शेष चौड़ाई मिलती है
- रंग-कोडित प्रोटोकॉल (TCP/TCP6 हरे में, UDP/UDP6 पीले में)
- सक्रिय कनेक्शन हाइलाइटिंग
- प्रोसेस और PID जानकारी
- लाइव I/O दर प्रदर्शन
- निरंतरता के लिए GTK4 संस्करण के समान स्तंभ क्रम
पता रिज़ॉल्यूशन
पठनीयता के लिए सामान्य पते सरल किए जाते हैं:
0.0.0.0:*या*:*→ANY127.0.0.1:*या[::1]:*→LOCALHOST224.0.0.251:*→MDNS
यह कैसे काम करता है
eBPF बैकएंड (इवेंट-चालित)
ऐप /proc/net को पोल करने के बजाय कर्नेल-स्तरीय kprobes (tcp_v4_connect, tcp_v6_connect, tcp_close,
inet_csk_accept) का उपयोग करता है। यह प्रदान करता है:
- इवेंट-चालित: सब-मिलीसेकंड इवेंट डिलीवरी, कोई पोलिंग ओवरहेड नहीं (~1-3% CPU)
- प्रत्यक्ष PID: प्रोब पॉइंट पर
bpf_get_current_pid_tgid()के माध्यम से कैप्चर किया गया, कोई inode स्कैनिंग नहीं - अल्पकालिक कनेक्शन: पोल अंतरालों के बीच कभी नहीं छूटते
eBPF मोड
eBPF बैकएंड डिफ़ॉल्ट /proc/net पोलिंग दृष्टिकोण की तुलना में कम ओवरहेड और रीयल-टाइम
इवेंट्स के साथ इवेंट-चालित कनेक्शन मॉनिटरिंग प्रदान करता है। यह अल्पकालिक कनेक्शनों को
कैप्चर कर सकता है जो पोलिंग से छूट सकते हैं।
पूर्वापेक्षाएँ:
rustup toolchain install nightly
cargo install bpf-linker
बिल्ड और रन:
cargo build
सामान्य उपयोगकर्ता के रूप में चलाएँ (kernel 5.8+ आवश्यक):
बाइनरी को एक बार आवश्यक Linux क्षमताएँ प्रदान करें:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/network-monitor
./target/debug/network-monitor
या TUI संस्करण के लिए:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/nmt
./target/debug/nmt
release बिल्ड के लिए, पथ को तदनुसार समायोजित करें:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/release/network-monitor