সমস্ত উপলব্ধ নেটওয়ার্ক ইন্টারফেসের কেবলমাত্র ডিভাইসের নাম তালিকাভুক্ত করুন


21

আমি আমার লিনাক্স সার্ভারে উপলভ্য সমস্ত নেটওয়ার্ক-ডিভাইস নামগুলির একটি তালিকা পেতে চাই। আমি প্রকাশিত করেছি

ifconfig

কাজটি করবে, তবে ifconfig বেশ আউটপুট উত্পাদন করে:

eth0      Link encap:Ethernet  Hardware Adresse 08:00:27:fc:5c:98  
          inet Adresse:192.168.2.222  Bcast:192.168.2.255  Maske:255.255.255.0
          inet6-Adresse: fe80::a00:27ff:fefc:5c98/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX packets:329 errors:0 dropped:0 overruns:0 frame:0
          TX packets:177 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX bytes:41496 (40.5 KiB)  TX bytes:32503 (31.7 KiB)

eth1      Link encap:Ethernet  Hardware Adresse 08:00:27:e9:35:7d  
          [...]

eth2      Link encap:Ethernet  Hardware Adresse 08:00:27:ff:db:fe  
          [...]

lo        Link encap:Lokale Schleife  
          [...]

আমি যা অর্জন করতে চাই তা হল একটি তালিকা

eth0
eth1
eth2
lo

বা আরও ভাল

eth0
eth1
eth2

আমি ধরে নিয়েছি যে এটি "বিড়াল", "সেড" এবং "গ্রেপ" এর সংমিশ্রণ দ্বারা সম্পন্ন করা যেতে পারে তবে অযৌক্তিক তথ্য কীভাবে ছিনিয়ে নেওয়া যায় সে সম্পর্কে আমার কোনও স্পষ্টতা নেই।

উত্তর:


17

একবার চেষ্টা করে দেখুন:

ifconfig -a | sed 's/[ \t].*//;/^$/d'

এটি বাদ যাবে lo:

ifconfig -a | sed 's/[ \t].*//;/^\(lo\|\)$/d'

ধন্যবাদ ডেনিস, এটি একটি কবজ like এর মতো কাজ করেছে ^^ Perfekt। নিয়মিত এক্সপ্রেশনগুলি সত্যই এমন কিছু যা আমার should
ftiaronsem

আমি বুঝতে পেরেছি যে লিনাক্স এবং বিএসডি প্রায়শই বিভিন্ন *nixইউটিলিটি ধারণ করে, তবে দুর্ভাগ্য এই সমাধানটি কোনও ম্যাকের জন্য কাজ করে না :(
ব্লং

ifconfigdeprected, ব্যবহার ipপরিবর্তে
pstanton

এটি OS X এর জন্য কাজ করছে বলে মনে হচ্ছে:ifconfig -a | sed -E 's/[[:space:]:].*//;/^$/d'
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

22

অন্য বিকল্প হ'ল:

ip -o link show | awk -F': ' '{print $2}'

অথবা হতে পারে:

ls /sys/class/net

স্ক্রিপ্টগুলিতে ব্যবহার ls /sys/class/netকরা একটি ভাল সমাধান - উপরের সমাধানগুলি প্রতিটি ইন্টারফেসের শেষে বাড়তি সাথে শেষ হয় যখন চালানো হয় (তবে স্ক্রিপ্টটি সরাসরি চালিত হয় না তখন)। /etc/local.dopenrcsed:/etc/init.d/local
স্টুয়ার্ট কার্ডাল

+1 এর জন্য -o- এটি জানা ছিল না
প্যাট্রিক

16

কেবল / সিএস / শ্রেণি / নেট ব্যবহার করুন এবং পথটি সরিয়ে দিন:

$ basename -a /sys/class/net/*
eth0
eth1
lo
ppp0
tun0

6

এটা চেষ্টা কর:

ifconfig | cut -c 1-8 | sort | uniq -u
  • cut -c 1-8 প্রতিটি লাইনের প্রথম 8 টি অক্ষর বের করে
  • sort লাইন বাছাই
  • uniq -u কেবলমাত্র অনন্য রেখাগুলি মুদ্রণ করে যা বিবরণী রেখার ফাঁকা রেখাগুলি সরিয়ে ফেলবে যার প্রথম আটটি অক্ষরের মধ্যে কেবল ফাঁকা স্থান রয়েছে

এটি আমার চেষ্টা করা দুটি লিনাক্স মেশিনে কাজ করে তবে আমার ম্যাকবুকপ্রোতে (ওএস এক্স 10.6.4) ifconfigফাঁকা জায়গাগুলির পরিবর্তে ট্যাব ব্যবহার করে, তাই এটি আরও জটিল:

ifconfig | expand | cut -c1-8 | sort | uniq -u | awk -F: '{print $1;}'
  • expand ট্যাবগুলিকে স্পেসে রূপান্তর করে
  • awk -F: '{print $1;}' কোলনের আগে প্রথম ক্ষেত্রটি মুদ্রণ করে।

আপনাকে অনেক ধন্যবাদ, বিশেষত ব্যবহৃত প্যারামিটারগুলি ব্যাখ্যা করার জন্য খুব বিস্তৃত উত্তরের জন্য। ভবিষ্যতে যদি আমার অনুরূপ সমস্যা থাকে তবে আমি জানি যে কোন পোস্টটি দেখতে হবে ;-)। দুর্ভাগ্যক্রমে এটি "লো" কাটছিল না, তাই গৃহীত উত্তর ড্যানিসে যায়। তবে এটি সত্যিই একটি খুব দরকারী উত্তর, আপনাকে ধন্যবাদ :-)
ftiaronsem

যোগ করুন | grep -v lo:-)
ডগ হ্যারিস

4
ls /sys/class/net/
eth0  eth1  eth2  lo

অথবা আপনার যদি কেবল নৈতিকতা প্রয়োজন *

ls /sys/class/net/eth*
eth0
eth1
eth2

3

/sysফাইল সিস্টেম ব্যবহার :

basename -a $(ls /sys/devices/**/net/* -d)

আইপি এবং পার্ল ব্যবহার:

ip -o l|perl -lane'$F[1]=~s/://g;print $F[1]'

1

ifconfigআউটপুট থেকে ইন্টারফেসের নামগুলি বের করার একটি উপায় :

ifconfig -a | sed -n 's/^\([^ ]\+\).*/\1/p'

আপনি যদি কিছু নাম বাদ দিতে চান তবে একটি উপায় হ'ল আরও ফিল্টার সহ grep:

ifconfig -a | sed -n 's/^\([^ ]\+\).*/\1/p' | grep -Fvx -e lo

আপনি যদি আরও নাম বাদ দিতে চান -e fooতবে grepকমান্ডটিতে আরও যুক্ত করুন ।


আপনার সমাধান ডেনিসের মতো সমানভাবে কাজ করে। দুর্ভাগ্যক্রমে আমি দুটি পদ গ্রহণ করতে পারি না, তাই ডেনিস কেবল দ্রুত ছিল। তবে তবুও ধন্যবাদ, বিশেষত আপনার গ্রেপ ব্যাখ্যার জন্য।
ftiaronsem

1

কেবল প্রথম কলামটি মুদ্রণ করতে:

netstat -a | awk '{print $1}'

আপনি প্রয়োজন হিসাবে এন্ট্রি যোগ করতে বা মুছে ফেলার জন্য অন্যান্য নিয়মগুলিকে জোর করে অন্তর্ভুক্ত করতে পারেন।

সম্পাদনা: ইফকনফিগের সাথে একই যায় (ডগ নির্দেশিত মত)

ifconfig | awk '{print $1}'

এটি 'লো' ইন্টারফেস বাদ দিয়ে একটি উদাহরণ

ifconfig | awk '{if ($1 != lo) print $1}'

যে কাজ করবে না। awkনেতৃস্থানীয় সাদা স্থান উপেক্ষা করবে এবং প্রতিটি পরবর্তী লাইনে প্রথম শব্দটি মুদ্রণ করবে।
ডগ হ্যারিস 21

দুর্ভাগ্যক্রমে, সত্যিই কাজ করছে না ডগ নির্দেশিত সঠিক সমস্যাটি ভোগ করছে। তবে আপনাকে সাহায্য করার জন্য ধন্যবাদ, তবুও আমি আমার মতো নতুনকে আপনাকে সাহায্য করার জন্য সত্যই প্রশংসা করি।
ftiaronsem


1

যদিও একটি গৃহীত সমাধান বিদ্যমান, আমি এটিতে আমার সমাধানটি উপস্থাপন করতে চাই।

আমার কাছে ভার্চুয়াল ইন্টারফেসগুলির একটি গুচ্ছ রয়েছে এবং আমি একটি তালিকা পেতে চাই, যা বিভিন্ন ব্যাশ স্ক্রিপ্টগুলিতে ব্যবহারযোগ্য।

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 11.22.33.137  netmask 255.255.255.192  broadcast 11.22.33.191
        inet6 fe80::a00:27ff:fe8c:6bd3  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:8c:6b:d3  txqueuelen 1000  (Ethernet)
        RX packets 2969136  bytes 2394432908 (2.2 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1378821  bytes 358960701 (342.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 11.22.33.189  netmask 255.255.255.192  broadcast 11.22.33.191
        ether 08:00:27:8c:6b:d3  txqueuelen 1000  (Ethernet)

eth0:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 11.22.33.190  netmask 255.255.255.192  broadcast 11.22.33.191
        ether 08:00:27:8c:6b:d3  txqueuelen 1000  (Ethernet)

eth0:3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 11.22.33.180  netmask 255.255.255.192  broadcast 11.22.33.191
        ether 08:00:27:8c:6b:d3  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 673768  bytes 277972236 (265.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 673768  bytes 277972236 (265.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

আমি লুপব্যাকে আগ্রহী নই, কারণ আমি জানি এটি সেখানে রয়েছে :)

এই ওয়ান-লাইনার কাজটি সম্পন্ন করে:

ifconfig | egrep '^eth' | cut -f 1-2 -d ':' | cut -f 1 -d ' '| pcregrep -o1 "(((eth\d)(:\d))|(eth\d))"

যেমন একটি আউটপুট উত্পাদন করে:

eth0
eth0:1
eth0:2
eth0:3

উপভোগ করুন।


1

উপরের সমাধানগুলি সবই কাজ করে। তবুও আপনি এটি চেষ্টা করতে পারেন

ifconfig | grep HW | cut -c 1-6

যেহেতু, loযা লুপব্যাক, একটি এইচডাব্লু ঠিকানা বরাদ্দ করা হয়নি, এটি প্রদর্শিত হবে না।

আউটপুট -

রুট @ গ্লাম: / হোম / অ্যামিট # ifconfig | গ্রেপ এইচডাব্লু | কাটা-সি 1-6
enp7s0
vmnet1
vmnet8
wlp6s0

1

সবচেয়ে সহজ সমাধানটি হল আইফোনফিগ (8)

man ifconfig (8) এক্সট্রাক্ট করুন http://www.manpagez.com/man/8/ifconfig/ :

-L ফ্ল্যাগটি সিস্টেমের সমস্ত উপলব্ধ ইন্টারফেসের তালিকাতে ব্যবহৃত হতে পারে, অন্য কোনও অতিরিক্ত তথ্য ছাড়াই। এই পতাকাটির ব্যবহার -D ব্যতীত অন্য সমস্ত পতাকা এবং কমান্ডের সাথে পারস্পরিক একচেটিয়া (কেবলমাত্র ইন্টারফেসগুলি নীচে রয়েছে) এবং -u (কেবলমাত্র ইন্টারফেসের উপরে রয়েছে)।

সুতরাং, তালিকা পেতে, ব্যবহার করুন:

ifconfig -l

নামগুলি একটি স্পেস দ্বারা পৃথক করা হবে যাতে আপনাকে এই স্পেসগুলি একটি by n দ্বারা প্রতিস্থাপন করতে সেড ব্যবহার করতে হবে:

ifconfig -l | sed 's/ / /g'


1

উন্নত:

netstat -i | grep '^[a-z]' | awk '{print $1}' | grep -v 'lo'

1
আপনার সম্ভবত এটি করা উচিত grep -v '^lo$'; আপনার বর্তমান কমান্ডটি (অনুমানমূলক উদাহরণ) logicalএবং ridiculousইন্টারফেসগুলি বাদ দেবে ।
স্কট

0

উপরের সমাধানগুলির কোনওটিই আমার পক্ষে কাজ করেনি, এখানেই আমার সমাধান:

ifconfig -a  | egrep "^[a-z]+" | sed "s/: .*//" | grep -v "lo"
  1. সমস্ত উপলব্ধ ইন্টারফেস তালিকা
  2. ডিভাইসের নাম রয়েছে এমন কেবল রেখাগুলিই বের করুন (শুরুতে কোনও স্থান নেই)
  3. সম্পর্কহীন ট্রেলিং অংশটি প্রথম স্থান থেকে পরে সরান
  4. loইন্টারফেস বাদ দিন

আউটপুট:

eth0
eth0:1
wlan0

0

"ifcongif -l" এর কাজটি করা উচিত। এর আউটপুটটি কোনও নতুনলাইন ছাড়াই এই "lo0 gif0 stf0 en0 ..." এর মতো।

আমি এটি কোনও ওয়েবসাইটে পেয়েছি তবে এটি আর খুঁজে পাচ্ছি না। এবং আমি এখনও "-l" পতাকাটির অর্থ খুঁজছি।


0

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

আইপি সংযোজক: রাউটিং, ডিভাইসগুলি, পলিসি রাউটিং এবং টানেলগুলি (ঠিকানা)
গ্রেপগুলি দেখান / গ্রেপ করুন: ইউনিট এর পরে কোনও জায়গা খুঁজে নিন:
কাটা: ব্যবহার করুন (:) একটি বিস্ময়কর হিসাবে এবং ক্ষেত্র 2
টি পাবেন: যে কোনও স্পেস মুছুন

$ আইপি সংযোজক | গ্রেপ-ই ': \ এস। * ?:' | | কাট-ডি ":" -ফ 2 | ত্রি-ডি ""

0

ম্যাকোস-এ পরীক্ষিত, নিম্নলিখিতগুলি কাজ করেছে। আমার ইউপি-তে থাকা সমস্ত ইন্টারফেসের সন্ধান করা উচিত। এটি উপরের ডেনিস উইলিয়ামসনের উত্তরের ভিত্তিতে তৈরি।

ifconfig -a | grep UP | sed 's/:.*//;/^$/d'


-1

ifconfig | grep flags | awk -F: '{print $1;}'


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