উত্তর:
এক-liners,:
nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2
nm-tool | grep -i gateway | awk '{print $2}
netstat -nr | awk '$1 == "0.0.0.0"{print$2}'
arp -n | awk '{print $1}'
দ্রষ্টব্য: আপনার মেশিনটি যদি কেবলমাত্র নেটওয়ার্কে একমাত্র হয় তবে কাজ করেip route show | grep -i 'default via'| awk '{print $3 }'
আউটপুট: 192.168.0.1
আমার জন্য
দ্রষ্টব্য :
15.04 এর পরে এবং তারপরে, নেই nm-tool
, তাই ব্যবহার করুন nmcli dev show <IFACE>
। উদাহরণ স্বরূপ,
$ nmcli dev show wlan7 | grep GATEWAY
IP4.GATEWAY: 192.168.0.1
IP6.GATEWAY:
সম্পাদনা এবং অতিরিক্ত তথ্য
যেমন আপনি কমান্ডটি পরীক্ষা করে দেখতে পাচ্ছেন, আমরা আউটপুট নিয়েছি nm-tool
(যা নোট করে, নেটওয়ার্কম্যানেজারের কাছ থেকে তথ্য নেয়), শব্দযুক্ত লাইন খুঁজে বের করে gateway
, প্রতিধ্বনির সাথে তথ্যের চেয়ে মুদ্রণ (স্পেস দ্বারা পৃথক করা), এবং তারপরে পুরোটির দ্বিতীয় মাত্রটি কেটে ফেলা হয় আউটপুট। দ্রষ্টব্য, আপনার যদি সেখানে দুটি বা ততোধিক সংযোগ থাকে তবে আপনার উপরের xargs echo | cut -d' ' -f2
অংশটি সরানোর প্রয়োজন হতে পারে এবং এর সাথে প্রতিস্থাপন করতে পারেন awk '{print $2}'
; অন্য কথায় পুরো লাইনটি দেখতে এমন হবে nm-tool | grep -i gateway | awk '{print $2}'
। বিকল্প nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
হিসাবে আপনি মন্তব্যগুলিতে অবিনাশ রাজ প্রস্তাবিত হিসাবে ব্যবহার করতে পারেন । আপনি দেখতে পাচ্ছেন যে এখানে বিশেষ কিছুই করা হয়নি, এবং পুরো অগ্নিপরীক্ষাটি কেবল আউটপুট সম্পাদনা সরঞ্জাম যেমন কাট, আওক এবং গ্রেপ ব্যবহার করার জন্য অনুশীলন।
গেটওয়ের তথ্য পাওয়ার আরেকটি পদ্ধতি হ'ল nmcli dev list
(হ্যাঁ, এখনও নেটওয়ার্ক পরিচালকের উপর নির্ভর করে) কমান্ডটি দিয়ে। nmcli
নেটওয়ার্ক ম্যানেজারের কমান্ড - লাইন সংস্করণ। আপনি চালাতে পারেন nmcli dev list | grep -i routers
বা আপনি চালাতে পারেন nmcli dev list | grep -i 'gw ='
। আবার, আপনি চাইলে কাঙ্ক্ষিত আইপি ঠিকানা ব্যতীত অন্য সমস্ত তথ্য কাটাতে অনুশীলন করতে পারেন।
যেহেতু মূল প্রশ্নে কেবলমাত্র ডিফল্ট গেটওয়েটি প্রিন্ট করা ছিল কেবলমাত্র স্পেসিফিকেশন, আমি এখানে এনএম-সরঞ্জামের আউটপুট নির্ভর করছি। নেটওয়ার্ক ম্যানেজারটি উবুন্টুর সাথে ডিফল্টরূপে আসে, এটি উবুন্টুর নেটওয়ার্ক সংযোগ পরিচালনার মানক উপায়। যদি আপনি অন্য কিছু ব্যবহার করেন, যেমন ভিক্ট বা wpa_cli এর মাধ্যমে সংযুক্ত হন, এনএম-সরঞ্জাম আপনাকে কোনও উত্তর সরবরাহ করবে না। এই ক্ষেত্রে আপনি অন্যান্য ব্যক্তির জবাব আরও কার্যকরভাবে পেতে পারেন।
আরও একটি ডিস্ট্রো-নিউট্রাল এবং কনফিগার-নিউট্রাল বিকল্প ব্যবহার করা হবে netstat -n
যা কার্নেল রাউটিং টেবিলের অনুরূপ ব্যবহার করে route -n
। এটি আউটপুট নম্র, বিস্ময়ের কিছু নেই।
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
এবং আপনার কাঙ্ক্ষিত তথ্য কাটা উপায় এখানে: netstat -nr | awk '$1 == "0.0.0.0"{print$2}'
অন্য একটি, পাশাপাশি নিরপেক্ষ: arp -n | awk '{print $1}'
eth0
এবং wlan0
উভয় সক্রিয়ভাবে সংযুক্ত কিন্তু কেবলমাত্র গেটওয়েতে কনফিগার করা রয়েছে wlan0
, nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2
কেবল আউটপুটগুলি 0.0.0.0
। nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
দুটি লাইন আউটপুট দেয়: 0.0.0.0
তারপরে 192.168.1.1
। ( উপায়গুলি ip route ...
ও route -n ...
উপায়গুলি কেবলমাত্র উত্পাদন করে 192.168.1.1
, যা আমি সবচেয়ে পছন্দসই ফলাফল হিসাবে বিবেচনা করব))
network-manager
উদাহরণস্বরূপ ifupdown
বা ifconfig
.. দ্বারা যদি নেটওয়ার্ক পরিচালনা না করা হয় তবে এটি কাজ করবে না .. এই ক্ষেত্রেগুলি nm-tool
কাঙ্ক্ষিত আউটপুট উত্পন্ন করে না ... সংক্ষেপে এই উত্তরটি সম্পূর্ণরূপে পরিচালিত নেটওয়ার্কের উপর নির্ভর করে network-manager
..
আপনি এটি অনেক উপায়ে খুঁজে পেতে পারেন
ip route show default
একটি ভাল প্রশ্ন, আপনি বা কীভাবে আউটপুটটি আকার দিতে চান?
ip route show | awk '/default/ {print $3}'
tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2}' | uniq
মন্তব্যগুলি থেকে - (অবিনাশ রাজকে ধন্যবাদ 0
tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2;exit}'
uniq
শুধু tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2;exit}'
5in হবে।
আপনি সাধারণত ব্যবহার হিসাবে route -n
, আপনি এই sed
সমাধান সঙ্গে মিলিয়ে চেষ্টা করতে পারেন route -n
:
route -n | sed -nr 's/(0\.0\.0\.0) +([^ ]+) +\1.*/\2/p'
এখানে একটি পরীক্ষা:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
192.168.0.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
$ route -n | sed -nr 's/(0\.0\.0\.0) +([^ ]+) +\1.*/\2/p'
192.168.1.1
অন্য উপায় ব্যবহার করা হবে grep
:
$ route -n | tr -s ' ' | grep -Po "(?<=0\.0\.0\.0 )[^ ]+(?= 0\.0\.0\.0)"
192.168.1.1
@ অভিনাশরাজ যেমন উল্লেখ করেছেন যে এটি কেবল ব্যবহার করেই করা যেতে পারে grep
( ব্যবহার করে স্পেসগুলি নিবার প্রয়োজন নেই tr
):
route -n | grep -Po "0\.0\.0\.0\s*\K\S+(?=\s*0\.0\.0\.0)"
192.168.1.1
tr
, গ্রেপ একা কাজটি করবেনroute -n | grep -Po "0\.0\.0\.0 \s*\K\S+(?=\s*0\.0\.0\.0)"
আমি এটি প্রায়শই ব্যবহার করি:
route -n | awk '{ print $2 }' | grep -Eo '[1-9]{0,3}\.[1-9]{0,3}\.[0-9]{0,3}\.[1-9]{0,3}'
192.168.0.1
?
সিস্টেমে কোনও ওয়েব ব্রাউজারে অ্যাক্সেস থাকলে আপনি http://whatsmyrouterip.com/ এ যেতে পারেন এবং এটি কোনও আদেশ ছাড়াই আপনার আইপি খুঁজে পেতে সক্ষম হবে।
অন্যথায় কেবল টার্মিনালটি খোলার এবং ip route | grep default
করা যথেষ্ট হওয়া উচিত। এটি আপনার নেটওয়ার্ক ইন্টারফেসের উপর নির্ভর করে একের বেশি দিতে পারে।
hostname -I
190.200.200.107 172.21.0.1 172.17.0.1 172.19.0.1 172.18.0.1
সুতরাং শুধুমাত্র আইপি ইস্যু পেতে
hostname -I | cut -d' ' -f1
190.200.200.107
nm-tool | grep -oP '(?i)gateway:\s*\K\S+'