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

network-monitor v0.7.5

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

साझा करें

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

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

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

rust dependency status

विशेषताएँ

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

  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): सटीक 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)

network-monitor का nmt 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:* या *:* → 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

सामान्य उपयोगकर्ता के रूप में चलाएँ (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

श्रेणियाँ