টেলনেট ছাড়াও খোলা বন্দরগুলি পরীক্ষা করার বিকল্পগুলি কী কী?


24

টেলনেট ভিআইএ পোর্টটি পরীক্ষা করতে আমরা নিম্নলিখিতটি ব্যবহার করতে পারি; নিম্নলিখিত উদাহরণে আমরা পোর্ট 6667 পরীক্ষা করি:

[root@kafka03 ~]# telnet kafka02 6667
Trying 103.64.35.86...
Connected to kafka02.
Escape character is '^]'.
^CConnection closed by foreign host

যেহেতু কিছু মেশিনে আমরা টেলনেট ব্যবহার করতে পারি না (অভ্যন্তরীণ কারণে) বন্দর চেক করার বিকল্পগুলি কী, টেলনেট হিসাবে?


পার্ল কি একটি বিকল্প?
জেফ শ্যাচলার

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

2
পার্ল কি একটি বিকল্প? - হ্যাঁ
yael

2
নোট করুন যে টেলনেট একটি পরিশীলিত প্রোটোকল। telnetযদি পোর্ট কমান্ড লাইনে দেওয়া হয় ইউটিলিটি প্রোটোকল আচরণ বন্ধ হয়ে যাবে। তারপরে এটি netcatলাইনের শেষ সনাক্তকরণের সাথে অনেকটা আচরণ করে ।
রেক্সকোটিটানস

আরও একটি অপারেটিং-সিস্টেম অজ্ঞেয় সম্পর্কিত প্রশ্ন, এটি পোর্ট স্ক্যানিংয়ের দিকেও ইঙ্গিত দেয় না, এটি ইউনিক্স.স্ট্যাকেক্সেঞ্জাওয়েজ / সেকশনস / ৪৯৯৯৯৪
জেডিবিপি

উত্তর:


23

যদি বাশ শেল ব্যবহার করে থাকেন তবে কোনও বন্দর খোলা আছে বা বন্ধ আছে তা পরীক্ষা করতে আপনি এর বৈশিষ্ট্যটি ব্যবহার করতে পারেন:

(timeout 1 bash -c '</dev/tcp/127.0.0.1/17500 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/null
PORT OPEN

(timeout 1 bash -c '</dev/tcp/127.0.0.1/7500 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/null
PORT CLOSED

নোট করুন যে সার্ভার যদি সময় শেষ হওয়ার 1 সেকেন্ড পরে সাড়া না দেয় তবে কমান্ডগুলি 'বাধাগ্রস্থ হয় এবং এইভাবে কিছুই মুদ্রিত হয় না।


5
সম্ভবত আপনার প্রশ্নের পরিবর্তে হোস্টের নামটি ব্যবহার করা উচিত (কাফকা02) 127.0.0.1, এটি দেখতে এটি দেখতে কেবল লুপব্যাকের সাথে কাজ করে।
দিমিত্রি গ্রিগরিয়েভ

1
(timeout 1 bash -c '</dev/tcp/www.google.com/444 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/nullআমার জন্য কিছুই প্রিন্ট করে না (timeout 1 bash -c '</dev/tcp/www.google.com/444' && echo PORT OPEN || echo PORT CLOSED) 2>/dev/nullপ্রত্যাশিত হিসাবে কাজ করেছে (প্রিন্ট ক্লোজড প্রিন্ট করে)। এর অবস্থানটি নোট করুন '
thecarpy

তুমি কি ব্যাশ পেতে -c '<আপনার / dev / TCP / kafka01 / 6667'
Yael

তাহলে প্রতিধ্বনি $? (যদি 0 তবে বন্দরটি উন্মুক্ত থাকে)
yael

আইআইআরসি এই ব্যাশ বৈশিষ্ট্যটি কিছুক্ষণ আগে দেবিয়ানে অক্ষম করা হত। এটি একটি ঝরঝরে কৌশল তবে সবসময় কাজ করে না।
বেনামে

32

নেটক্যাট একটি বিকল্প।

nc -zv kafka02 6667
  • -z = প্রকৃতপক্ষে কোনও ডেটা প্রেরণ না করেই ডেমন শোনার জন্য স্ক্যান করতে এনসি সেট করে
  • -v = ভার্বোজ মোড সক্ষম করে

এনসি থেকে স্ট্যান্ডার্ড আউটপুট পাওয়া কি সম্ভব? কারণ আমি আমার বাশ স্ক্রিপ্টে লিখতে চাই
yael

2
ডকুমেন্টেশন পড়ুন! বিকল্পগুলি ছাড়া ncঅনেক পছন্দ করে telnet
হেনরিক -

হ্যাঁ আমি দস্তাবেজগুলি পড়েছি তবে -উ পতাকাটি টাইমআউট হিসাবে কাজ করে না
yael

উদাহরণস্বরূপ - c -v -w 1 kafka01 6667 (আমরা টাইমআউট পাই না)
yael

NC -v -w 3 kafka01 6667 Ncat: VERSION 6.40 ( nmap.org/ncat ) Ncat: 10.164.235.85:6667 সাথে সংযুক্ত। (এটি এখনও স্তব্ধ)
yael

23

সোনার মান নিঃসন্দেহে nmap( nmap.org ), তবে এটি সাধারণত "সেরা ফলাফল" এর জন্য মূল প্রয়োজন। তবে, স্বতন্ত্র বাইনারিগুলি উপলব্ধ এবং কেবল অবক্ষয়যোগ্য ক্ষমতা সহ এটি একটি অনিবদ্ধ ব্যবহারকারী হিসাবে চালানো সম্ভব। উদাহরণস্বরূপ, স্টিলথ synস্ক্যান ( -sS) এর পরিবর্তে , এটি কোনও স্ট্যান্ডার্ড টিসিপি সংযোগ স্ক্যানে ফিরে আসে -sT। এটি কার্যত নেটকাটের সমতুল্য, তবে এটি রয়েছে এমন দুর্দান্ত মাল্টি-হোস্ট, স্পিড-আপ ক্ষমতা সহ।

একটি উদাহরণ:

not-root$ nmap -sT google.com
Starting Nmap 7.70 ( https://nmap.org ) at 2018-11-04 21:01 GMT
Nmap scan report for google.com (172.217.23.14)
Host is up (0.12s latency).
rDNS record for 172.217.23.14: lhr35s01-in-f14.1e100.net
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

1
বেশিরভাগ সংস্থায় এনএম্যাপকে একটি স্ক্যানিং সরঞ্জাম হিসাবে বিবেচনা করা হয় এবং যথাযথ অনুমোদন ছাড়াই এনএম্যাপ ব্যবহার করা যায় না। এছাড়াও এটি যদি ইসি 2 উদাহরণ হয় তবে এডাব্লুএস থেকেও অনুমোদনের প্রয়োজন।
আল মামুন

4

পার্ল যদি কোনও বিকল্প হয় তবে IO::Socketআপনি কোনও নির্দিষ্ট হোস্ট এবং বন্দরের সাথে সংযোগ পরীক্ষা করতে এর মডিউলটি ব্যবহার করতে পারেন ; প্রোটোকল হিসাবে হার্ড-কোড টিসিপির নীচের স্ক্রিপ্ট (যা টেলনেট ব্যবহার করবে):

#!/usr/bin/perl -w

# tries to connect to the given IP and port (tcp)

use strict;
use IO::Socket;

my $desthost = shift or die "Usage: $0 host port\n";
my $destport = shift or die "Usage: $0 host port\n";

gethostbyname($desthost) || die "Invalid host given\n";

my $handle = IO::Socket::INET->new(
        PeerAddr => $desthost,
        PeerPort => $destport,
        Proto    => 'tcp')
    or die "can't connect to $desthost:$destport: $!\n";
close $handle;
print "Success!\n"

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

$ ./above-script kafka02 6667
can't connect to kafka02:6667: Connection refused

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

$ ./above-script kafka02 4200
Success!

2

টেলনেটের পরিবর্তে ডিভাইস ফাইল / dev / tcp এবং / dev / udp ব্যবহার করা যেতে পারে। উদাহরণ: প্রতিধ্বনি 0> /dev/tcp/103.64.35.86/6667। তারপরে #echo using ব্যবহার করে প্রস্থান স্থিতি পরীক্ষা করে দেখুন? । যদি প্রস্থান স্থিতি 0 হয় তবে পোর্টটি খোলা থাকবে। যদি প্রস্থান স্থিতি শূন্য হয় না তবে পোর্টটি বন্ধ রয়েছে। ইউডিপি প্যাকেটগুলি পরীক্ষা করার জন্য, প্রতিধ্বনি 0> /dev/udp/103.64.35.86/6667 ব্যবহার করুন।


আমার রেডহাট 7-তে / দেব / এর আওতায়, আমাদের টিসিপি নেই
ইয়েল

ls / dev / tcp / ls: / dev / tcp /: অ্যাক্সেস করতে পারবেন না এমন কোনও ফাইল বা ডিরেক্টরি নেই
yael

আপনি কোন ওএসে এটি পরীক্ষা করে দেখেন?
ইয়েল

@ আইয়েল, আপনি ls এর সময় / dev / tcp বা / dev / udp পাবেন না। আপনার শেলটিতে ঠিক একই কমান্ডটি ব্যবহার করে দেখুন ফলাফল পাবেন। যাইহোক, আমি প্রায়শই এটি RHEL6,7
আল মামুন

0
ss -lt 

এটি আপনি ব্যবহার করতে পারেন অন্য আদেশ।


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