লিনাক্সে গন্তব্য দেওয়ার পরে আমি কীভাবে ডিফল্ট গেটওয়ে পাব?


11

আমি গন্তব্য 0.0.0.0 ব্যবহার করে ডিফল্ট গেটওয়েটি পাওয়ার চেষ্টা করছি

আমি এই আদেশটি ব্যবহার করেছি: netstat -rn | গ্রেপ 0.0.0.0

এবং এটি এই তালিকাটি ফিরিয়ে দেয়:

Destination - Gateway      - Genmask         - Flags - MSS - Window - irtt - Iface
10.9.9.17   - 0.0.0.0      - 255.255.255.255 - UH    - 0     0        0    - tun0
133.88.0.0  - 0.0.0.0      - 255.255.0.0     - U     - 0     0        0    - eth0
0.0.0.0     - 133.88.31.70 - 0.0.0.0         - UG    - 0     0        0    - eth0

আমার লক্ষ্য এখানে গন্তব্য 0.0.0.0 ব্যবহার করে ডিফল্ট গেটওয়ে পিং করা; সুতরাং, এটি "133.88.31.70"; কিন্তু এই 'গ্রেপ' ব্যবহারের কারণে একটি তালিকা ফিরে আসে।

প্রশ্নটি: আমি কীভাবে কেবল ডিফল্ট গেটওয়ে পাব? নেট সংযোগ চালু আছে কি না তা সনাক্ত করার জন্য আমার বাশ স্ক্রিপ্টটির প্রয়োজন হবে।

উত্তর:


21
DEFAULT_ROUTE=$(ip route show default | awk '/default/ {print $3}')
ping -c 1 $DEFAULT_ROUTE

এটা আপনার সমস্যা সমাধান করবে.


@ সুজি হা! দেখা? awk!
জেরেমি পাওয়েল

শেষের দিকে একক-উদ্ধৃতি / বন্ধনী বন্ধনী মেলে না বলে মনে করি - অন্যথায় যদিও দুর্দান্ত কাজ করে!
কে কে কোয়ান

3
আমি এই কমান্ডটির সাথে অনলাইনে বেশ কয়েকটি উত্তর দেখেছি, তবে "ডিফল্ট দেখান" কেন ব্যবহৃত হয় সেগুলির কোনও উত্তর নেই। আসলে কোনও প্যারামিটার ছাড়াই "আইপি রুট শো" আমার জন্য ঠিক একই কাজ করে। সুতরাং আমার প্রশ্ন হ'ল কমান্ডটিতে "ডিফল্ট" কেন? এর মানে কী?
ব্যবহারকারী 658991

@ ইউজার 658991 আমি এই খরগোশের গর্তটি নীচে রেখেছি এবং আপনি ঠিক ঠিক। এটি সর্বাধিক সাধারণ সংস্করণগুলিতে কিছুই করে ipনা। আসলে এটির ip route showজন্য একটি নাম ip route listএবং আপনি man ipদেখতে পারেন যে এই সাবকমন্ডের সিনট্যাক্স রয়েছে ip route { list | flush } SELECTOR... এবং তালিকাভুক্ত valid বৈধ নির্বাচকগুলির মধ্যে একটিও নয় default। আমার মনে হয় আমাদের যা করা ip route show table default উচিত তা করা উচিত , তবে দুর্ভাগ্যক্রমে, তা হয় না। অন্য কারও কাছে, লাইনটির ip route show | awk '/^default/{print $3}'
শুরুটিও মেলান

5
 ip route show default 0.0.0.0/0

এই কমান্ডের আরো অনেক কিছু দ্রুততর তারপর হয় ip route | grepঅনেক (10000+) যাত্রাপথ সঙ্গে সিস্টেমে ডিফল্ট

ব্যাকআপ হিসাবে পুরো বিজিপি এবং ম্যানুয়াল ডিফল্ট রুটের সাথে আমার রাউটারের উদাহরণ দেখুন

router:~# time ip route show default 0.0.0.0/0
default via XXX.XXX.192.254 dev eth0.123 

real    0m0.707s
router:~# time ip route | grep default
default via XXX.XXX.192.254 dev eth0.123 

real    0m8.596s
  • কারণ ip route show default showআমার জন্য সমস্ত রুট কেবল ডিফল্ট রুট নয়
  • কারণ ডিফল্ট বা 0.0.0.0/0 প্যারামিটার হিসাবে ip route getগ্রহণ না করে

Iproute2 এর মাধ্যমে সরাসরি নেটিভ ফিল্টারিং প্রদর্শনের জন্য +1 ! এমন অনেকগুলি ঘটনা রয়েছে যেখানে এই আশ্চর্যজনক ইউটিলিটি স্যুটটি লিগ্যাসি টেক্সটফু
স্বীকৃতভাবে

1
এটি একটি দুর্দান্ত উত্তর! তবে আমি এখনও আইপ্রউট 2 এর ডকুমেন্টেশন দ্বারা কিছুটা বিভ্রান্ত হয়ে পড়েছি। কমান্ডের "ডিফল্ট" কী বোঝায়? আমি যদি ডকটি সঠিকভাবে পড়ছি, এই আদেশটি "আইপি রুট শোতে ডিফল্ট 0/0" এর মতো হওয়া উচিত, আমি কি ঠিক আছি? "0/0" ফর্ম্যাটটি কী?
ব্যবহারকারী 658991

3

ip route show defaultডিফল্ট গেটওয়ের জন্য কৌশলটি করা উচিত, বা আপনি ip route get <someip>কোনও নির্দিষ্ট আইপি ঠিকানার জন্য রুটটি কী তা দেখতে ব্যবহার করতে পারেন।


আমি আইপি রুটের চেষ্টা করেছি এবং এটি সমস্ত গেটওয়েগুলির জন্য তালিকা প্রদর্শন করে .. এবং হ্যাঁ, ডিফল্টটি নীচেও প্রদর্শিত হয়। তার জন্য ধন্যবাদ. =) তবে এখানে আমার লক্ষ্য হল সেই ডিফল্ট গেটওয়ের জন্য আইপি ঠিকানাটি ব্যবহার করা। বাশ স্ক্রিপ্ট ব্যবহার করে, আমি এটিটি পাইপ করব যা এটির পরীক্ষা হয়েছে কিনা তা পরীক্ষা করে দেখুন।
সুয়েজি

"শো ডিফল্ট" এর জন্য আমি চারটি এন্ট্রি পাই। "আইপি রুট ডিফল্ট শো | awk '/ default / {মুদ্রণ $ 3}" "আপনাকে একাই আইপি ঠিকানাটি পাওয়া উচিত।
ডেভিড পাশলে

2

আপনি যদি netstatএটি ব্যবহার করে করতে চান (তাই এটি লিনাক্স নয় এমন কোনও কিছুতে কাজ করবে ) এর সাধারণ সমাধানটি হ'ল:

netstat -rn | grep '^\(default\|0\.0\.0\.0\)' | awk '{print $2}'

এ থেকে জানা যায় রাউটিং টেবিল, আইপিগুলি ব্যবহার বদলে হোস্ট-নেম (সমাধানে netstat -rn),
ডিফল্ট গেটওয়ে জন্য দেখায় (শুরু লাইন 0.0.0.0বা default),
ও গেটওয়ে হোস্ট (ফলাফল দ্বিতীয় ক্ষেত্র) ছাপে।

\নিয়মিত অভিব্যক্তিতে অক্ষরের বিস্তারটি উল্লেখযোগ্য:

  • \(এবং \)একটি গ্রুপ নির্দিষ্ট করুন
  • \| বিকল্প চরিত্রটি (বাম দিকের জিনিস বা ডান দিকের জিনিসগুলি)
  • আইপি ঠিকানার বিন্দুগুলি দ্বারা প্রতিনিধিত্ব করা হয় \.- যার অর্থ .নিয়মিত অভিব্যক্তির বিপরীতে আক্ষরিক চরিত্র .(যে কোনও একক অক্ষরের সাথে মিল রয়েছে) meaning

1
grep -eবা egrepবন্ধনী এবং পাইপ থেকে বাঁচতে না egrep '^(default|0\.0\.0\.0)'
মার্ক কে কোয়ান

1

আমি এটি এইভাবে করি:

#!/bin/sh
GATEWAY_DEFAULT=$(ip route list | sed -n -e "s/^default.*[[:space:]]\([[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\).*/\1/p")
echo ${GATEWAY_DEFAULT}

1
 ip route show default | grep default | awk {'print $3'}

এটা এখানে


grep defaultআপনি যখন ইতিমধ্যে defaultআপনার ipআদেশে রুটটি নির্দিষ্ট করবেন কেন ?
lindhe

0

খুব সহজ উপায় ... রাউটিং টেবিলটি জিজ্ঞাসা করুন এটি কীভাবে এটির নেটওয়ার্কের বাইরের আইপিতে আসে

গুগল ডিএনএস == 8.8.8.8

আইপি রুটটি 8.8.8.8 পান


0
ip route show 0/0

অথবা

ip route show 0.0.0.0/0

অথবা

ip route show 0.0.0.0/0.0.0.0

অথবা

ip -f inet route show default

অথবা

ip -4 route show default
  • যে সংস্করণগুলি আমি 'আইপি রুট শো' এবং 'আইপি রুট তালিকার' সমতুল্য হিসাবে পরীক্ষা করেছি ('আইপি রুট গেট' এর ক্ষেত্রে নয়)
  • Https://bugzilla.kernel.org/show_bug.cgi?id=197899 এ এখানে একটি ব্যাখ্যা রয়েছে

যদি আমি এটি সঠিকভাবে বুঝতে পারি তবে সেই সঠিক রুটের ডিফল্ট গেটওয়ে লুকআপ - অল-জিরো রুট - হয় IPv4 বা 0000: 0000: 0000: 0000: 0000: 0000 এর জন্য 0.0.0.0/0.0.0.0 (বা 0/0) : 0000: 0000 (বা: :) আইপিভি 6 এর জন্য।

তবে (!), আপনি যে-এএফ (-4 বা -6 অথবা -f ইনট বা -f ইনেট 6) ব্যবহার করতে চান তা নির্দিষ্ট না করে বা অল-জিরো রুটকে আইপিভি 4 বা আইপিভি 6 উপসর্গ হিসাবে নির্দিষ্ট করে (0/0 আইপিভি 4 বোঝায়) , এটি 'ডিফল্ট' কী তা বুঝতে পারে না ...

ব্যক্তিগতভাবে, আমি মনে করি না যে ম্যান পৃষ্ঠাটি এই সম্পর্কে খুব স্পষ্ট, তবে এটি কেবল আমার দুটি সেন্ট।

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