अपडेट पर वापस जाएँ
New releaseAug 15, 2026

network-monitor v0.7.5

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

साझा करें

नेटवर्क मॉनिटर

Linux पर GNOME डेस्कटॉप पर नेटवर्क मॉनिटर डेमो

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

rust dependency status

विशेषताएँ

  • रियल-टाइम मॉनिटरिंग: सक्रिय नेटवर्क कनेक्शनों की निरंतर निगरानी करता है
  • 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: डेस्कटॉप एकीकरण के साथ स्रोत से स्थापना

  1. रिपॉज़िटरी क्लोन करें:
git clone <repository-url>
cd network-monitor
  1. स्थानीय रूप से स्थापित करें (sudo आवश्यक नहीं):
./scripts/install.sh
  1. या सिस्टम-व्यापी रूप से स्थापित करें (sudo आवश्यक):
sudo ./scripts/install.sh

स्थापना स्क्रिप्ट निम्नलिखित करेगी:

  • GTK4 और TUI दोनों बाइनरी बनाएगी (स्थानीय के लिए debug, सिस्टम-व्यापी के लिए release)
  • बाइनरी को ~/.local/bin/ (स्थानीय) या /usr/local/bin/ (सिस्टम-व्यापी) में स्थापित करेगी
  • GNOME डॉक पिनिंग के लिए उचित WM क्लास के साथ डेस्कटॉप फ़ाइल स्थापित करेगी
  • आइकनों को उपयुक्त आइकन निर्देशिकाओं में स्थापित करेगी
  • आइकन कैश और डेस्कटॉप डेटाबेस को अपडेट करेगी
  • सुनिश्चित करेगी कि एप्लिकेशन GNOME डॉक/डैशबोर्ड पर पिन की जा सके

विधि 2: सीधे बनाएँ और चलाएँ

  1. रिपॉज़िटरी क्लोन करें:
git clone <repository-url>
cd network-monitor
  1. बनाएँ और चलाएँ:
cargo run

या release मोड में बनाएँ:

cargo build --release
./target/release/network-monitor

विधि 3: TUI संस्करण बनाएँ और चलाएँ

  1. रिपॉज़िटरी क्लोन करें:
git clone <repository-url>
cd network-monitor
  1. 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)

network-monitor का nmt 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:* या *:*ANY
  • 127.0.0.1:* या [::1]:*LOCALHOST
  • 224.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 पैकेज

Packaging status

दान

यदि आपको यह प्रोजेक्ट उपयोगी लगता है, तो कृपया इसके विकास में सहायता के लिए दान करने पर विचार करें।

  • Monero: 88LyqYXn4LdCVDtPWKuton9hJwbo8ZduNEGuARHGdeSJ79BBYWGpMQR8VGWxGDKtTLLM6E9MJm8RvW9VMUgCcSXu19L9FSv
  • Bitcoin: bc1q6mh77hfv8x8pa0clzskw6ndysujmr78j6se025

लाइसेंस

यह प्रोजेक्ट ओपन सोर्स है। विवरण के लिए LICENSE फ़ाइल देखें।

श्रेणियाँ