linux+ncat命令的简单介绍

测试特定协议下指定端口是否开启我们在检测远程服务是否正常时,经常会用一些工具(命令)来检测端口是否开启,来确定服务是否正常 。通常可用于检测的工具有nc、socat、nmap等,基本思想是向远端指定端口发送数据,看其状态 。
远端:192.168.0.15
本端:192.168.0.10
单向检测(适用于无法登录远端服务查看的情况)
如果返回succeeded,则说明相应的UDP端口访问正常 。
如果无任何返回信息 , 则说明相应的UDP端口访问失败 。
nc -uvz $IP $Port.//UDP
nc -vz $IP $Port//TCP
远端不监听1777端口情况
# nc -uvz 192.168.0.15 1777
#
远端监听1777端口
# nc -ul 1777
XXXXX
# nc -uvz 192.168.0.15 1777
Connection to 192.168.0.15 1777 port [udp/powerguardian] succeeded!
如果succeeded,则无任何返回,如果failed则返回Connection refused 。
echo "This socat udp test." | socat - udp-connect:$IP:$Port
远端不监听1777端口 , 本端发送udp数据至远端指定端口 。
# echo "This socat udp test." | socat - udp-connect:192.168.0.15:1777
2017/06/18 14:26:39 socat[22195] E read(3, 0xb48a20, 8192): Connection refused
远端开启监听,本端再次发送 。
# nc -ul 1777
This socat udp test.
# echo "This socat udp test." | socat - udp-connect:192.168.0.15:1777
#
用指定协议扫描远端指定端口
nmap -sU -p $Port $IP
# nmap -sU -p 1777 192.168.0.15
Starting Nmap 5.51 () at 2017-06-18 14:35 CST
Nmap scan report for host-192-168-0-15 (192.168.0.15)
Host is up (0.00098s latency).
PORTSTATESERVICE
1777/udp closed unknown
MAC Address: FA:16:3E:1A:54:30 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
可以通过传输文本及文件来测试UDP端口是否正常(先开监听,再发送)
远端:nc -ul $Port
本端: nc -u $IP $Port
在本端键入任意字符 , 看远端是否可以收到 。
远端:nc -l $Port$Filename
本端:nc $IP $Port$Filename
可以执行md5sum看两端的文件md5是否相同
注:如果是检测tcp协议端口,上述nc命令中,去掉参数-u即可 。另外 , 也可以使用telnet $IP $Port来完成
$ nc -vzw 2 180.76.148.122 22-81 //显示详细信息,包含失败的
$ nc -zw 2 180.76.148.122 22-81//不显示详细信息,只包含成功的,如果检测udp端口,可用"vzw"参数,"z"参数表示连接成功后立即关闭连接
Connection to 180.76.148.122 port 22 [tcp/ssh] succeeded!
Connection to 180.76.148.122 port 80 [tcp/http] succeeded!
附全面的ncat使用方法:
如何获取spark streaming监控指标首先以一个简单的示例开始:用Spark Streaming对从TCP连接中接收的文本进行单词计数 。
/**
* 功能:用spark streaming实现的针对流式数据进行单词计数的程序 。
*该程序只是对数据流中的每一批数据进行单独的计数 , 而没有进行增量计数 。
* 环境:spark 1.6.1, scala 2.10.4
*/
// 引入相关类库
import org.apache.spark._
import org.apache.spark.streaming._
object NetworkWordCount {
def main(args: Array[String]) {
// Spark Streaming程序以StreamingContext为起点,其内部维持了一个SparkContext的实例 。
// 这里我们创建一个带有两个本地线程的StreamingContext,并设置批处理间隔为1秒 。
val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount")
val ssc = new StreamingContext(conf, Seconds(1))
// 在一个Spark应用中默认只允许有一个SparkContext,默认地spark-shell已经为我们创建好了
// SparkContext,名为sc 。因此在spark-shell中应该以下述方式创建StreamingContext,以
// 避免创建再次创建SparkContext而引起错误:
// val ssc = new StreamingContext(sc, Seconds(1))
// 创建一个从TCP连接获取流数据的DStream,其每条记录是一行文本
val lines = ssc.socketTextStream("localhost", 9999)
// 对DStream进行转换 , 最终得到计算结果
val res = lines.flatMap(_.split(" ")).map((_, 1)).reduceByKey(__)
// 打印该DStream中每个RDD中的前十个元素
res.print()
// 执行完上面代码,Spark Streaming并没有真正开始处理数据,而只是记录需在数据上执行的操作 。
// 当我们设置好所有需要在数据上执行的操作以后,我们就可以开始真正地处理数据了 。如下:
【linux ncat命令的简单介绍】ssc.start()// 开始计算
ssc.awaitTermination()// 等待计算终止
}
}
为了测试程序,我们得有TCP数据源作为输入,这可以使用Netcat(一般linux系统中都有,如果是windows系统,则推荐你使用 Ncat ,Ncat是一个改进版的Netcat) 。如下使用Netcat监听指定本地端口:
nc -lk 9999
如果是使用Ncat , 则对应命令如下:
ncat -lk 9999
在IntelliJ IDEA或Eclipse中可以本地运行测试上述Spark Streaming程序,该程序会连接到Netcat(或Ncat)监听的端口,你可以在运行Netcat(或Ncat)的终端中输入东东并回车,然后就可以看到该Spark Streaming程序会马上输出处理结果,并且这个处理是不停的、流式的 。
注意:上述示例只是对数据流中的每一批数据进行单独的计数,而没有进行增量计数 。
nc 命令使用小结nc是netcat的简写 , 有着网络界的瑞士军刀美誉 。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具 。比如大家很熟悉使用telnet测试tcp端口,而nc可以支持测试linux的tcp和udp端口 , 而且也经常被用于端口扫描,甚至把nc作为server以TCP或UDP方式侦听指定端口做简单的模拟测试 。
2020年10月07日 - 初稿
阅读原文 -
ncat或者说nc是一款功能类似cat的工具,但是是用于网络的 。它是一款拥有多种功能的 CLI 工具 , 可以用来在网络上读、写以及重定向数据 。它被设计成可以被脚本或其他程序调用的可靠的后端工具 。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具 。
ncat / nc既是一个端口扫描工具,也是一款安全工具,还能是一款监测工具,甚至可以做为一个简单的 TCP 代理 。由于有这么多的功能,它被誉为是网络界的瑞士军刀 。这是每个系统管理员都应该知道并且掌握它 。
在大多数 Debian 发行版中,nc是默认可用的,它会在安装系统的过程中自动被安装 。但是在 CentOS 7 / RHEL 7 的最小化安装中 , nc并不会默认被安装 。你需要用下列命令手工安装 。
nc的作用:
nc的控制参数不少,常用的几个参数如下所列:
用于指定nc将处于侦听模式 。指定该参数,则意味着nc被当作server , 侦听并接受连接,而非向其它地址发起连接 。
暂未用到(老版本的nc可能需要在端口号前加-p参数)
指定发送数据的源IP地址,适用于多网卡机
指定nc使用UDP协议 , 默认为TCP
输出交互或出错信息,新手调试时尤为有用
6)-w
超时秒数,后面跟数字
7)-z
表示zero , 表示扫描时不发送任何数据
作用:批量端口扫描,可根据扫描主机的配置调整后台扫描进程数量(手动执行后根据统计的执行时间调整脚本中关于进程数量的参数) , 通过定时任务作为简单的服务监控(可修改脚本添加其他报警功能,例如邮件等)
实现:使用nc指令扫描端口,使用管道特性控制后台扫描进程数量
不足:仅仅对扫描端口状态为down的信息做记录,并没有其他报警操作
使用:
10 useful ncat (nc) Command Examples for Linux Systems
nc命令用法举例
SSH 通过代理连接服务器老规矩linux ncat命令 , 先说结论linux ncat命令:
或者linux ncat命令:
注意:由于 macOS 版Ncat的 7.90 和 7.91 版本的 buglinux ncat命令,上述方式不再生效 。起码 7.91 版本在 macOS 10.15.7 上是不行的 。此问题在 7.92 版本中已经解决 。
具体原因参见:
但 Linux 上没问题 。所以增加个socat的替补方案:
Scout 本身很强大,但对代理的支持这部分貌似差一些,只支持 SOCKSv4 和 HTTP Proxy , 不支持 SOCKS5 。详情参考《socat 初窥门径》。
有些时候,由于网络限制等原因,不能直接连通过 SSH 连到指定服务器,需要经过代理进行连接 。例如如下场景:
其中,
client.net不能直接访问server.net
client.net可以访问proxy.net
proxy.net可以访问server.net
使用SSH的ProxyCommand选项,配合nc/Ncat命令,实现client.net通过代理proxy.net ,以SSH访问server.net。
(1) nc
macOS 上常用这种方案 。但是nc不支持需要认证的代理 。
常用参数:
(2) Ncat
Ncat在 macOS 上通过代理连接时会出现连接断开的情况 。
常用参数:
以nc为例,如使用Ncat可以自行替换 。
默认为 Socket5 代理,这时可以省略-X参数
或者采用另一种写法:
SSH配置文件位置:
增加如下两行内容:以nc为例,如使用Ncat可以自行替换 。
使用配置文件之后,就不需要在命令行中进行代理配置linux ncat命令了 。
对于大部分情况,都可以直接使用nc或者Ncat解决 。但对于一些复杂情况 , 也可以通过其它方案完成 。如在 macOS 上想通过需要认证的代理连接,用nc不支持代理认证, Ncat又有些问题 。
对于代理类型的问题,可以通过Brook来进行类型转换 。
1、 corkscrew
只支持 HTTP 代理
如需要访问带认证的代理服务器:
~/.ssh/myauth的内容:
2、 proxytunnel
只支持 HTTP 代理
命令行里只填用户名 , 会提示输入密码,或者通过环境变量传入 。
(完)
安装了nmap为什么还说ncatnmap一般在/usr/bin/nmap , 查看有没有这个文件 。再说了查看环境变量有没有设置成功只需要输入echo $PATH,把这条命令输出结果拿出来看才有用 。一般修改.bash_profile需要logout后重新登录才会起效,个人觉得你的系统应该是没有安装这个工具 , 你需要yum install nmap....
linux中怎样lun的wwn与主机看到的对应什么版本的Redhat?RHEL5以上:cd/sys/class/fc_host/hostNcatport_nameRHEL4以下:cat/proc/scsi/qla2xxx/1(1,2,3,..N)
linux ncat命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、linux ncat命令的信息别忘了在本站进行查找喔 。

    推荐阅读