What are the alternatives for checking open ports, besides telnet?
up vote
22
down vote
favorite
We can use the following in order to test telnet VIA port; in the following example we test port 6667:
[root@kafka03 ~]# telnet kafka02 6667
Trying 103.64.35.86...
Connected to kafka02.
Escape character is '^]'.
^CConnection closed by foreign host
Since on some machines we can't use telnet (for internal reasons) what are the alternatives to check ports, as telnet?
linux networking curl telnet
add a comment |
up vote
22
down vote
favorite
We can use the following in order to test telnet VIA port; in the following example we test port 6667:
[root@kafka03 ~]# telnet kafka02 6667
Trying 103.64.35.86...
Connected to kafka02.
Escape character is '^]'.
^CConnection closed by foreign host
Since on some machines we can't use telnet (for internal reasons) what are the alternatives to check ports, as telnet?
linux networking curl telnet
Is perl an option?
– Jeff Schaller
Nov 4 at 15:01
4
Those "internal reasons" might bar you from using other port-scanning software. I knew a guy that worked at a bank and had his contract terminated because he had a copy of nmap on his PC. He was using it for work-related purposes, but it was on the proscribed list, so he was escorted out of the building.
– Roger Lipscombe
Nov 4 at 15:39
2
Is perl an option? – YES
– yael
Nov 4 at 17:47
1
Note that telnet is a sophisticated protocol. Thetelnetutility turns off the protocol behaviour if a port is given at command line. Then it behaves much likenetcat, just with line ending detection.
– rexkogitans
Nov 5 at 8:29
add a comment |
up vote
22
down vote
favorite
up vote
22
down vote
favorite
We can use the following in order to test telnet VIA port; in the following example we test port 6667:
[root@kafka03 ~]# telnet kafka02 6667
Trying 103.64.35.86...
Connected to kafka02.
Escape character is '^]'.
^CConnection closed by foreign host
Since on some machines we can't use telnet (for internal reasons) what are the alternatives to check ports, as telnet?
linux networking curl telnet
We can use the following in order to test telnet VIA port; in the following example we test port 6667:
[root@kafka03 ~]# telnet kafka02 6667
Trying 103.64.35.86...
Connected to kafka02.
Escape character is '^]'.
^CConnection closed by foreign host
Since on some machines we can't use telnet (for internal reasons) what are the alternatives to check ports, as telnet?
linux networking curl telnet
linux networking curl telnet
edited Nov 4 at 15:01
Jeff Schaller
35.6k952118
35.6k952118
asked Nov 4 at 10:25
yael
2,2831652
2,2831652
Is perl an option?
– Jeff Schaller
Nov 4 at 15:01
4
Those "internal reasons" might bar you from using other port-scanning software. I knew a guy that worked at a bank and had his contract terminated because he had a copy of nmap on his PC. He was using it for work-related purposes, but it was on the proscribed list, so he was escorted out of the building.
– Roger Lipscombe
Nov 4 at 15:39
2
Is perl an option? – YES
– yael
Nov 4 at 17:47
1
Note that telnet is a sophisticated protocol. Thetelnetutility turns off the protocol behaviour if a port is given at command line. Then it behaves much likenetcat, just with line ending detection.
– rexkogitans
Nov 5 at 8:29
add a comment |
Is perl an option?
– Jeff Schaller
Nov 4 at 15:01
4
Those "internal reasons" might bar you from using other port-scanning software. I knew a guy that worked at a bank and had his contract terminated because he had a copy of nmap on his PC. He was using it for work-related purposes, but it was on the proscribed list, so he was escorted out of the building.
– Roger Lipscombe
Nov 4 at 15:39
2
Is perl an option? – YES
– yael
Nov 4 at 17:47
1
Note that telnet is a sophisticated protocol. Thetelnetutility turns off the protocol behaviour if a port is given at command line. Then it behaves much likenetcat, just with line ending detection.
– rexkogitans
Nov 5 at 8:29
Is perl an option?
– Jeff Schaller
Nov 4 at 15:01
Is perl an option?
– Jeff Schaller
Nov 4 at 15:01
4
4
Those "internal reasons" might bar you from using other port-scanning software. I knew a guy that worked at a bank and had his contract terminated because he had a copy of nmap on his PC. He was using it for work-related purposes, but it was on the proscribed list, so he was escorted out of the building.
– Roger Lipscombe
Nov 4 at 15:39
Those "internal reasons" might bar you from using other port-scanning software. I knew a guy that worked at a bank and had his contract terminated because he had a copy of nmap on his PC. He was using it for work-related purposes, but it was on the proscribed list, so he was escorted out of the building.
– Roger Lipscombe
Nov 4 at 15:39
2
2
Is perl an option? – YES
– yael
Nov 4 at 17:47
Is perl an option? – YES
– yael
Nov 4 at 17:47
1
1
Note that telnet is a sophisticated protocol. The
telnet utility turns off the protocol behaviour if a port is given at command line. Then it behaves much like netcat, just with line ending detection.– rexkogitans
Nov 5 at 8:29
Note that telnet is a sophisticated protocol. The
telnet utility turns off the protocol behaviour if a port is given at command line. Then it behaves much like netcat, just with line ending detection.– rexkogitans
Nov 5 at 8:29
add a comment |
5 Answers
5
active
oldest
votes
up vote
17
down vote
accepted
If using Bash Shell, then you can use its feature to check if a port is open or closed:
(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
Note that if the server does not respond after 1 second the timeout is reached, the commands between ' interrupted, and thus nothing is printed.
New contributor
in2nix4life is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
4
Perhaps you should use the hostname from the question (kafka02) instead of127.0.0.1, which makes it look like it only works with the loopback.
– Dmitry Grigoryev
Nov 5 at 9:52
1
(timeout 1 bash -c '</dev/tcp/www.google.com/444 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/nullprints nothing for me.(timeout 1 bash -c '</dev/tcp/www.google.com/444' && echo PORT OPEN || echo PORT CLOSED) 2>/dev/nullworked as expected (prints PORT CLOSED). Note the location of the'.
– thecarpy
Nov 7 at 9:21
what you get on bash -c '</dev/tcp/kafka01/6667'
– yael
Nov 7 at 10:45
then echo $? ( if 0 then port is open ,)
– yael
Nov 7 at 10:46
add a comment |
up vote
25
down vote
netcat is one option.
nc -zv kafka02 6667
-z= sets nc to simply scan for listening daemons, without actually sending any data to them
-v= enables verbose mode
is it possible to get standard output from the nc ? because I want to write in in my bash script
– yael
Nov 4 at 10:36
1
Read the documentation! Without optionsncbehaves a lot liketelnet.
– Henrik
Nov 4 at 11:03
yes I read the docs but -w flag not works as timeout
– yael
Nov 4 at 11:09
example - c -v -w 1 kafka01 6667 ( we not get timeout )
– yael
Nov 4 at 11:09
nc -v -w 3 kafka01 6667 Ncat: Version 6.40 ( nmap.org/ncat ) Ncat: Connected to 10.164.235.85:6667. ( this still hang )
– yael
Nov 4 at 11:10
|
show 1 more comment
up vote
21
down vote
The gold standard is undoubtedly nmap (nmap.org), but it typically requires root for “best results”. However, standalone binaries are available and it is possible to run it as an unprivileged user, just with degraded capabilities. For example, instead of a stealth syn scan (-sS), it falls back to a standard TCP connect scan (-sT). This is functionally equivalent to netcat, but with the nice multi-host, sped-up capabilities that it has.
An example:
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
in most organizations nmap is considered as a scaning tool and one can not use nmap without proper authorization. Also if it is an EC2 instance, authorization required from AWS as well.
– al mamun
Nov 6 at 20:52
add a comment |
up vote
4
down vote
If Perl is an option, you can use its IO::Socket module to test a connection to a particular host and port; the script below hard-codes TCP as the protocol (which is what telnet would use):
#!/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 portn";
my $destport = shift or die "Usage: $0 host portn";
gethostbyname($desthost) || die "Invalid host givenn";
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"
Sample output from a closed port:
$ ./above-script kafka02 6667
can't connect to kafka02:6667: Connection refused
Sample output from an open port:
$ ./above-script kafka02 4200
Success!
add a comment |
up vote
0
down vote
Device file /dev/tcp and /dev/udp can be used instead of telnet.
Example: echo 0 > /dev/tcp/103.64.35.86/6667 . Then check the exit status using #echo $? . If exit status is 0 then the port is open. If exit status is non-zero then the port is closed. For checking udp packets, use echo 0 > /dev/udp/103.64.35.86/6667 .
in my redhat 7 under /dev/ , we not have tcp
– yael
Nov 7 at 10:47
ls /dev/tcp/ ls: cannot access /dev/tcp/: No such file or directory
– yael
Nov 7 at 10:48
on which OS you test it?
– yael
Nov 7 at 10:49
@yael, you will not get /dev/tcp or /dev/udp while ls. try the exact same command on your shell and you will get the result. by the way, I frequently use it on RHEL6,7
– al mamun
Nov 7 at 15:29
add a comment |
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
17
down vote
accepted
If using Bash Shell, then you can use its feature to check if a port is open or closed:
(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
Note that if the server does not respond after 1 second the timeout is reached, the commands between ' interrupted, and thus nothing is printed.
New contributor
in2nix4life is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
4
Perhaps you should use the hostname from the question (kafka02) instead of127.0.0.1, which makes it look like it only works with the loopback.
– Dmitry Grigoryev
Nov 5 at 9:52
1
(timeout 1 bash -c '</dev/tcp/www.google.com/444 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/nullprints nothing for me.(timeout 1 bash -c '</dev/tcp/www.google.com/444' && echo PORT OPEN || echo PORT CLOSED) 2>/dev/nullworked as expected (prints PORT CLOSED). Note the location of the'.
– thecarpy
Nov 7 at 9:21
what you get on bash -c '</dev/tcp/kafka01/6667'
– yael
Nov 7 at 10:45
then echo $? ( if 0 then port is open ,)
– yael
Nov 7 at 10:46
add a comment |
up vote
17
down vote
accepted
If using Bash Shell, then you can use its feature to check if a port is open or closed:
(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
Note that if the server does not respond after 1 second the timeout is reached, the commands between ' interrupted, and thus nothing is printed.
New contributor
in2nix4life is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
4
Perhaps you should use the hostname from the question (kafka02) instead of127.0.0.1, which makes it look like it only works with the loopback.
– Dmitry Grigoryev
Nov 5 at 9:52
1
(timeout 1 bash -c '</dev/tcp/www.google.com/444 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/nullprints nothing for me.(timeout 1 bash -c '</dev/tcp/www.google.com/444' && echo PORT OPEN || echo PORT CLOSED) 2>/dev/nullworked as expected (prints PORT CLOSED). Note the location of the'.
– thecarpy
Nov 7 at 9:21
what you get on bash -c '</dev/tcp/kafka01/6667'
– yael
Nov 7 at 10:45
then echo $? ( if 0 then port is open ,)
– yael
Nov 7 at 10:46
add a comment |
up vote
17
down vote
accepted
up vote
17
down vote
accepted
If using Bash Shell, then you can use its feature to check if a port is open or closed:
(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
Note that if the server does not respond after 1 second the timeout is reached, the commands between ' interrupted, and thus nothing is printed.
New contributor
in2nix4life is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
If using Bash Shell, then you can use its feature to check if a port is open or closed:
(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
Note that if the server does not respond after 1 second the timeout is reached, the commands between ' interrupted, and thus nothing is printed.
New contributor
in2nix4life is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
edited Nov 7 at 10:17
thecarpy
2,245824
2,245824
New contributor
in2nix4life is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
answered Nov 4 at 18:27
in2nix4life
1962
1962
New contributor
in2nix4life is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
in2nix4life is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
in2nix4life is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
4
Perhaps you should use the hostname from the question (kafka02) instead of127.0.0.1, which makes it look like it only works with the loopback.
– Dmitry Grigoryev
Nov 5 at 9:52
1
(timeout 1 bash -c '</dev/tcp/www.google.com/444 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/nullprints nothing for me.(timeout 1 bash -c '</dev/tcp/www.google.com/444' && echo PORT OPEN || echo PORT CLOSED) 2>/dev/nullworked as expected (prints PORT CLOSED). Note the location of the'.
– thecarpy
Nov 7 at 9:21
what you get on bash -c '</dev/tcp/kafka01/6667'
– yael
Nov 7 at 10:45
then echo $? ( if 0 then port is open ,)
– yael
Nov 7 at 10:46
add a comment |
4
Perhaps you should use the hostname from the question (kafka02) instead of127.0.0.1, which makes it look like it only works with the loopback.
– Dmitry Grigoryev
Nov 5 at 9:52
1
(timeout 1 bash -c '</dev/tcp/www.google.com/444 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/nullprints nothing for me.(timeout 1 bash -c '</dev/tcp/www.google.com/444' && echo PORT OPEN || echo PORT CLOSED) 2>/dev/nullworked as expected (prints PORT CLOSED). Note the location of the'.
– thecarpy
Nov 7 at 9:21
what you get on bash -c '</dev/tcp/kafka01/6667'
– yael
Nov 7 at 10:45
then echo $? ( if 0 then port is open ,)
– yael
Nov 7 at 10:46
4
4
Perhaps you should use the hostname from the question (kafka02) instead of
127.0.0.1, which makes it look like it only works with the loopback.– Dmitry Grigoryev
Nov 5 at 9:52
Perhaps you should use the hostname from the question (kafka02) instead of
127.0.0.1, which makes it look like it only works with the loopback.– Dmitry Grigoryev
Nov 5 at 9:52
1
1
(timeout 1 bash -c '</dev/tcp/www.google.com/444 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/null prints nothing for me. (timeout 1 bash -c '</dev/tcp/www.google.com/444' && echo PORT OPEN || echo PORT CLOSED) 2>/dev/null worked as expected (prints PORT CLOSED). Note the location of the '.– thecarpy
Nov 7 at 9:21
(timeout 1 bash -c '</dev/tcp/www.google.com/444 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/null prints nothing for me. (timeout 1 bash -c '</dev/tcp/www.google.com/444' && echo PORT OPEN || echo PORT CLOSED) 2>/dev/null worked as expected (prints PORT CLOSED). Note the location of the '.– thecarpy
Nov 7 at 9:21
what you get on bash -c '</dev/tcp/kafka01/6667'
– yael
Nov 7 at 10:45
what you get on bash -c '</dev/tcp/kafka01/6667'
– yael
Nov 7 at 10:45
then echo $? ( if 0 then port is open ,)
– yael
Nov 7 at 10:46
then echo $? ( if 0 then port is open ,)
– yael
Nov 7 at 10:46
add a comment |
up vote
25
down vote
netcat is one option.
nc -zv kafka02 6667
-z= sets nc to simply scan for listening daemons, without actually sending any data to them
-v= enables verbose mode
is it possible to get standard output from the nc ? because I want to write in in my bash script
– yael
Nov 4 at 10:36
1
Read the documentation! Without optionsncbehaves a lot liketelnet.
– Henrik
Nov 4 at 11:03
yes I read the docs but -w flag not works as timeout
– yael
Nov 4 at 11:09
example - c -v -w 1 kafka01 6667 ( we not get timeout )
– yael
Nov 4 at 11:09
nc -v -w 3 kafka01 6667 Ncat: Version 6.40 ( nmap.org/ncat ) Ncat: Connected to 10.164.235.85:6667. ( this still hang )
– yael
Nov 4 at 11:10
|
show 1 more comment
up vote
25
down vote
netcat is one option.
nc -zv kafka02 6667
-z= sets nc to simply scan for listening daemons, without actually sending any data to them
-v= enables verbose mode
is it possible to get standard output from the nc ? because I want to write in in my bash script
– yael
Nov 4 at 10:36
1
Read the documentation! Without optionsncbehaves a lot liketelnet.
– Henrik
Nov 4 at 11:03
yes I read the docs but -w flag not works as timeout
– yael
Nov 4 at 11:09
example - c -v -w 1 kafka01 6667 ( we not get timeout )
– yael
Nov 4 at 11:09
nc -v -w 3 kafka01 6667 Ncat: Version 6.40 ( nmap.org/ncat ) Ncat: Connected to 10.164.235.85:6667. ( this still hang )
– yael
Nov 4 at 11:10
|
show 1 more comment
up vote
25
down vote
up vote
25
down vote
netcat is one option.
nc -zv kafka02 6667
-z= sets nc to simply scan for listening daemons, without actually sending any data to them
-v= enables verbose mode
netcat is one option.
nc -zv kafka02 6667
-z= sets nc to simply scan for listening daemons, without actually sending any data to them
-v= enables verbose mode
answered Nov 4 at 10:28
steve
13.6k22452
13.6k22452
is it possible to get standard output from the nc ? because I want to write in in my bash script
– yael
Nov 4 at 10:36
1
Read the documentation! Without optionsncbehaves a lot liketelnet.
– Henrik
Nov 4 at 11:03
yes I read the docs but -w flag not works as timeout
– yael
Nov 4 at 11:09
example - c -v -w 1 kafka01 6667 ( we not get timeout )
– yael
Nov 4 at 11:09
nc -v -w 3 kafka01 6667 Ncat: Version 6.40 ( nmap.org/ncat ) Ncat: Connected to 10.164.235.85:6667. ( this still hang )
– yael
Nov 4 at 11:10
|
show 1 more comment
is it possible to get standard output from the nc ? because I want to write in in my bash script
– yael
Nov 4 at 10:36
1
Read the documentation! Without optionsncbehaves a lot liketelnet.
– Henrik
Nov 4 at 11:03
yes I read the docs but -w flag not works as timeout
– yael
Nov 4 at 11:09
example - c -v -w 1 kafka01 6667 ( we not get timeout )
– yael
Nov 4 at 11:09
nc -v -w 3 kafka01 6667 Ncat: Version 6.40 ( nmap.org/ncat ) Ncat: Connected to 10.164.235.85:6667. ( this still hang )
– yael
Nov 4 at 11:10
is it possible to get standard output from the nc ? because I want to write in in my bash script
– yael
Nov 4 at 10:36
is it possible to get standard output from the nc ? because I want to write in in my bash script
– yael
Nov 4 at 10:36
1
1
Read the documentation! Without options
nc behaves a lot like telnet.– Henrik
Nov 4 at 11:03
Read the documentation! Without options
nc behaves a lot like telnet.– Henrik
Nov 4 at 11:03
yes I read the docs but -w flag not works as timeout
– yael
Nov 4 at 11:09
yes I read the docs but -w flag not works as timeout
– yael
Nov 4 at 11:09
example - c -v -w 1 kafka01 6667 ( we not get timeout )
– yael
Nov 4 at 11:09
example - c -v -w 1 kafka01 6667 ( we not get timeout )
– yael
Nov 4 at 11:09
nc -v -w 3 kafka01 6667 Ncat: Version 6.40 ( nmap.org/ncat ) Ncat: Connected to 10.164.235.85:6667. ( this still hang )
– yael
Nov 4 at 11:10
nc -v -w 3 kafka01 6667 Ncat: Version 6.40 ( nmap.org/ncat ) Ncat: Connected to 10.164.235.85:6667. ( this still hang )
– yael
Nov 4 at 11:10
|
show 1 more comment
up vote
21
down vote
The gold standard is undoubtedly nmap (nmap.org), but it typically requires root for “best results”. However, standalone binaries are available and it is possible to run it as an unprivileged user, just with degraded capabilities. For example, instead of a stealth syn scan (-sS), it falls back to a standard TCP connect scan (-sT). This is functionally equivalent to netcat, but with the nice multi-host, sped-up capabilities that it has.
An example:
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
in most organizations nmap is considered as a scaning tool and one can not use nmap without proper authorization. Also if it is an EC2 instance, authorization required from AWS as well.
– al mamun
Nov 6 at 20:52
add a comment |
up vote
21
down vote
The gold standard is undoubtedly nmap (nmap.org), but it typically requires root for “best results”. However, standalone binaries are available and it is possible to run it as an unprivileged user, just with degraded capabilities. For example, instead of a stealth syn scan (-sS), it falls back to a standard TCP connect scan (-sT). This is functionally equivalent to netcat, but with the nice multi-host, sped-up capabilities that it has.
An example:
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
in most organizations nmap is considered as a scaning tool and one can not use nmap without proper authorization. Also if it is an EC2 instance, authorization required from AWS as well.
– al mamun
Nov 6 at 20:52
add a comment |
up vote
21
down vote
up vote
21
down vote
The gold standard is undoubtedly nmap (nmap.org), but it typically requires root for “best results”. However, standalone binaries are available and it is possible to run it as an unprivileged user, just with degraded capabilities. For example, instead of a stealth syn scan (-sS), it falls back to a standard TCP connect scan (-sT). This is functionally equivalent to netcat, but with the nice multi-host, sped-up capabilities that it has.
An example:
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
The gold standard is undoubtedly nmap (nmap.org), but it typically requires root for “best results”. However, standalone binaries are available and it is possible to run it as an unprivileged user, just with degraded capabilities. For example, instead of a stealth syn scan (-sS), it falls back to a standard TCP connect scan (-sT). This is functionally equivalent to netcat, but with the nice multi-host, sped-up capabilities that it has.
An example:
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
edited Nov 5 at 12:23
crater2150
2,49021521
2,49021521
answered Nov 4 at 21:04
Landak
23318
23318
in most organizations nmap is considered as a scaning tool and one can not use nmap without proper authorization. Also if it is an EC2 instance, authorization required from AWS as well.
– al mamun
Nov 6 at 20:52
add a comment |
in most organizations nmap is considered as a scaning tool and one can not use nmap without proper authorization. Also if it is an EC2 instance, authorization required from AWS as well.
– al mamun
Nov 6 at 20:52
in most organizations nmap is considered as a scaning tool and one can not use nmap without proper authorization. Also if it is an EC2 instance, authorization required from AWS as well.
– al mamun
Nov 6 at 20:52
in most organizations nmap is considered as a scaning tool and one can not use nmap without proper authorization. Also if it is an EC2 instance, authorization required from AWS as well.
– al mamun
Nov 6 at 20:52
add a comment |
up vote
4
down vote
If Perl is an option, you can use its IO::Socket module to test a connection to a particular host and port; the script below hard-codes TCP as the protocol (which is what telnet would use):
#!/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 portn";
my $destport = shift or die "Usage: $0 host portn";
gethostbyname($desthost) || die "Invalid host givenn";
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"
Sample output from a closed port:
$ ./above-script kafka02 6667
can't connect to kafka02:6667: Connection refused
Sample output from an open port:
$ ./above-script kafka02 4200
Success!
add a comment |
up vote
4
down vote
If Perl is an option, you can use its IO::Socket module to test a connection to a particular host and port; the script below hard-codes TCP as the protocol (which is what telnet would use):
#!/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 portn";
my $destport = shift or die "Usage: $0 host portn";
gethostbyname($desthost) || die "Invalid host givenn";
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"
Sample output from a closed port:
$ ./above-script kafka02 6667
can't connect to kafka02:6667: Connection refused
Sample output from an open port:
$ ./above-script kafka02 4200
Success!
add a comment |
up vote
4
down vote
up vote
4
down vote
If Perl is an option, you can use its IO::Socket module to test a connection to a particular host and port; the script below hard-codes TCP as the protocol (which is what telnet would use):
#!/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 portn";
my $destport = shift or die "Usage: $0 host portn";
gethostbyname($desthost) || die "Invalid host givenn";
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"
Sample output from a closed port:
$ ./above-script kafka02 6667
can't connect to kafka02:6667: Connection refused
Sample output from an open port:
$ ./above-script kafka02 4200
Success!
If Perl is an option, you can use its IO::Socket module to test a connection to a particular host and port; the script below hard-codes TCP as the protocol (which is what telnet would use):
#!/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 portn";
my $destport = shift or die "Usage: $0 host portn";
gethostbyname($desthost) || die "Invalid host givenn";
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"
Sample output from a closed port:
$ ./above-script kafka02 6667
can't connect to kafka02:6667: Connection refused
Sample output from an open port:
$ ./above-script kafka02 4200
Success!
edited Nov 6 at 20:14
chicks
8101721
8101721
answered Nov 6 at 13:32
Jeff Schaller
35.6k952118
35.6k952118
add a comment |
add a comment |
up vote
0
down vote
Device file /dev/tcp and /dev/udp can be used instead of telnet.
Example: echo 0 > /dev/tcp/103.64.35.86/6667 . Then check the exit status using #echo $? . If exit status is 0 then the port is open. If exit status is non-zero then the port is closed. For checking udp packets, use echo 0 > /dev/udp/103.64.35.86/6667 .
in my redhat 7 under /dev/ , we not have tcp
– yael
Nov 7 at 10:47
ls /dev/tcp/ ls: cannot access /dev/tcp/: No such file or directory
– yael
Nov 7 at 10:48
on which OS you test it?
– yael
Nov 7 at 10:49
@yael, you will not get /dev/tcp or /dev/udp while ls. try the exact same command on your shell and you will get the result. by the way, I frequently use it on RHEL6,7
– al mamun
Nov 7 at 15:29
add a comment |
up vote
0
down vote
Device file /dev/tcp and /dev/udp can be used instead of telnet.
Example: echo 0 > /dev/tcp/103.64.35.86/6667 . Then check the exit status using #echo $? . If exit status is 0 then the port is open. If exit status is non-zero then the port is closed. For checking udp packets, use echo 0 > /dev/udp/103.64.35.86/6667 .
in my redhat 7 under /dev/ , we not have tcp
– yael
Nov 7 at 10:47
ls /dev/tcp/ ls: cannot access /dev/tcp/: No such file or directory
– yael
Nov 7 at 10:48
on which OS you test it?
– yael
Nov 7 at 10:49
@yael, you will not get /dev/tcp or /dev/udp while ls. try the exact same command on your shell and you will get the result. by the way, I frequently use it on RHEL6,7
– al mamun
Nov 7 at 15:29
add a comment |
up vote
0
down vote
up vote
0
down vote
Device file /dev/tcp and /dev/udp can be used instead of telnet.
Example: echo 0 > /dev/tcp/103.64.35.86/6667 . Then check the exit status using #echo $? . If exit status is 0 then the port is open. If exit status is non-zero then the port is closed. For checking udp packets, use echo 0 > /dev/udp/103.64.35.86/6667 .
Device file /dev/tcp and /dev/udp can be used instead of telnet.
Example: echo 0 > /dev/tcp/103.64.35.86/6667 . Then check the exit status using #echo $? . If exit status is 0 then the port is open. If exit status is non-zero then the port is closed. For checking udp packets, use echo 0 > /dev/udp/103.64.35.86/6667 .
edited Nov 6 at 20:55
answered Nov 6 at 20:47
al mamun
63110
63110
in my redhat 7 under /dev/ , we not have tcp
– yael
Nov 7 at 10:47
ls /dev/tcp/ ls: cannot access /dev/tcp/: No such file or directory
– yael
Nov 7 at 10:48
on which OS you test it?
– yael
Nov 7 at 10:49
@yael, you will not get /dev/tcp or /dev/udp while ls. try the exact same command on your shell and you will get the result. by the way, I frequently use it on RHEL6,7
– al mamun
Nov 7 at 15:29
add a comment |
in my redhat 7 under /dev/ , we not have tcp
– yael
Nov 7 at 10:47
ls /dev/tcp/ ls: cannot access /dev/tcp/: No such file or directory
– yael
Nov 7 at 10:48
on which OS you test it?
– yael
Nov 7 at 10:49
@yael, you will not get /dev/tcp or /dev/udp while ls. try the exact same command on your shell and you will get the result. by the way, I frequently use it on RHEL6,7
– al mamun
Nov 7 at 15:29
in my redhat 7 under /dev/ , we not have tcp
– yael
Nov 7 at 10:47
in my redhat 7 under /dev/ , we not have tcp
– yael
Nov 7 at 10:47
ls /dev/tcp/ ls: cannot access /dev/tcp/: No such file or directory
– yael
Nov 7 at 10:48
ls /dev/tcp/ ls: cannot access /dev/tcp/: No such file or directory
– yael
Nov 7 at 10:48
on which OS you test it?
– yael
Nov 7 at 10:49
on which OS you test it?
– yael
Nov 7 at 10:49
@yael, you will not get /dev/tcp or /dev/udp while ls. try the exact same command on your shell and you will get the result. by the way, I frequently use it on RHEL6,7
– al mamun
Nov 7 at 15:29
@yael, you will not get /dev/tcp or /dev/udp while ls. try the exact same command on your shell and you will get the result. by the way, I frequently use it on RHEL6,7
– al mamun
Nov 7 at 15:29
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f479710%2fwhat-are-the-alternatives-for-checking-open-ports-besides-telnet%23new-answer', 'question_page');
}
);
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Is perl an option?
– Jeff Schaller
Nov 4 at 15:01
4
Those "internal reasons" might bar you from using other port-scanning software. I knew a guy that worked at a bank and had his contract terminated because he had a copy of nmap on his PC. He was using it for work-related purposes, but it was on the proscribed list, so he was escorted out of the building.
– Roger Lipscombe
Nov 4 at 15:39
2
Is perl an option? – YES
– yael
Nov 4 at 17:47
1
Note that telnet is a sophisticated protocol. The
telnetutility turns off the protocol behaviour if a port is given at command line. Then it behaves much likenetcat, just with line ending detection.– rexkogitans
Nov 5 at 8:29