কীভাবে বাশ থেকে নেটমাস্ক পাবেন?


8

আমি আমার নেটমাস্কটি লিনাক্সে পেতে চাই। এটি দিয়ে আউটপুট করা হয়েছে ifconfigতবে আমি স্ট্রিংটি বের করতে চাই।


5
এই প্রশ্নটি খুব শক্ত, আসলে আপনি যদি নিজের ওএস নির্দিষ্ট না করেন, যেমন, ফ্রিবিএসডি- ifconfigর নেটমাস্ক লাইনটি: inet 192.168.144.120 netmask 0xffffff00 broadcast 192.168.144.255সুতরাং উত্তরগুলি সহজেই সামঞ্জস্য করা যায়, সম্ভবত কোনও এক-আকারের-ফিট নেই (কেবল বাশ / আইফোনফিগ ব্যবহার করে) ।
sr_

উত্তর:


8

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

#!/bin/sh
ifconfig "$1" | sed -rn '2s/ .*:(.*)$/\1/p'

./script eth0

লিনাক্সে ifconfig সম্পর্কে

নেটস্ট্যাট, আরপ, আরপ এবং রুটের মতো অন্যান্য traditionalতিহ্যবাহী নেটওয়ার্কিং কমান্ডের পাশাপাশি, ifconfig নেট-সরঞ্জাম প্যাকেজের অংশ। নেট-সরঞ্জামগুলি সত্যই দীর্ঘকাল থেকে সক্রিয়ভাবে বিকাশিত হয়নি এবং এটি আরও নতুন আইপ্রেট 2 প্যাকেজের পক্ষে অবমূল্যায়নের প্রচেষ্টা রয়েছে । বংশবৃদ্ধির স্বার্থে, আপনি যদি এই মৌলিক উত্তরণ সম্পর্কে আরও বিশদ চান, তবে এখানে কিছু প্রাসঙ্গিক লিঙ্ক রয়েছে:

কেস উদাহরণ: দেবিয়ান লিনাক্স

কেস উদাহরণ: আর্চ লিনাক্স

নেট-সরঞ্জামগুলি ifconfig জন্য ম্যান পৃষ্ঠা (BUGS বিভাগ দেখুন)

ব্যবহারকারীদের দৃষ্টিকোণ থেকে ফ্রেমওয়ার্কগুলির বিশ্লেষণ এবং তুলনা


যদি প্রশ্নের মধ্যে ইন্টারফেসের কোনও নেটমাস্ক না থাকে তবে এই সমাধানটি '1' প্রদান করে। অত্যন্ত গুরুত্বপূর্ণ শব্দ 'মাস্ক' এর উপর উপযুক্ত নোঙ্গরের প্রয়োজন সহ এটিকে নির্ভরযোগ্য / নিরাপদ করতে রেজেক্সের কিছু গুরুতর পুনর্বার প্রয়োজন।
অলিভার ডুঙ্গি

7
/sbin/ifconfig eth0 | awk '/Mask:/{ print $4;} '

?


আপনি নিখোঁজ | কাটা -c6- এছাড়াও "মুখোশ:" অপসারণ করতে
michelemarcon

3
অ্যাজক ফিল্ড বিভাজক নির্দিষ্ট করে "মাস্ক:" অপসারণ করতেও কাজ করে:/sbin/ifconfig eth0 | awk -F: '/Mask:/{print $4}'
শেন

ডেবিয়ান স্ট্রেচ / নেট-সরঞ্জামগুলিতে 2.10-আলফাতে আমাকে এটিতে পরিবর্তন করতে হয়েছিল:/sbin/ifconfig eth0 | awk '/netmask/{print $4}'
শেন

7

আমি ভাবছি যদি আপনি সত্যই কেবল মুখোশ চান want হতে পারে আপনি প্রকৃতপক্ষে মাস্ক সহ নেটওয়ার্ক (বা আইপি), কনফিগার ফাইলগুলিতে nmap, বা যা কিছু ব্যবহার করতে চান।

সেক্ষেত্রে লিনাক্স-এ আপনি ip ...কমান্ডের আউটপুটও পার্স করতে পারেন ।

সমস্ত ঠিকানা ইন্টারফেসের ঠিকানা এবং তাদের মুখোশ দিয়ে সিআইডিআর স্বরলিপি:

ip -o -f inet addr show | awk '/scope global/ {print $2, $4}'

বা এটি ডিফল্ট ইন্টারফেসে সীমাবদ্ধ করতে:

default_if=$(ip route list | awk '/^default/ {print $5}')
ip -o -f inet addr show $default_if | awk '{print $4}'

যা আমার মেশিনে আমাকে "192.168.1.61/24" দেয়।


2
... এটা 'বিশ্বব্যাপী সুযোগ' বা 'ডিফল্ট' উপর মেলে পারেন হিসাবে আপনি কি করতে পারেন সত্যিই প্রয়োজনীয় নয় ip -o -f inet addr show scope globalএবং ip route list default
11:22

3

আপনি যদি এমন কোনও ওএস ব্যবহার করেন যা মুখোশটিকে হেক্সে ফেলে দেয় তবে আপনি এর মতো কিছু করতে পারেন:

#!/usr/bin/bash

# read the mask, and strip leading 0x if it's there
hexmask=$( echo $1 | sed -e 's/^0x//' )

# loop through $hexmask in pairs
#
for (( i=0; i<${#hexmask}; i+=2 )); do
        if (( $i > 1 )); then
                # use a . to separate octets
                # but don't print a leading .
                printf "%s" "."
        fi
        printf "%d" "0x${1:$i:2}"
done

printf "\n"

2
/sbin/ifconfig eth0 | grep Mask | cut -d":" -f4

এটি এখন পর্যন্ত সর্বোত্তম উত্তর হিসাবে বাকীগুলি স্থির সংখ্যক কলামের উপর নির্ভর করে এটি ব্যবহার করে awkযা বাস্তবে সত্য নয় ifconfig। আমি যদিও কয়েকটি মাত্র পরিবর্তন সুপারিশ করবে: ifconfig eth0 | grep -o 'Mask:[^\s]*' | cut -d':' -f2-oযাতে কেবল grepপুরো লট (আরও দক্ষ) এর চেয়ে কেবল লাইনের কিছু অংশ ফিরে আসে। [^\s]*নেটমাস্ক টোকেনের শেষ সন্ধান করতে অ-হোয়াইটস্পেস অক্ষরগুলি ( ) মেলান । সুরক্ষার জন্য মাঠের ডিলিমিটারের চারপাশে একক উদ্ধৃতি।
অলিভার ডুঙ্গি

ম্যাকোজে আমি হেক্সে /sbin/ifconfig | grep ask | sed -e 's/.*netmask //g' | sed -e 's/ .*//g'মাস্ক আউটপুট পেতে পারি ।
তোমাচি

1

আপনি যদি ডিফল্ট নেটওয়ার্ক ডিভাইসের জন্য নেটমাস্কের সন্ধান করছেন, এই কমান্ডটি ডিফল্ট ডিভাইসটি ফেরত দেয় যেহেতু ডিফল্ট ডিভাইসটি ইথ0 নাও হতে পারে

netdevice=$(ip r | grep default | awk '/default/ {print $5}')

এবং এই কমান্ডটি মাস্কটি পুনরুদ্ধার করে:

netmask=$(ifconfig "$netdevice" | awk '/netmask/{ print $4;}')

এলিয়াহ কাগান এবং পাওলো টোমকে ধন্যবাদ যে আমাকে উত্তর সহজীকরণ এবং পরিষ্কার করতে উভয়কেই সহায়তা করেছে। আমার ব্যক্তিগত মেশিনে, ডিফল্ট ইথারনেট ডিভাইসটি "wlx504654c1a91" ছিল যা সঠিকভাবে মনে রাখতে এবং টাইপ করতে খুব জটিল ছিল, সুতরাং দুটি পদক্ষেপ প্রক্রিয়া।


1
grep 'pattern' | awk '{ action }'সাধারণত হ্রাস করা যেতে পারেawk '/pattern/ { action }'
রোয়াইমা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.