অনলাইনে কম্পিউটার চেক করার জন্য পিংয়ের চেয়ে আরও দ্রুততর উপায়?


20

আমি আমাদের ল্যাব কম্পিউটারগুলির একটি সেট জন্য ল্যান স্ক্রিপ্টে একটি ওয়েক লিখছি। আমাদের কম্পিউটার হোস্টনাম, আইপি, এবং ম্যাকগুলির একটি তালিকা সহ স্ক্লাইট ডিবি রয়েছে এবং বর্তমানে আমি তাদের প্রত্যেককে '-c1' দিয়ে পিং করছি যাতে এটি নিরবচ্ছিন্নভাবে চলতে পারে না - তবে এটির জন্য কিছুটা অপেক্ষার দরকারও আছে, কি আরও দ্রুত উপায় পাওয়ার উপায় আছে? উত্তর কি পিংয়ের চেয়ে? পিং ব্যবহার করা স্ক্রিপ্টটি বেশ খানিকটা মন্থর করবে বলে চালিয়ে যাওয়ার জন্য পিং উত্তরগুলির প্রয়োজন।

কোন পরামর্শের জন্য অনেক ধন্যবাদ!

উত্তর:


20

একটি একক প্যাকেট পাঠানো এবং প্রতিক্রিয়াটির জন্য অপেক্ষা করা দ্রুততম উপায়গুলির মধ্যে একটি হতে চলেছে, এবং পিং এটি করার জন্য একটি দুর্দান্ত উপায়। প্রকৃতপক্ষে, আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে আমি যুক্তি দিয়েছিলাম যে এটি খুব দ্রুত , কারণ সিস্টেমটি আপনাকে বাস্তবে কোনও কার্যকর কাজ করছে কিনা তা আপনাকে সত্যিই জানায় না, যেমন কার্নেলের নেটওয়ার্ক সাবসিস্টেমটি জীবিত এবং কনফিগার করা আছে।

তবে ধরে নিই যে এটি যথেষ্ট ভাল, আপনি কিছু উন্নতি করতে পারেন। প্রথমত, আপনি -W1পিংয়ের সময়সীমা এক সেকেন্ডে হ্রাস করতে ব্যবহার করতে পারেন । দ্বিতীয়ত, আপনি আপনার স্ক্রিপ্টটি বিভিন্ন হোস্টকে অবিচ্ছিন্নভাবে পটভূমি করতে পারেন (পটভূমির থ্রেডে), এবং অপেক্ষা করার পরিবর্তে ফলাফলগুলি প্রয়োজনীয় হিসাবে পরীক্ষা করতে পারেন।

পর্যায়ক্রমে, আপনি পদ্ধতির পুনরায় চিন্তা করতে পারেন এবং রিমোট সিস্টেমগুলি যখন উঠে যায় তখন কোনওভাবে চেক করে নিতে পারেন এবং যদি কোনও সিস্টেম চেক ইন না করে থাকে তবে আপনি ধরে নিতে পারেন যে এটি ডাউন।


নতুন সংযোজন সম্পর্কে ভাল কল, এটি দুটি করতে হয়েছিল যদিও একগুচ্ছ কম্পিউটারগুলি যথেষ্ট দ্রুত সাড়া দেয়নি। পাশাপাশি সাময়িকভাবে চেক-ইন বা হ্যান্ড শেক কিছু ধরণের যোগ করার দিকে নজর দিতে পারে তবে আপাতত আমি যে কম্পিউটারগুলি চালু করছি তার চেয়ে অপেক্ষাকৃত বাহ্যিক প্রক্রিয়াটি রাখতে চাই।
জন ফেনো

1
আমি একটি ছোট প্যাকেট প্রেরণ করতেও ব্যবহার করি।
শন জে গফ

3
আমি যদি কোনও ছোট প্যাকেট প্রেরণ করে কোনও পার্থক্য করে তবে আমি হতবাক হয়ে যাব।
mattdm

এগুলি কি ইতিমধ্যে ন্যূনতম ন্যূনতম আকারের প্যাকেটগুলিতে প্রেরণ করা হয়নি?
জন ফেনো

4
তারা বেশ ছোট; এখানে 56 ডেটা বাইটের ডিফল্ট রয়েছে, যা আপনি হ্রাস করতে পারবেন। তবে যে কোনও ক্ষেত্রে এটি ইথারনেট এমটিইউর চেয়ে ছোট এবং কোনও কিছুর চেয়ে বড় নয়, সুতরাং এটি "এক প্যাকেট" এ নেমে আসে।
ম্যাটডেম

7

এটিই ফপিংয়ের জন্য ডিজাইন করা হয়েছিল। http://fping.sourceforge.net/

আপনাকে রিটার্ন কোডের উপর নির্ভর না করে আউটপুটটি পরে বিশ্লেষণ করতে হবে, তবে এটি স্বাভাবিক পিং করার চেয়ে অনেক দ্রুত is


আমি মনে করি এটি মজার মজার বিবরণে বলা হয়েছে "পিংয়ের বিপরীতে, ফাইপিংকে স্ক্রিপ্টগুলিতে ব্যবহার করতে বোঝানো হয় এবং এর আউটপুট পার্স করা সহজ" " এবং এখনও এটি কোনও রিটার্ন কোড সরবরাহ করে না
অ্যাডাম প্লোচার

রিটার্ন কোডের জন্য ভাল মানগুলি কী হবে?
থোরবজর্ন রাভন অ্যান্ডারসন

3

এটি কেবল এক বা দুটি কম্পিউটারের জন্য কাজ করবে, তবে আপনি যদি তাদের স্থিতি পরীক্ষার জন্য দায়বদ্ধ কম্পিউটারের সাথে সরাসরি সংযোগ করেন তবে আপনি ethtoolলিঙ্কটি সক্রিয় আছে কিনা তা দেখতে ব্যবহার করতে পারেন।


আমি এর জন্য ইথল ব্যবহার করি নি, আপনি কি একটি উদাহরণ দিতে চান? (বা হতে পারে একটি লিঙ্ক)?
জোহান

ethtool {network_interface} | grep "Link detected" | cut -f 3 -d ' 'ফিরে আসবে yesযদি একটি মেশিন সংযুক্ত করা হয়, এবং noযদি না হয় তাহলে।
লরেন্স

2

আপনি এটি কীভাবে সম্প্রচারের ঠিকানাতে পিং করতে পারেন যা সমস্ত কম্পিউটারকে পিছনে ফেলে দেয়। তারপরে আপনি এসকিউএলাইটে থাকা সমস্ত কম্পিউটারের কাজ শেষ হয়েছে তা নিশ্চিত করার জন্য আপনি এই তালিকাটি পরীক্ষা করে দেখতে পারেন।

অন্যথায় যে কোনও কম্পিউটারে একটি কম্পিউটার জাগ্রত হয় তা নিশ্চিত করার একটি পিং সম্ভবত দ্রুততম উপায়। অন্য উত্তরের দ্বারা উল্লিখিত হিসাবে এটি কোনও কার্যকর উপাত্ত সরবরাহ করে না। আপনার যদি স্ক্রিপ্টগুলি ইনস্টল করার দক্ষতা থাকে তবে আপনি কেন্দ্রীয় সার্ভারে পিং করার জন্য ক্রোনজব যুক্ত করতে পারেন, একটি টাস্ক চালাতে পারেন, বা কেবল একটি কেন্দ্রীয় সার্ভারে প্রক্রিয়া তালিকাটি প্রতিধ্বনিত করতে পারেন যা অনুরোধটি লগ করবে। তারপরে কেবল যাচাই করা আপনাকে জানাবে যে আপনার কাছে প্রতিবার ম্যানুয়ালি চেক করার কোনও সমস্যা নেই কিনা।


1
আমি ধরে নিলাম আপনার অর্থ ব্রডকাস্টের ঠিকানাটি পিং করা হয়েছে, গেটওয়ে নয়। আধুনিক সিস্টেমে, সম্ভবত এটি কাজ করবে না। Unix.stackexchange.com/questions/7458/cant-ping-broadcast
mattdm

1
@ ম্যাটডেম: মাল্টিকাস্ট তখন? আমি জানতাম না বেশিরভাগ লোকেরা এটি বন্ধ করে দিয়েছে। এর আগে আমি এর আগে সমস্যার মুখোমুখি হই নি।
জোশ কে

হাহা হ্যাঁ ধন্যবাদ ম্যাটডেম, আপনি দেখতে পাচ্ছেন একই সমস্যা ran এটি নয় যে লোকেরা তাদের বন্ধ করে দেয় তবে তারা সাধারণত ইদানীং আপাতভাবে সম্প্রচার বন্ধ করে আসে।
জন ফেনো

সমান্তরালভাবে হোস্টের তালিকাকে পিন করতে fping ( fping.sourceforge.net ) ব্যবহার করতে পারত । তারপরে আপনাকে সম্প্রচারের ঠিকানাটি পিং করতে সক্ষম হতে হবে না।
mazianni

2

গাঙ্গালিয়া একটি ক্লাস্টারে অনেক হোস্টকে নিরীক্ষণ করার জন্য মাল্টিকাস্ট ট্র্যাফিক ব্যবহার করে, সম্ভবত আপনি কি অনুরূপ কিছু ব্যবহার করতে পারেন? এটি ধরে নেওয়া হয় যে আপনার নেটওয়ার্কিং হার্ডওয়্যারটি সমস্ত হোস্ট এবং আপনার মনিটরিং সিস্টেমের মধ্যে মাল্টিকাস্ট ট্র্যাফিকের অনুমতি দেয়।


1
দেখতে দুর্দান্ত সরঞ্জামের মতো মনে হচ্ছে তবে এই ছোট স্ক্রিপ্টের উদ্দেশ্যে প্রকল্পে কিছু অপ্রয়োজনীয় খণ্ড যুক্ত হতে পারে, এটি আপাতত সুন্দর একটি স্ক্রিপ্ট হিসাবে রাখুন। যদিও এটি অবশ্যই আমার দিকে নজর রাখবে, এমন একটি সরঞ্জামের মতো মনে হচ্ছে আমি খুব শীঘ্রই কম ব্যবহার করতে পারি।
জন ফেনো

0

আমারও একই সমস্যা ছিল এবং নিম্নলিখিত (দ্রুত এবং নোংরা) স্ক্রিপ্ট নিয়ে এসেছি। এটি প্রয়োজনীয়ভাবে সমান্তরালভাবে পৃথক কাজ হিসাবে সমস্ত পিংগুলি ইস্যু করে এবং 3 সেকেন্ডের মধ্যে একটি সম্পূর্ণ / 24 সাবনেট স্ক্যান করবে; মনে রাখবেন যে কোনও কারণে আমি এখানে পিং রেজাল্ট কোডটি ব্যবহার করতে পারি না তা জানার জন্য বিরক্ত করিনি তবে গ্রেপ-ভি কাজটি করেছে:

#!/bin/bash
case $# in
1)
  case $1 in
  [1-9]*)
        echo
        echo Systems active in subnet: $1
        for (( K = 1 ; K < 255 ; K=$K+1 )); do
        # grep -v delivers 0 on no matches
                echo -ne "testing:" $1$K "...    \r"
                (if ping -c 1 -w 1 -n $1$K 2>&1 | grep -q '64 bytes' ; then
                echo $1$K alive "                "
                fi) &
        done
        sleep 3
        echo "                               "
        exit 0
        ;;
  esac;;
esac

0

সি তে,

/* count = 1, wait interval = 1 second, no name lookup, */
/* 10 data bytes, 1 second timeout, 200 millisecond wait time */

sprintf(command,"ping -c1 -i1 -n -s10 -t1 -W200 %u" 
   , connection[port].IPAddress);
err = system(command);
/* err == 0 means OK */

0

আমি fping -r0 ...দ্রুততম প্রতিক্রিয়া সরবরাহ করতে পেয়েছি ।

-r(পুনরায় চেষ্টা) বিকল্প অনুরূপ তুলনায় দ্রুততর বলে মনে হয় -c(COUNT)। -r0শুধুমাত্র একটি পিং পাঠানো হচ্ছে ফলাফলগুলি ব্যবহার করা এবং অন্যান্য বিকল্পের তুলনায় আউটপুটটি খুব সংক্ষেপে।

আমার সিস্টেমে ...

fping -r0 PRINTER LX00 LX01 LX02 LX03 HA01  2>&1

ফলাফল স্বরূপ...

LX00 is alive
LX02 is alive
HA01 is alive
ICMP Host Unreachable from 192.168.1.5 for ICMP Echo sent to LX01
PRINTER is unreachable
LX01 is unreachable
LX03 is unreachable

ICMPবার্তা (গুলি) থেকে মুক্তি পেতে একটু ম্যাসেজ করা আমাকে দেয় ...

fping -r0 PRINTER LX00 LX01 LX02 LX03 HA01  2>&1 | grep ' is ' | sort

HA01 is alive
LX00 is alive
LX01 is unreachable
LX02 is alive
LX03 is unreachable
PRINTER is unreachable

গতি হিসাবে, fping4 জিবি র‌্যাম সহ এই পুরানো 1.8GHz ইন্টেল ডুয়াল-কোরটি হ'ল ...

time fping -r0 PRINTER LX00 LX01 LX02 LX03 HA01 2>&1

LX00 is alive
LX02 is alive
HA01 is alive
PRINTER is unreachable
LX01 is unreachable
LX03 is unreachable

real    0m0.554s
user    0m0.000s
sys     0m0.000s

আর grepsortশুধু সময় 0.001-0.004s যোগ করার জন্য মনে ...

time fping -r0 PRINTER LX00 LX01 LX02 LX03 HA01 2>&1 | grep ' is ' | sort

HA01 is alive
LX00 is alive
LX01 is unreachable
LX02 is alive
LX03 is unreachable
PRINTER is unreachable

real    0m0.558s
user    0m0.000s
sys     0m0.000s

মন্তব্য

  • ICMPবার্তা প্রত্যেক চালনার ঘটবে না।
  • 2>&1প্রতিরোধ করা প্রয়োজন ICMPথেকে বার্তা যেমন পাঠানো হয় আউটপুটে দেখানো stderrপরিবর্তে stdout
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.