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

Rust और GTK4 के साथ निर्मित एक रियल-टाइम नेटवर्क कनेक्शन मॉनिटरिंग टूल, जो आधुनिक ग्राफिकल इंटरफ़ेस में सक्रिय कनेक्शनों को लाइव I/O आँकड़ों के साथ प्रदर्शित करता है।
विशेषताएँ
- रियल-टाइम मॉनिटरिंग: सक्रिय नेटवर्क कनेक्शनों की निरंतर निगरानी करता है
- I/O आँकड़े: प्रत्येक कनेक्शन के लिए लाइव अपलोड/डाउनलोड दरें दिखाता है
- प्रोसेस पहचान: प्रत्येक कनेक्शन से जुड़े प्रोग्राम और PID को प्रदर्शित करता है
- आधुनिक 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): सटीक सॉकेट-से-प्रोसेस मैपिंग के साथ प्रोसेस नाम और PID
- Protocol: TCP/UDP प्रोटोकॉल
- Source: स्थानीय एंडपॉइंट (पठनीय प्रारूप में हल किया गया)
- Destination: रिमोट एंडपॉइंट (पठनीय प्रारूप में हल किया गया)
- Status: कनेक्शन स्थिति (ESTABLISHED, LISTEN, आदि)
- TX: प्रोसेस I/O आँकड़ों से गणना की गई अपलोड दर
- RX: प्रोसेस I/O आँकड़ों से गणना की गई डाउनलोड दर
- Path:
/proc/[pid]/cmdlineसे पूर्ण कमांड पथ और तर्क
टर्मिनल इंटरफ़ेस (TUI)

टर्मिनल इंटरफ़ेस लॉन्च करें:
cargo run --bin nmt
TUI एक इंटरैक्टिव टर्मिनल इंटरफ़ेस में समान मॉनिटरिंग क्षमताएँ प्रदान करता है:
मुख्य नियंत्रण:
q- एप्लिकेशन से बाहर निकलेंr- कनेक्शनों को मैन्युअल रूप से रीफ़्रेश करेंa- ऑटो-रीफ़्रेश टॉगल करें (2-सेकंड अंतराल)↑/↓- कनेक्शनों के माध्यम से नेविगेट करें←/→- तालिका को क्षैतिज रूप से स्क्रॉल करें1-8- कॉलम द्वारा सॉर्ट करें (Process(ID), Protocol, Source, Destination, Status, TX, RX, Path)
विशेषताएँ:
- ऑटो-रीफ़्रेश के साथ रियल-टाइम कनेक्शन मॉनिटरिंग
- विज़ुअल संकेतकों के साथ सॉर्ट करने योग्य कॉलम
- चौड़ी तालिकाओं के लिए क्षैतिज स्क्रॉलिंग
- स्मार्ट कॉलम साइज़िंग - अंतिम कॉलम को शेष पूरी चौड़ाई मिलती है
- रंग-कोडित प्रोटोकॉल (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
सामान्य यूज़र के रूप में चलाएँ (कर्नेल 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
यदि eBPF अनुपलब्ध है (क्षमताओं की कमी या असमर्थित कर्नेल) तो एप्लिकेशन एक सेटअप संदेश के साथ बाहर निकल जाएगा।
आर्किटेक्चर
- GTK4: आधुनिक क्रॉस-प्लेटफ़ॉर्म GUI फ्रेमवर्क
- Libadwaita: GNOME-शैली UI घटक
- Tokio: समवर्ती संचालन के लिए async रनटाइम
- Aya + eBPF: रियल-टाइम इवेंट के लिए kprobes के साथ कर्नेल-स्तरीय कनेक्शन ट्रेसिंग
- डायरेक्ट PID: प्रोब बिंदु पर
bpf_get_current_pid_tgid()के माध्यम से प्रोसेस पहचान - सिस्टम कॉल: I/O आँकड़ों के लिए सीधे
/proc/[pid]/ioपढ़ना - त्रुटि प्रबंधन:
thiserrorका उपयोग करके सुगम पुनर्प्राप्ति के साथ व्यापक त्रुटि प्रकार - प्रदर्शन कैशिंग: इष्टतम प्रदर्शन के लिए UI लेआउट कैशिंग
Linux पैकेज
दान
यदि आपको यह प्रोजेक्ट उपयोगी लगता है, तो कृपया इसके विकास में सहायता के लिए दान करने पर विचार करें।
- Monero:
88LyqYXn4LdCVDtPWKuton9hJwbo8ZduNEGuARHGdeSJ79BBYWGpMQR8VGWxGDKtTLLM6E9MJm8RvW9VMUgCcSXu19L9FSv - Bitcoin:
bc1q6mh77hfv8x8pa0clzskw6ndysujmr78j6se025
लाइसेंस
यह प्रोजेक्ट ओपन सोर्स है। विवरण के लिए LICENSE फ़ाइल देखें।