আমি কীভাবে পরীক্ষা করতে পারি যে কোন বন্দরগুলি ব্যস্ত এবং আমার লিনাক্স মেশিনে কোন বন্দরগুলি নিখরচায় রয়েছে?


30

আমার লিনাক্স মেশিনে ব্যস্ত এবং ফ্রি পোর্ট নম্বরগুলি খুঁজে পেতে এবং তালিকাভুক্ত করার জন্য কোনও কমান্ড লাইন কমান্ড বা অন্য কোনও উপায় আছে?

উত্তর:


41

আদেশ

netstat -antu

সমস্ত টিসিপি এবং ইউডিপি পোর্ট ব্যবহৃত হবে show আউটপুটটি এরকম কিছু দেখবে:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN

লোকাল অ্যাড্রেস ফিল্ডে কোলনের পরে নম্বরটি ব্যবহৃত পোর্টটি দেখায়। রাজ্য যদি "তালিকা" থাকে তবে এর অর্থ একটি পোর্ট যা আগত সংযোগগুলির জন্য ব্যবহার করছে। আইপি ঠিকানা তাহলে Local Addressক্ষেত্র 0.0.0.0এটা মানে ইনকামিং সংযোগ একটি ইন্টারফেস নির্ধারিত কোনো IP ঠিকানার উপর গ্রহণ করা হবে - তাই আপনার মেশিনের সংযোগ উদ্ভব বাইরে থেকে এই উপায়।

যদি এটি বলে localhostবা 127.0.0.1এটি কেবল আপনার মেশিন থেকে সংযোগ গ্রহণ করবে।

অতিরিক্তভাবে, আপনি যদি -pপ্যারামিটারটি যুক্ত করেন এবং এটি রুট হিসাবে চালান, এটি পোর্টটি খোলার প্রক্রিয়াটি দেখায়:

$ sudo netstat -antup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN      860/rpc.statd

ব্যবহারে যেমন প্রদর্শিত হচ্ছে না তেমন কিছুই নিখরচায়, তবে ব্যবহারকারীরা (অনিবদ্ধ অ্যাকাউন্ট) কেবলমাত্র 1023 এর উপরে পোর্ট খুলতে পারবেন।


এর অর্থ হল কোনও ইন্টারফেসের জন্য নির্ধারিত কোনও আইপি ঠিকানায় আগত সংযোগগুলি গ্রহণ করা হবে - সুতরাং এর অর্থ আপনার মেশিনের বাইরে উত্পন্ন সংযোগগুলি থেকে আপনি এখানে কোনও ত্রুটি করেননি? আপনি সম্ভবত বোঝাতে চেয়েছিলেন যে সংযোগগুলি গ্রহণযোগ্য হবে, যদি তারা কোনও নির্ধারিত ইন্টারফেসে নির্ধারিত কোনও ঠিকানায় আসে তবে সেগুলির উত্স নির্বিশেষে। আগত সংযোগগুলির উত্স সম্ভবত পরবর্তী কলামে বিদেশী ঠিকানাতে নির্দিষ্ট করা আছে। সুতরাং এটি সেখানে রয়েছে, যদি কারও কাছে একটি মান হিসাবে ০.০.০.০ থাকে তবে এর অর্থ হ'ল সংযোগগুলি মেশিনের বাইরের অংশ সহ যে কোনও জায়গা থেকে গৃহীত হবে
ব্যবহারকারী 907860

1
@ ব্যবহারকারী 907860 এটি পরিষ্কার নাও হতে পারে তবে আমি যে পার্থক্যটি করছি তা 0.0.0.0 বনাম 127.0.0.1 এর মধ্যে রয়েছে - পরবর্তীটি কেবল আপনার মেশিন থেকে সংযোগ গ্রহণ করবে, কারণ এটি একটি নিরবিচ্ছিন্ন আইপি ঠিকানায় শুনছে। যেখানে 0.0.0.0 এর অর্থ আপনার মেশিনে কোনও ঠিকানা রয়েছে এবং সেগুলি সরবরাহ করা হয়েছে, অন্য মেশিন থেকে সংযোগ তৈরি করা যেতে পারে।
পল

শুধু এফওয়াইআই, 🐟 -antuহিসাবে লেখা যেতে পারে-tuna
আবদেননর TOUMI


7

একটি ভাল এবং নির্ভরযোগ্য উপায় খোলা ব্যবহার করছে পোর্ট জন্য চেক করতে ss(জন্য প্রতিস্থাপন অবচিত netstat ), এটা উঁচু বিশেষাধিকার (অর্থাত প্রয়োজন ছাড়া একটি স্ক্রিপ্টের মধ্যে ব্যবহারযোগ্য এর sudo)।

ব্যবহার: -lশোনার বন্দরগুলির বিকল্প -n, ডিএনএস রেজোলিউশনকে বাইপাস করার বিকল্প এবং উত্স পোর্টের ফিল্টার NN: src :NN( NNআপনি যে পোর্টটি পর্যবেক্ষণ করতে চান সেটি প্রতিস্থাপন করুন )। আরও বিকল্পের জন্য, দেখুনman ss

ss -ln src :NN

উদাহরণ:

[user@server ~]# ss -ln src :80
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port
LISTEN      0      128                      *:80                *:*
[user@server ~]# ss -ln src :81
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port

এবং একটি স্ক্রিপ্টে, গ্রেপ ব্যবহার করে, আমরা আউটপুটটিতে আমাদের অনুরোধ করা পোর্ট রয়েছে কিনা তা পরীক্ষা করতে পারি। 80 ব্যবহারের বন্দর সহ উদাহরণ (উপরে দেখুন):

myport=80
# count the number of occurrences of port $myport in output: 1= in use; 0 = not in use
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 80 is in use (result == 1)

ব্যবহারযোগ্য নয় পোর্ট Example১ সহ উদাহরণ (উপরে দেখুন)

myport=81
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 81 is NOT in use (result == 0)

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