বাশের সাথে কীভাবে ইন্টারনেট সংযোগ পরীক্ষা করতে হবে?


113

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


2
পিং বিভিন্ন সাইট?

1
তবে আমি ওয়েবসাইটগুলি পিং করতে চাই না, অন্য কোনও বিকল্প নেই?
30:50

6
আমি কেবল দেখতে চাই যে অন্য উপায় আছে!
30:58

2
আপনি ঠিক একবারে অফলাইনে যেতে চান না এমন ঠিকানাগুলির সেটগুলিতে একটি প্যাকেট প্রেরণ ও গ্রহণ করার চেয়ে ভাল আর কোনও উপায় নেই, অন্য উপায় হ'ল আপনি যদি নিজের অ্যাপ্লিকেশনটিকে আরও জনসাধারণের কাছে পিং করতে না চান তবে আপনার বর্তমান সেট ডিএনএস চেক করুন ডোমেইন.
তামারা উইজসম্যান

14
আমি শুনতে চাই কেউ আওয়াজ না করে শুনছে কিনা!
কাজ

উত্তর:


131

পিং ছাড়াই

#!/bin/bash

wget -q --spider http://google.com

if [ $? -eq 0 ]; then
    echo "Online"
else
    echo "Offline"
fi

-কিউ : নীরবতা মোড

- স্পাইডার : পাবেন না, কেবল পৃষ্ঠার উপলভ্যতা পরীক্ষা করুন

$? : শেল রিটার্ন কোড

0 : "সমস্ত ঠিক আছে" কোডটি শেল করুন

উইজেট ছাড়াই

#!/bin/bash

echo -e "GET http://google.com HTTP/1.0\n\n" | nc google.com 80 > /dev/null 2>&1

if [ $? -eq 0 ]; then
    echo "Online"
else
    echo "Offline"
fi

2
খুব সুন্দর ... তবে অবশ্যই ধরে নিই যে বাক্সটিতে উইজেট রয়েছে। এম্বেড থাকা ডিভাইস এবং কী করবেন না সম্ভবত won't ;)
এরিক শেবাস্তা

5
এটি ব্যবহার করে দেখুন: প্রতিধ্বনি-e " google.com.com পান HTTP / 1.0 \ n \ n" | এনসি
গুগল ডটকম

1
tcping এখানে সাহায্য করবে। (www.yahoo.com 80 টিসিপি করুন) && এর প্রতিধ্বনি "সাইট আপ আপ"
ডেভিড রামিরেজ

যদি / অন্য বিবৃতি এখানে wirh ব্যাখ্যা ব্যবহার দুর্দান্ত। ধন্যবাদ !
দানিজেল-জেমস ডব্লিউ

1
@ ব্যবহারকারী 3439968 এর সময় শেষ হওয়ার ncবিষয়টি নিশ্চিত করার জন্য আপনাকে সময়সীমা যুক্ত করতে হবে। এর মতো কিছুnc google.com 80 -w 10
21

93

আপনার ডিফল্ট গেটওয়ে পিং করুন:

#!/bin/bash
ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` > /dev/null && echo ok || echo error

14
ভাল কৌশল, এটি কোনও ফাংশনে ব্যবহারের জন্য পরিবর্তন করা যেতে পারে: function ping_gw() { ... && return 0 || return 1 }এবং তারপরে ping_gw || (echo "no network, bye" && exit 1)
এটির

1
অন ​​ম্যাক ওএসে এটি অনুলিপি-পেস্টের মাধ্যমে কাজ করে না: "-বাশ: আইপি: কমান্ডটি পাইনি: অবৈধ বিকল্প - ডাব্লু"
বেনেডিক্ট এস ভোগলার

1
হোস্ট সংযুক্ত না থাকা অবস্থায় ভার্চুয়ালাইজেশন অতিথির কাছ থেকে চালিত হলে একটি মিথ্যা অ্যালার্ম দেয়।
তেরেসা ই জুনিয়র

1
প্রাথমিক ওএসে আমাকে মিথ্যা sণাত্মক মন্তব্য দেয় (0.4.1, এসার উচ্চাকাঙ্ক্ষী ই 15)
ম্যালকম

1
এই বিষয়ে সতর্কতা অবলম্বন করুন। আমি এটি করে কেবল এটি পরীক্ষা করেছি ifconfig down wlan0এবং আমার এখনও একটি ডিফল্ট গেটওয়ে রয়েছে এবং এটি মজাদার, যদিও আমি বাস্তবে বাইরের বিশ্বে পৌঁছাতে পারি না।
ব্রুনো ব্রোনোস্কি

29

এখানে তাদের পোস্টের জন্য ব্যবহারকারীদের কিছুটা হলেও সুপারকে ধন্যবাদ : https://bbs.archlinux.org/viewtopic.php?id=55485 ২০০৮-০৯-২০১২ 02:09:48 এ

/ সিস / ক্লাস / নেট সন্ধান করা এক উপায় হতে হবে

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

যখনই আমার ল্যাপটপটি নেটওয়ার্কের সাথে সংযুক্ত না থাকে তখন নীচের স্ক্রিপ্টটি প্রতি পাঁচ মিনিটে আমাকে পপআপ বার্তা পেতে বাধা দেয়।

#!/usr/bin/bash

# Test for network conection
for interface in $(ls /sys/class/net/ | grep -v lo);
do
  if [[ $(cat /sys/class/net/$interface/carrier) = 1 ]]; then OnLine=1; fi
done
if ! [ $OnLine ]; then echo "Not Online" > /dev/stderr; exit; fi

নতুনদের বাশ দেওয়ার জন্য নোট করুন: চূড়ান্ত 'যদি' স্টেটমেন্টটি অনলাইনে না হয় তবে [!] পরীক্ষা করে এবং যদি এটি হয় তবে প্রস্থান করা হবে। ম্যান বাশ দেখুন এবং আরও তথ্যের জন্য "এক্সপ্রেশন একত্রিত হতে পারে" সন্ধান করুন।

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

পিপিএস দি উপরোক্ত উবুন্টু 12.04 এ কাজ করে / অন্য কোনও ডিস্ট্রোতে / সিসের অস্তিত্ব থাকতে পারে। নিচে দেখ:

আধুনিক লিনাক্স ডিস্ট্রিবিউশনে একটি ভার্চুয়াল ফাইল সিস্টেম (sysfs, যা / proc এর সাথে তুলনীয়) হিসাবে একটি / sys ডিরেক্টরি অন্তর্ভুক্ত করে, যা সিস্টেমের সাথে সংযুক্ত ডিভাইসগুলিকে সঞ্চয় করে এবং মঞ্জুরি দেয়, যেখানে অনেকগুলি traditionalতিহ্যবাহী ইউএনআইএক্স এবং ইউনিক্সের মতো অপারেটিং সিস্টেম ব্যবহার করে / sys কার্নেল উত্স গাছের প্রতীকী লিঙ্ক হিসাবে। [উদ্ধৃতি আবশ্যক]

উইকিপিডিয়া থেকে https://en.wikedia.org/wiki/Files systemm হাইরেসি_স্ট্যান্ডার্ড


1
এখন সাবধান "! cat /sys/class/net/wwan0/carrierউবুন্টু 14.04 LTS কাজ করে না।
dotnetCarpenter

1
নেটওয়ার্কিং অক্ষম থাকলে ক্ষেত্রে ত্রুটি আউটপুট না থাকার 2>/dev/nullপরে আপনি রাখতে পারেন cat /sys/class/net/$interface/carrier
জার্নো

25

এটি ম্যাকোএসএক্সএক্স এবং লিনাক্স উভয় ক্ষেত্রেই কাজ করে:

#!/bin/bash

ping -q -w1 -c1 google.com &>/dev/null && echo online || echo offline

ping: invalid option -- w
অসম্প

fping google.comবা কেবল fping 8.8.8.8কোনও বোনাস দিয়ে যাদু করে তোলে আপনি এটির পরীক্ষা (" google.com is alive") ছাড়াই স্ট্যাটাস কোড পান ...
রজার

9

বাশে, এটি / dev / { udp , tcp } / হোস্ট / পোর্টের মাধ্যমে নেটওয়ার্ক র‌্যাপার ব্যবহার করে :

if : >/dev/tcp/8.8.8.8/53; then
  echo 'Internet available.'
else
  echo 'Offline.'
fi

( :বাশ নো-ওপ, কারণ আপনি কেবল সংযোগটি পরীক্ষা করতে চান, তবে প্রক্রিয়াজাত করছেন না))


7

আমি এর আগে স্ক্রিপ্ট লিখেছিলাম যে 80 টি পোর্টের সাথে সংযোগ করতে কেবল টেলনেট ব্যবহার করা হবে, তারপরে পাঠ্যটি প্রেরণ করুন:

HTTP/1.0 GET /index.html

এরপরে দুটি সিআর / এলএফ ক্রম রয়েছে।

আপনি যদি HTTP প্রতিক্রিয়াটির কোনও ফর্ম ফিরে পান তবে আপনি সাধারণত ধরে নিতে পারেন যে সাইটটি কাজ করছে।


3
চাকা পুনরুদ্ধার কেন? কার্ল এবং উইজেট উভয়ই নিখুঁতভাবে এটি করে।
অ্যাডাম রোজনফিল্ড

6
কারণ উইজেট এবং কার্ল সর্বদা উপলভ্য থাকে না (যেমন, কর্পোরেট পরিবেশে বিধিনিষেধ)। T = 0 সময় থেকে টেলনেট প্রতিটি ইউনিক্সের একটি স্ট্যান্ডার্ড অংশ।
প্যাক্সিডিয়াবল

হ্যাঁ, টেলনেটিং একটি দীর্ঘ সময়ের জন্য সংযোগ পরীক্ষা করার জন্য একটি দুর্দান্ত মানক উপায়।
পিটিবিএনএল

2
ভাল পয়েন্ট, যদিও উইজেট মোটামুটি সাধারণ। আরেকটি বিকল্প হ'ল নেটক্যাট (এনসি), যদিও এই ক্ষেত্রে এটি টেলনেটের চেয়ে কোনও উন্নতি নয়।
অ্যাডাম রোজেনফিল্ড

7

উপরের উত্তরটি আপনার ডিফল্ট গেটওয়ের সাথে নিখুঁতভাবে স্থিতিশীল সংযোগ স্থাপন করতে পারে এই সত্যটি মিস করে তবে এটির স্বয়ংক্রিয়র অর্থ এই নয় যে আপনি আসলে ইন্টারনেটে কোনও কিছুতে পৌঁছাতে পারবেন। ওপি জিজ্ঞাসা করে যে সে কীভাবে বিশ্বের সাথে সংযোগ পরীক্ষা করতে পারে। সুতরাং আমি গেটওয়ে আইপিটি আপনার ল্যানের বাইরে থাকা একটি পরিচিত আইপি (xyzw) এ পরিবর্তন করে শীর্ষের উত্তরটি পরিবর্তন করার পরামর্শ দিচ্ছি।

সুতরাং উত্তর হয়ে যাবে:

ping -q -w 1 -c 1 x.y.z.w > /dev/null && echo ok || echo error

কমান্ড প্রতিস্থাপনের জন্য অপ্রয়োজনীয় ব্যাকটিকগুলি অপসারণ [1]

আপনি যদি কিছু কোড কার্যকর করার আগে কেবল বিশ্বের সাথে সংযুক্ত আছেন তা নিশ্চিত করতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

if ping -q -w 1 -c 1 x.y.z.w > /dev/null; then
    # more code
fi

6

আপনার নেটওয়ার্ক টিসিপি ট্র্যাফিক ভিতরে এবং বাইরে প্রবেশের অনুমতি দেয় তা নিশ্চিত করুন, তারপরে আপনি নীচের কমান্ডটি দিয়ে আপনার জনসাধারণের মুখোমুখি আইপি ফিরে পেতে পারেন

curl ifconfig.co

5

কোনও ওয়েব সাইট আপ আছে কিনা এবং ওয়েব সার্ভারটি কোন স্থিতির বার্তা প্রদর্শন করছে তা পরীক্ষা করতে নিম্নলিখিত কমান্ডটি কার্যকর করুন:

$ curl -Is http://www.google.com | head -1 HTTP/1.1 200 OK

স্থিতি কোড '200 ওকে' এর অর্থ হল যে অনুরোধটি সফল হয়েছে এবং একটি ওয়েবসাইট পৌঁছনীয়।


2
আরও ভাল বাস্তবায়ন হতে পারেcurl -Is http://www.google.com | head -1 | grep 200; if [[ $? -eq 0 ]]; then; echo "Online"; else; echo "Offline"; fi;
লুকা গালাসো

4

যদি আপনার স্থানীয় নেমসারভারটি নিচে থাকে,

পিং 4.2.2.1

সর্বদা স্মরণে রাখা সহজ আইপি (এটি আসলে একটি নেমসার্ভার, এমনকি)।


5
পিং 8.8.8.8 (গুগল এনএস)
ব্যবহারকারী 3439968

4

শীর্ষ ভোট উত্তর তাই একটি ম্যাক তাদের জন্য, আমি সফলভাবে এই পরীক্ষিত থাকেন MacOS এর জন্য কাজ করে না:

GATEWAY=`route -n get default | grep gateway`
if [ -z "$GATEWAY" ]
  then
    echo error
else
  ping -q -t 1 -c 1 `echo $GATEWAY | cut -d ':' -f 2` > /dev/null && echo ok || echo error
fi

MacOS হাই সিয়েরা 10.12.6 এ পরীক্ষিত


2
অফলাইনে থাকাকালীন stderr এ ত্রুটি লেখা এড়াতে routeকমান্ডটি পরিবর্তন করুন route -n get default 2> /dev/null | grep gateway
ডেভস্টফ

4

এই বাশ স্ক্রিপ্টটি অবিচ্ছিন্নভাবে ইন্টারনেটের জন্য চেক করে এবং ইন্টারনেট উপলভ্য হলে একটি বীপ শব্দ করে।

#!/bin/bash
play -n synth 0.3 sine 800 vol 0.75
while :
do
pingtime=$(ping -w 1 8.8.8.8 | grep ttl)
if [ "$pingtime" = "" ] 
then 
   pingtimetwo=$(ping -w 1 www.google.com | grep ttl) 
   if [ "$pingtimetwo" = "" ] 
   then 
       clear ; echo 'Offline'
   else
       clear ; echo 'Online' ; play -n synth 0.3 sine 800 vol 0.75
   fi 
else
    clear ; echo 'Online' ; play -n synth 0.3 sine 800 vol 0.75
fi
sleep 1
done

3

সংক্ষিপ্ততম উপায়: fping 4.2.2.1=> "4.2.2.1 জীবিত"

আমি এটিকে পছন্দ করি কারণ এটি দ্রুত এবং কম ভার্বোস আউটপুটের চেয়ে কম pingহয়, আপনাকে এটি ইনস্টল করতে হবে down

আপনি কোনও নির্দিষ্ট ওয়েবসাইটের চেয়ে যে কোনও পাবলিক ডিএনএস ব্যবহার করতে পারেন ।

fping -q google.com && echo "do something because you're connected!"

-q একটি প্রস্থান কোড ফেরত দেয়, তাই আমি অনলাইনে কিছু চালানোর উদাহরণ দেখিয়ে চলেছি।

Mac এ ইনস্টল করার: brew install fping; উবুন্টুতে:sudo apt-get install fping


2

পিং আপনি যা করতে চাইছেন ঠিক তা করার জন্য ডিজাইন করা হয়েছিল। যাইহোক, যদি সাইটটি আইসিএমপি প্রতিধ্বনিকে অবরুদ্ধ করে, তবে আপনি সর্বদা কোনও সাইট, উইজেট বা কার্লের 80 টি পোর্ট করতে টেলনেটটি করতে পারেন।


2

গুগলের সূচী পাতাটি যাচাই করার আরও একটি উপায়:

#!/bin/bash

WGET="/usr/bin/wget"

$WGET -q --tries=20 --timeout=10 http://www.google.com -O /tmp/google.idx &> /dev/null
if [ ! -s /tmp/google.idx ]
then
    echo "Not Connected..!"
else
    echo "Connected..!"
fi

2

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

find /sys/class/net/ -maxdepth 1 -mindepth 1 ! -name "*lo*" -exec sh -c 'cat "$0"/carrier 2>&1' {} \; | grep -q '1'

Explenation:

এই কমান্ডের ব্যবহার findসঙ্গে -execসমস্ত ফাইল উপর রান কমান্ড নামে না *lo*/sys/class/net/ । এগুলি আপনার মেশিনে উপলব্ধ নেটওয়ার্ক ইন্টারফেস সম্পর্কিত তথ্য সম্বলিত ডিরেক্টরিগুলির লিঙ্ক হওয়া উচিত।

কমান্ডটি রান করা হচ্ছে একটি shকমান্ড যা carrierসেই ডিরেক্টরিগুলির মধ্যে ফাইলের বিষয়বস্তুগুলি পরীক্ষা করে । এর মানটির $interface/carrier3 টি অর্থ রয়েছে - উদ্ধৃতি :

মনে হয় এখানে তিনটি রাজ্য রয়েছে:

  • । / ক্যারিয়ারটি পঠনযোগ্য নয় (উদাহরণস্বরূপ যখন নেটওয়ার্ক ম্যানেজারে ইন্টারফেস অক্ষম থাকে)।
  • । / ক্যারিয়ারটিতে "1" থাকে (যখন ইন্টারফেসটি সক্রিয় হয় এবং এটি কোনও ওয়াইফাই নেটওয়ার্কের সাথে সংযুক্ত থাকে)
  • । / ক্যারিয়ারটিতে "0" থাকে (যখন ইন্টারফেসটি সক্রিয় থাকে এবং এটি কোনও ওয়াইফাই নেটওয়ার্কের সাথে সংযুক্ত থাকে না)

@ জেসির উত্তরে প্রথম বিকল্পটি যত্ন নেওয়া হয় না । shকমান্ড আউট ডোরাকাটা হল:

# Note: $0 == $interface
cat "$0"/carrier 2>&1

catcarrierফাইলটির পাঠ্যযোগ্য না হওয়ার কারণে ব্যর্থ হওয়া সত্ত্বেও সামগ্রীর সামগ্রীগুলি পরীক্ষা করতে এবং সমস্ত আউটপুটকে স্ট্যান্ডার্ড আউটপুটে পুনর্নির্দেশ করতে ব্যবহার করা হচ্ছে । যদি এই ফাইলগুলির মধ্যে grep -qপাওয়া যায় "1"তবে এর অর্থ কমপক্ষে 1 টি ইন্টারফেস সংযুক্ত রয়েছে। এর প্রস্থান কোড grep -qহবে চূড়ান্ত প্রস্থান কোড।

ব্যবহার

উদাহরণ হিসেবে বলা যায়, এই কম্যান্ডের এর প্রস্থানের অবস্থা ব্যবহার করে, আপনি এটি একটি শুরু ব্যবহার করতে পারেন gnubiff আপনার ~/.xprofileশুধুমাত্র যদি আপনার একটি ইন্টারনেট সংযোগ আছে।

online() {
    find /sys/class/net/ -maxdepth 1 -mindepth 1 ! -name "*lo*" -exec sh -c 'cat "$0"/carrier 2>&1 > /dev/null | grep -q "1" && exit 0' {} \;
}
online && gnubiff --systemtray --noconfigure &

উল্লেখ


1

পং মানে সার্ভারে ওয়েব পরিষেবা চলছে না; এটির অর্থ হ'ল সার্ভার ICMP প্রতিধ্বনির জবাব দিচ্ছে। আমি কার্ল ব্যবহার করার সুপারিশ করব এবং এর ফেরতের মানটি পরীক্ষা করব check


0

যদি আপনার লক্ষ্যটি আসলে ইন্টারনেট অ্যাক্সেসের জন্য যাচাই করা হয় , তবে এই প্রশ্নের বিদ্যমান অনেক উত্তর ত্রুটিযুক্ত। কয়েকটি বিষয় সম্পর্কে আপনার সচেতন হওয়া উচিত:

  1. আপনার কম্পিউটারের পক্ষে সেই নেটওয়ার্কটিতে ইন্টারনেট অ্যাক্সেস না থাকলে কোনও নেটওয়ার্কের সাথে সংযুক্ত হওয়া সম্ভব
  2. পুরো ইন্টারনেট অ্যাক্সেসযোগ্য না হয়ে কোনও সার্ভারের ডাউন হওয়া সম্ভব
  3. বন্দি পোর্টালের পক্ষে আপনার কাছে ইন্টারনেট অ্যাক্সেস না থাকলেও একটি নির্বিচার URL এর জন্য এইচটিটিপি প্রতিক্রিয়া ফিরিয়ে দেওয়া সম্ভব return

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

উদাহরণ স্বরূপ:

connected_to_internet() {
  test_urls="\
  https://www.google.com/ \
  https://www.microsoft.com/ \
  https://www.cloudflare.com/ \
  "

  processes="0"
  pids=""

  for test_url in $test_urls; do
    curl --silent --head "$test_url" > /dev/null &
    pids="$pids $!"
    processes=$(($processes + 1))
  done

  while [ $processes -gt 0 ]; do
    for pid in $pids; do
      if ! ps | grep "^[[:blank:]]*$pid[[:blank:]]" > /dev/null; then
        # Process no longer running
        processes=$(($processes - 1))
        pids=$(echo "$pids" | sed --regexp-extended "s/(^| )$pid($| )/ /g")

        if wait $pid; then
          # Success! We have a connection to at least one public site, so the
          # internet is up. Ignore other exit statuses.
          kill -TERM $pids > /dev/null 2>&1 || true
          wait $pids
          return 0
        fi
      fi
    done
    # wait -n $pids # Better than sleep, but not supported on all systems
    sleep 0.1
  done

  return 1
}

ব্যবহার:

if connected_to_internet; then
  echo "Connected to internet"
else
  echo "No internet connection"
fi

এই পদ্ধতির সম্পর্কে কিছু নোট:

  1. আমি উপরে উল্লিখিত সমস্ত মিথ্যা ধনাত্মক এবং নেতিবাচক বিরুদ্ধে এটি শক্ত rob
  2. অনুরোধগুলি সমস্ত গতির সর্বাধিক সমান্তরালে ঘটে
  3. যদি আপনার প্রযুক্তিগতভাবে ইন্টারনেট অ্যাক্সেস থাকে তবে এটি ডিএনএস অকার্যকর বা আপনার নেটওয়ার্ক সেটিংস অন্যথায় বিশৃঙ্খল হয়ে থাকে তবে এটি মিথ্যা প্রত্যাবর্তন করবে , যা আমার মনে হয় বেশিরভাগ ক্ষেত্রে করা যুক্তিসঙ্গত জিনিস is

কার্ল থেকে রিটার্ন কোড পরীক্ষা করা হচ্ছে না। আমার সিস্টেমে যদি নেটওয়ার্ক উপলভ্য না থাকে তবে কার্ল rc = 6 দেয় (ব্যর্থ ডিএনএস রেজোলিউশন) তবে এই কোডটি এখনও "ইন্টারনেটে সংযুক্ত" হিসাবে প্রতিবেদন করে।
সিপারম্যান

@ আইসিপিম্যান কার্লের জন্য রিটার্ন কোডটি যেখানে লেখা আছে সেখানে পরীক্ষা করা হয় if wait $pid;। কেন এটি আপনার সিস্টেমে কাজ করছে না ধারণা নেই। আপনি কি নিশ্চিত ব্যাশ ব্যবহার করছেন?
আজেদী 32

@ ইজমেন আরেকটি সম্ভাবনা; সম্ভবত উপরের তালিকায় URL গুলির এক আসলে না , আপনার জন্য আগমন সাফল্য যদিও অন্যদের নাম রেজল্যুশন ব্যর্থ হয়?
Ajedi32

2
আমার বাশটি বেশ বেসিক তাই আমি পড়তে waitএবং এখন বুঝতে পারি রিটার্ন কোডটি সত্যই পরীক্ষিত হচ্ছে। আমি আপনার কোডটি আবার অনুলিপি করেছি এবং আজ এটি কাজ করে - ওফ! আমি অবশ্যই শেষবারের মতো কিছু গণ্ডগোল করেছিলাম যদিও আমি কী কীভাবে বুঝতে পারি না। তবুও মায়া কুলপা। দুঃক্ষিত।
ceperman


-1

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

কৌশলটি আইপি সমাধান করছে যার দ্বারা নিযুক্ত একজনের চেয়ে কম ব্যস্ত ডিএনএস সলভার ব্যবহার করে ping:

validateConnection () {
    host="${1}"
    ip=$(getent ahostsv4 "${host}" | awk '{ print $1 }' | head -n1)
    ping -c1 "${ip}" 2>&1 >"/dev/null"

    if [ "${?}" -ne 0 ]; then
        echo "No connection to: ${host}" >&2
        exit 1
    fi
}

2
যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত উত্তর পরিবর্তিত হলে লিঙ্কযুক্ত উত্তরগুলি অবৈধ হতে পারে। - পর্যালোচনা থেকে
ডেভিড বাক

এটি এই বিশেষ পরিস্থিতিতে প্রযোজ্য নয়।
আলবার্তো সালভিয়া নভেল্লা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.