কোন টার্মিনাল কমান্ডটি কেবলমাত্র আইপি ঠিকানা এবং অন্য কিছু পাওয়ার জন্য?


118

আমি আমার লিখিত স্ক্রিপ্টের প্যারামিটার হিসাবে কেবল আইপি ঠিকানা (ইনেট) ব্যবহার করার চেষ্টা করছি।

ইউনিক্স টার্মিনালে কি কেবলমাত্র আইপি ঠিকানাটি দেখার চেয়ে সহজ উপায় রয়েছে ifconfig?


হ্যাঁ, বা আমি মনে করি যে মেশিনটি সম্পর্কে অন্য কোনও অনন্য শনাক্তকারী।
ম্যাসন

1
হোস্টনেম -i এ আপনি একটি অবৈধ বিকল্প পেয়েছেন?
কেন

4
হোস্টনামটি ifconfig এর মতো নির্ভরযোগ্য নয়
joel

2
জয়েল ঠিক আছে, বিশেষত আপনি যেখানে ম্যাক ওএস এবং তারপরে উবুন্টু সম্পর্কে কথা বলছেন
জ্যাকারিকা

2
নীচের উত্তরগুলির মাধ্যমে ব্রাউজ করার সময়, মনে রাখবেন যে আউটপুটটি আউটপুটের ip -o addressতুলনায় কাজ করা আরও সহজ ip address
জেএলএইচ

উত্তর:


177

আপনি এমন একটি স্ক্রিপ্ট লিখতে পারেন যা কেবল আইপিটি ফিরিয়ে দেয়:

/sbin/ifconfig eth0 | grep 'inet addr' | cut -d: -f2 | awk '{print $1}'

ম্যাকের জন্য:

ifconfig | grep "inet " | grep -v 127.0.0.1 | cut -d\  -f2

বা লিনাক্স সিস্টেমের জন্য

hostname -i | awk '{print $3}' # Ubuntu 

hostname -i # Debian

4
hostname -iআমার এটি ফিরে আসে:::1 127.0.1.1 192.168.1.100
জিউস

1
ডেবিয়ানে আমি মাত্র একটি আইপি পেয়েছি। সুতরাং ব্যবহার hostnameপোর্টেবল নয়।
টিমোফিয়ে স্টলবভ

1
এটি বলে যে -আই এবং -আমি উভয়ই অবৈধ বিকল্প
ম্যাসন

3
সংক্ষেপে: প্রথম পদ্ধতিটি অ্যাডাপ্টারের উপর নির্ভর করে, যা সর্বদা একই থাকে না। দ্বিতীয়টি, আমার জন্য, দুটি আইপি ঠিকানা প্রদর্শন করে এবং শেষ দুটি ম্যাকের জন্য কাজ করে না।
ম্যাট

4
ifconfig এখানে অবচয় এবং অবিশ্বাস্য, যেমন গ্রেপ ডেবিয়ান 9 (প্রসারিত) এ ব্যর্থ হয় কারণ এটি আর "ইনেট অ্যাডার: 172.17.0.4" আউটপুট দেয় না, এটি কেবল "ইনট 172.17.0.4" আউটপুট দেয়। স্ট্যাকওভারফ্লো . com/a/26694162/72717 তে বর্ণিত হিসাবে "আইপি" ব্যবহার করুন
জামশিদ

61

এটি আপনাকে লুপব্যাক 127.0.0.1 সহ সমস্ত আইপিভি 4 ইন্টারফেস দেবে:

ip -4 addr | grep -oP '(?<=inet\s)\d+(\.\d+){3}'

এটি কেবল প্রদর্শিত হবে eth0:

ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'

এবং এইভাবে আপনি IPv6 ঠিকানাগুলি পেতে পারেন:

ip -6 addr | grep -oP '(?<=inet6\s)[\da-f:]+'

কেবল eth0আইপিভি 6:

ip -6 addr show eth0 | grep -oP '(?<=inet6\s)[\da-f:]+'

grep -oPব্যস্তবক্স v1.24.1 এ ব্যর্থ: অবৈধ বিকল্প - পি
প্রো ব্যাকআপ

1
গ্রেডগুলি প্রোডের জন্য প্রায় প্রতিটি ডকার কনটিনিয়ারে ইনস্টল করা হয় না। যদিও এটি সমস্ত ভাল কমান্ড হলেও এটি পাত্রে কার্যকর হবে না :-(
অ্যান্ডি জি

1
আমার বিশেষ ক্ষেত্রে সেরা উত্তর। -Pপার্ল নিয়মিত এক্সপ্রেশনগুলির জন্য আপনার স্যুইচ দরকার হয় অন্যথায় আমরা লুকবাইন্ড (?<=inet\s)টোকেনটি ব্যবহার করতে পারি না । আপনি দৌড় দিয়ে একইরকম ফলাফল পেতে পারেন grep -oe 'inet [0-9\.]\+'বা grep -oe 'inet6 [0-9a-f:]\+'তবে এইভাবে আমি প্রথম শব্দটি থেকে মুক্তি পেতে পারি না। সুস man grepরিপোর্টে -Pপতাকাটি পরীক্ষামূলক।
জর্জে বেলন

এটি সেরা উত্তর। বেশিরভাগ ওএস-তে এখন ifconfig বেশ কয়েক বছর অবহেলিত।
pozcircuitboy

2
দ্বিতীয় কমান্ডের একটি সংক্ষিপ্ত সংস্করণ:ip -4 a show eth0 | grep -Po 'inet \K[0-9.]*'
টুকুসেজেসির্স

40

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

লিনাক্স

লিনাক্সে, hostname -Iবর্তমান আইপি ঠিকানা (এস) তালিকাভুক্ত করবে। এর উপর সর্বদা নির্ভর করে কেবলমাত্র একটি আইপি ঠিকানা ফেরত পাওয়া কিছু পরিস্থিতিতে সম্ভবত প্রত্যাশার মতো কাজ করবে না (যেমন একটি ভিপিএন লিংক রয়েছে), সুতরাং আরও নির্ভরযোগ্য উপায় ফলাফলটিকে অ্যারেতে রূপান্তরিত করবে এবং তারপরে উপাদানগুলির উপর লুপ করবে:

ips=($(hostname -I))

for ip in "${ips[@]}"
do
    echo $ip
done

ওএসএক্স

ওএসএক্স-এ, আপনি যদি ইন্টারফেসটি জানেন তবে আপনি এটি ব্যবহার করতে পারেন:

~$ ipconfig getifaddr en0
192.168.1.123

যা ঠিক ফিরে আসবে আইপি ঠিকানাটি ।

অথবা আপনি একটি প্রত্যয় দিয়ে শুরু করে সম্ভাব্য ইন্টারফেসের নামগুলি লুপ করতে পারেন, অর্থাত en:

for NUMBER in $(seq 0 5); do
    ip=`ipconfig getifaddr en$NUMBER`
    if [ -n "$ip" ]; then
        myip="$ip"
        break
    fi
done

echo $myip

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

বাহ্যিক আইপি পাওয়া

আপনার যদি বাহ্যিক আইপি দরকার হয়, তবে আপনি একটি পাঠ্য-মোড পরিষেবাটি জিজ্ঞাসা করতে পারেন, উদাহরণস্বরূপ curl https://ipecho.net/plainএকটি সাধারণ পাঠ্য বহিরাগত আইপি ফিরে আসবে ।

এবং বাহ্যিক আইপি পাওয়ার আরও তাত্পর্যপূর্ণ উপায় হল একটি পরিচিত ডিএনএস সার্ভারকে জিজ্ঞাসা করা:

dig @ns1-1.akamaitech.net ANY whoami.akamai.net +short

ল্যান আইপি-অ্যাড্রেস কিভাবে পাবেন?
diEcho

17
hostname -I  

এই কমান্ডটি আপনাকে উবুন্টুতে যেমন সঠিক আইপি ঠিকানা দেবে তা দেবে।


ইতিমধ্যে বিদ্যমান (এবং উচ্চ ভোট প্রাপ্ত) উত্তরের সংখ্যার সাথে তুলনা করে, আমি মনে করি না যে এই উত্তরটি কোনও মূল্য যোগ করবে ...
Mischa


1
এটি আসলে আমাকে সাহায্য করেছিল - উল্লিখিত বড় হাতের অক্ষর 'আমি' কী ছিল
ChronoFish

2
একইভাবে, এটি কোনও অতিরিক্ত সরঞ্জাম এবং আউটপুট পরিষ্কার করার জন্য পরপর পনেরো বাইনারি কল করার প্রয়োজন নেই পুরোপুরি কাজ করে। ধন্যবাদ!
উলারার

11

সর্বশেষ উবুন্টু সংস্করণগুলিতে ( 14.04 - 16.04 ), এই আদেশটি আমার পক্ষে কৌশলটি করেছে।

hostname -I | awk '{print $1}'

1
ম্যানুয়াল পৃষ্ঠা থেকে: "[...] এই বিকল্পটি সমস্ত নেটওয়ার্ক ইন্টারফেসে সমস্ত কনফিগার করা ঠিকানা গণনা করে [[...] আউটপুট ক্রম সম্পর্কে কোনও অনুমান করবেন না"। শেষ বাক্যটি আপনাকে বলে যে print $1আপনাকে সঠিক ফলাফল দিতে পারে বা নাও পারে।
0 0

7

আপনার যদি সীমিত পরিবেশ থাকে তবে আপনি এই আদেশটি ব্যবহার করতে পারেন:

ip -4 addr show dev eth0 | grep inet | tr -s " " | cut -d" " -f3 | head -n 1

3
বা এমনকি:ip -o -4 addr show dev eth0 | cut -d' ' -f7 | cut -d'/' -f1
জোসে আলবান

হ্যাঁ তুমিই ঠিক. তবে সতর্কতা অবলম্বন করুন, যদি eth0 এর একাধিক আইপি ঠিকানা থাকে তবে এটি তাদের সমস্ত দেখায়।
ক্যাগলার

bash-4.4 # ip -4 অ্যাডারে শো ডেথ এথ0 | গ্রেপ ইনট | tr -s "" | কাট-ডি "" -ফ 3 | হেড-এন 1 172.17.0.3/16 তাই 16/16 -র সাথে ভাল নয়
অ্যান্ডি জি

এক লুপ আরো যোগ করার পদ্ধতি: ip -4 addr show eth0 | grep inet | awk '{print $2}' | cut -d'/' -f1। ভি 4 এবং ভি 6 উভয়ের জন্য:ip addr show eth0 | grep inet | awk '{print $2}' | cut -d'/' -f1
সুমিত মুরারি

যদি ইন্টারফেসের নামটি পরিচিত না হয় (বা প্ল্যাটফর্মগুলির মধ্যে পৃথক হয়) তবে আপনি ব্যক্তিগত আইপি ঠিকানার জন্য অনুসন্ধান করুন তারপরে এটি করার পরিবর্তে ip -4 addr show eth0 | grep inet:ip -4 addr show | grep 192
সাইবারবার্ড

6

ম্যাক ওএস এক্সে কেবলমাত্র আইপি ঠিকানা পেতে আপনি নিম্নলিখিত আদেশটি টাইপ করতে পারেন:

ipconfig getifaddr en0

4

কমান্ড ifconfigহ্রাস করা হয় এবং আপনি ব্যবহার করা উচিতip লিনাক্স-এ কমান্ড ।

এছাড়াও ip a তাই এটি ব্যবহার করা আরো সহজ আইপি যেমন একই লাইনে আপনি সুযোগ দেব।

এই আদেশটি আপনাকে আপনার বৈশ্বিক (বাহ্যিক) আইপি প্রদর্শন করবে:

ip a | grep "scope global" | grep -Po '(?<=inet )[\d.]+'

সমস্ত আইপিভি 4 (এছাড়াও 127.0.0.1):

ip a | grep "scope" | grep -Po '(?<=inet )[\d.]+'

সমস্ত আইপিভি 6 (এছাড়াও :: 1):

ip a | grep "scope" | grep -Po '(?<=inet6 )[\da-z:]+'

4

আমরা চাই এমন আইপি (ভি 4) পেতে কেবল মাত্র 2 টি কমান্ড (ifconfig + awk) ব্যবহার করতে পারি:

eth0ইন্টারফেস থেকে আইপি অ্যাড্রেস পাওয়ার কথা ধরে লিনাক্সে, নিম্নলিখিত কমান্ডটি চালান:

/sbin/ifconfig eth0 | awk '/inet addr/{print substr($2,6)}'

ওএসএক্স-এ, en0ইন্টারফেস থেকে আইপি অ্যাড্রেস পাওয়ার জন্য নিম্নলিখিত কমান্ডটি চালনা করুন:

/sbin/ifconfig en0 | awk '/inet /{print $2}'

আমাদের সর্বজনীন / বাহ্যিক আইপি জানতে, এই ফাংশনটি যুক্ত করুন ~/.bashrc

whatismyip () {
    curl -s "http://api.duckduckgo.com/?q=ip&format=json" | jq '.Answer' | grep --color=auto -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"
}

তারপরে দৌড়াও, whatismyip


4

eth0অন্য পাঠ্য ব্যতীত কেবলমাত্র আইপি ঠিকানা প্রিন্ট করতে :

ifconfig eth0 | grep -Po '(?<=inet )[\d.]+'

আপনার প্রাথমিক ইন্টারফেস নির্ধারণ করতে (কারণ এটি "eth0" নাও হতে পারে), ব্যবহার করুন:

route | grep ^default | sed "s/.* //"

উপরের দুটি লাইন একটি একক কমান্ডের মতো একত্রিত হতে পারে:

ifconfig `route | grep ^default | sed "s/.* //"` \
  | grep -Po '(?<=inet )[\d.]+'

3

আমি সাধারণ কিছু চাইছিলাম যা বাশ ওরফে হিসাবে কাজ করেছিল। আমি খুঁজে পেয়েছি যে hostname -Iআমার জন্য সবচেয়ে ভাল কাজ করে (হোস্টনাম v3.15)। hostname -iলুপব্যাক আইপিটি কোনও কারণে ফিরিয়ে hostname -Iদেয় তবে আমাকে wlan0 এর জন্য সঠিক আইপি দেয় এবং গ্রেপ বা অ্যাজকের মাধ্যমে আউটপুট পাইপ না করেই দেয়। একটি অপূর্ণতা হ'ল সমস্ত আইপি hostname -Iআউটপুট দেয় , যদি আপনার একাধিক থাকে।


2

এটি ম্যাকের কৌশলটি করবে:

ping $(ifconfig en0 | awk '$1 == "inet" {print $2}')

এটি ping 192.168.1.2আমার মেশিনে সমাধান হয়েছে ।

প্রো টিপ : এর $(...)অর্থ সাবসেলের মধ্যে প্রথম বন্ধনীর ভিতরে যা আছে তা চালান এবং মান হিসাবে ফিরে আসুন।


2

এর মধ্যে man hostnameআরও সহজ উপায় রয়েছে যা স্বয়ংক্রিয়ভাবে লুপব্যাক আইপি বাদ দেয় এবং হোস্ট আইপি অ্যাড্রেসগুলিতে নির্ধারিত সমস্তের জন্য কেবল স্থান পৃথক তালিকা প্রদর্শন করে:

root@srv:~# hostname --all-ip-addresses
11.12.13.14 192.168.15.19 

root@srv:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
   inet6 ::1/128 scope host 
   valid_lft forever preferred_lft forever
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
  link/void 
  inet 11.12.13.14/32 scope global venet0:0
  inet 192.168.15.19/32 scope global venet0:1

2

আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

ip route | grep src

দ্রষ্টব্য: আপনার যদি ইন্টারনেটে সংযোগ থাকে তবে এটি কাজ করবে।


2

কয়েক উত্তর নতুন ব্যবহার করা বলে মনে হচ্ছে ipকমান্ড (জন্য প্রতিস্থাপন ifconfig) তাই এখানে এক যে ব্যবহারসমূহ ip addr, grepএবং awkকেবল সঙ্গে যুক্ত IPv4 ঠিকানা প্রিন্ট করতে wlan0ইন্টারফেস:

ip addr show wlan0|grep inet|grep -v inet6|awk '{print $2}'|awk '{split($0,a,"/"); print a[1]}'

সর্বাধিক কমপ্যাক্ট বা অভিনব সমাধান না হলেও এটি (তর্কযোগ্যভাবে) সহজে বুঝতে (নীচে ব্যাখ্যাটি দেখুন) সহজ এবং অন্যান্য উদ্দেশ্যে যেমন ম্যাক ঠিকানার শেষ 3 টি অক্টেট পাওয়ার জন্য এটি পরিবর্তন করা যায়:

ip addr show wlan0|grep link/ether|awk '{print $2}'|awk '{split($0,mac,":"); print mac[4] mac[5] mac[6]}'

ব্যাখ্যা: ip addr show wlan0 নাম দেওয়া নেটওয়ার্ক ইন্টারফেসের সাথে সম্পর্কিত আউটপুট তথ্য wlan0, যা এর অনুরূপ হওয়া উচিত:

4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether dc:a6:32:04:06:ab brd ff:ff:ff:ff:ff:ff
    inet 172.18.18.1/24 brd 172.18.18.255 scope global noprefixroute wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::d340:5e4b:78e0:90f/64 scope link 
       valid_lft forever preferred_lft forever

পরবর্তী grep inetলাইন আউট ফিল্টারগুলি থাকে না "Inet" (IPv4 ও IPv6 কনফিগারেশন) এবং grep -v inet6অবশিষ্ট লাইন যে ফিল্টার না "inet6" থাকতেই, যা এই এক মত একটি একক লাইন স্থাপিত হবে:

    inet 172.18.18.1/24 brd 172.18.18.255 scope global noprefixroute wlan0

শেষ awkঅবধি, "172.18.18.1/24" ক্ষেত্রটি প্রথমটি বের করুন এবং দ্বিতীয়টি কেবলমাত্র IPv4 ঠিকানা রেখে নেটওয়ার্ক মাস্ক শর্টহ্যান্ড সরিয়ে ফেলবে।

এছাড়াও, আমি মনে করি এটি উল্লেখ করার মতো যে আপনি যদি স্ক্রিপ্টিং করেন তবে প্রায়শই এই তথ্যটি পাওয়ার জন্য অনেক ধনী এবং / বা আরও শক্তিশালী সরঞ্জাম রয়েছে, যা আপনি পরিবর্তে ব্যবহার করতে চাইতে পারেন want উদাহরণস্বরূপ, যদি নোড.জেএস ব্যবহার করে থাকে ipaddr-linux, যদি রুবি ব্যবহার করে থাকে linux-ip-parser, ইত্যাদি।

Https://unix.stackexchange.com/questions/119269/how-to-get-ip-address- using-shell- script দেখুন



1

এখানে আমার সংস্করণ, যাতে আপনি ইন্টারফেসের একটি তালিকা অগ্রাধিকার অনুসারে অর্ডার করতে পারেন:

getIpFromInterface()
{
    interface=$1
    ifconfig ${interface}  > /dev/null 2>&1 && ifconfig ${interface} | awk -F'inet ' '{ print $2 }' | awk '{ print $1 }' | grep .
}

getCurrentIpAddress(){
    IFLIST=(${@:-${IFLIST[@]}})
    for currentInterface in ${IFLIST[@]}
    do
        IP=$(getIpFromInterface  $currentInterface)
        [[ -z "$IP" ]] && continue
    echo ${IP/*:}
    return
    done
}

IFLIST=(tap0 en1 en0)
getCurrentIpAddress $@

সুতরাং আমি যদি ভিপিএন, ওয়াইফাই এবং ইথারনেটের সাথে সংযুক্ত থাকি তবে আমার ভিপিএন ঠিকানা (ইন্টারফেস টেপ 0 তে) ফিরে আসবে। স্ক্রিপ্টটি লিনাক্স এবং ওএসএক্স উভয় ক্ষেত্রেই কাজ করে এবং আপনি যদি আইফ্লাইএসটি ওভাররাইড করতে চান তবে আর্গুমেন্ট নিতে পারে

নোট করুন আপনি যদি আইপিভি 6 ব্যবহার করতে চান তবে আপনাকে 'ইনেট' দ্বারা 'ইনেট' প্রতিস্থাপন করতে হবে।


1

আমি সর্বদা সবচেয়ে অপ্রত্যাশিত সময়ে এটির প্রয়োজন বজায় রাখি এবং ব্যর্থ না হয়ে এসও তে এই জাতীয় থ্রেডগুলি অনুসন্ধান করতে চাই। তাই আমি netstat কমান্ড মাধ্যমে IPv4- র ঠিকানাগুলি পেতে একটি সহজ স্ক্রিপ্ট, নামক লিখেছেন echoip- আপনি এখানে পেতে পারেন । নেটওয়ার্ক ঠিকানাগুলির জন্য ব্যাশটি দেখতে দেখতে এটি ইপেকো.নেট থেকে আপনার সর্বজনীন ঠিকানা পায়:

IPV4='\d+(\.\d+){3}'
INTERFACES=`netstat -i | grep -E "$IPV4" | cut -d ' ' -f 1`
INTERFACE_IPS=`netstat -i | grep -oE "$IPV4"`

for i in "${!INTERFACES[@]}"; do
  printf "%s:\t%s\n" "${INTERFACES[$i]}" "${INTERFACE_IPS[$i]}"
done

echoipস্ক্রিপ্ট ভালো একটি আউটপুট উৎপাদ:

$ echoip
public: 26.106.59.169
en0:    10.1.10.2

1

এই এক লাইনের স্ক্রিপ্টটি ব্যবহার করুন: ifconfig | grep "inet " | grep -v 127.0.0.1|awk 'match($0, /([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/) {print substr($0,RSTART,RLENGTH)}' ম্যাক এবং লিনাক্স (উবুন্টুতে পরীক্ষিত) উভয় কাজ করে।


এটি উভয় উপর কাজ করে যে দুর্দান্ত। এছাড়াও আপনি যে ইন্টারফেসটি চান তা যদি আপনি জানেন তবে এটির সাথে ifconfig en0বা ifconfig eth1
অন্যকে

1

আমি awkস্ক্রিপ্টগুলিতে ব্যবহার না করা পছন্দ করি ..ip JSON এ আউটপুট দেওয়ার বিকল্প রয়েছে।

আপনি যদি বাইরে চলে যান $interfaceতবে আপনি সমস্ত আইপি ঠিকানাগুলি পাবেন:

ip -json addr show $interface | \
  jq -r '.[] | .addr_info[] | select(.family == "inet") | .local'

আমি আইপি কমান্ডের মতো জেসন স্ট্রাকচারাল ফর্ম্যাটে কমান্ডের ফলাফলটি পছন্দ করি। উপরের মতো আইপি অ্যাড্রেস পাওয়ার আরও একটি উপায় এখানে রয়েছে bash ip -j addr show eth0 | jp "[0].addr_info[?family== 'inet'].local | [0]"
জ্যাক লিউ শুরুই

0
ip addr|awk '/eth0/ && /inet/ {gsub(/\/[0-9][0-9]/,""); print $2}'

আপনার সমস্ত আইপিএস দেখায়



0
#!/bin/sh
# Tested on Ubuntu 18.04 and Alpine Linux 
# List IPS of following network interfaces:
# virtual host interfaces
# PCI interfaces
# USB interfaces
# ACPI interfaces
# ETH interfaces
for NETWORK_INTERFACE in $(ls /sys/class/net -al | grep -iE "(/eth[0-9]+$|vif|pci|acpi|usb)" | sed -E "s@.* ([^ ]*) ->.*@\1@"); do 
    IPV4_ADDRESSES=$(ifconfig $NETWORK_INTERFACE | grep -iE '(inet addr[: ]+|inet[: ]+)' | sed -E "s@\s*(inet addr[: ]+|inet[: ]+)([^ ]*) .*@\2@")
    IPV6_ADDRESSES=$(ifconfig $NETWORK_INTERFACE | grep -iE '(inet6 addr[: ]+|inet6[: ]+)' | sed -E "s@\s*(inet6 addr[: ]+|inet6[: ]+)([^ ]*) .*@\2@")
    if [ -n "$IPV4_ADDRESSES" ] || [ -n "$IPV6_ADDRESSES" ]; then
        echo "NETWORK INTERFACE=$NETWORK_INTERFACE"
        for IPV4_ADDRESS in $IPV4_ADDRESSES; do 
            echo "IPV4=$IPV4_ADDRESS"
        done
        for IPV6_ADDRESS in $IPV6_ADDRESSES; do 
            echo "IPV6=$IPV6_ADDRESS"
        done
    fi
done

0

নেটেড হোস্টে আপনার বাহ্যিক আইপি ঠিকানাটি সন্ধান করার সময়, বেশ কয়েকটি উত্তর এইচটিটিপি ভিত্তিক পদ্ধতি ব্যবহারের পরামর্শ দেয় ifconfig.meযেমন:

$ curl ifconfig.me/ip

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

$ dig +short myip.opendns.com @resolver1.opendns.com

আমার এই সহজ উপাখ্যানটি আমার মধ্যে রয়েছে ~/.bashrc:

alias wip='dig +short myip.opendns.com @resolver1.opendns.com'

0

এই দুটি উপায় আমার পক্ষে কাজ করেছে:

আপনার ইন্টারফেসের আইপি ঠিকানা পেতে eth0 eth নীচের উদাহরণে আপনার ইন্টারফেসের নাম দিয়ে eth0 প্রতিস্থাপন করুন। ifconfig eth0 | grep -w "inet" | tr -s " " | cut -f3 -d" "

হোস্ট-নেম ব্যবহার করে: এটি আপনাকে আপনার ইথোর আইনে বা আইপিএড্রেস দেবে। -আমি ব্যবহার করে আপনাকে এই সমস্ত মান ইন্টারফেসের ইনট মান দিতে হবে whe

hostname -i


-1
curl ifconfig.co 

এটি আপনার সিস্টেমের কেবলমাত্র আইপি ঠিকানা প্রদান করে।


1
এর জন্য একটি কার্যকরী ইন্টারনেট সংযোগ প্রয়োজন এবং আপনার সর্বজনীনভাবে দৃশ্যমান আইপি ঠিকানাটি ফিরিয়ে দেবে, যা আপনি যা চান তা হতে পারে বা নাও পারে।
jlh

-2

আমি Hostname -Lস্ক্রিপ্টে চলক হিসাবে কেবল আইপি পেতে ব্যবহার করব।


সম্ভবত আপনি বলার চেষ্টা করছেন hostname -iবা hostname -I?
জেএলএইচ

user@linux:~$ Hostname -L -bash: Hostname: command not found user@linux:~$ 1. ক্যাপিটাল Hভুল 2. এমন কোনো-L
সাবরিনা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.