资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

包含linuxncat命令的词条

如何获取spark streaming监控指标

首先以一个简单的示例开始:用Spark Streaming对从TCP连接中接收的文本进行单词计数。

10年积累的成都网站设计、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有桃源免费网站建设让你可以放心的选择与我们合作。

/**

* 功能:用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并没有真正开始处理数据,而只是记录需在数据上执行的操作。

// 当我们设置好所有需要在数据上执行的操作以后,我们就可以开始真正地处理数据了。如下:

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程序会马上输出处理结果,并且这个处理是不停的、流式的。

注意:上述示例只是对数据流中的每一批数据进行单独的计数,而没有进行增量计数。

SSH 通过代理连接服务器

老规矩,先说结论:

或者:

注意:由于 macOS 版 Ncat 的 7.90 和 7.91 版本的 bug,上述方式不再生效。起码 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 可以自行替换。

使用配置文件之后,就不需要在命令行中进行代理配置了。

对于大部分情况,都可以直接使用 nc 或者 Ncat 解决。但对于一些复杂情况,也可以通过其它方案完成。如在 macOS 上想通过需要认证的代理连接,用 nc 不支持代理认证, Ncat 又有些问题。

对于代理类型的问题,可以通过 Brook 来进行类型转换。

1、 corkscrew

只支持 HTTP 代理

如需要访问带认证的代理服务器:

~/.ssh/myauth 的内容:

2、 proxytunnel

只支持 HTTP 代理

命令行里只填用户名,会提示输入密码,或者通过环境变量传入。

(完)

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命令用法举例

测试特定协议下指定端口是否开启

我们在检测远程服务是否正常时,经常会用一些工具(命令)来检测端口是否开启,来确定服务是否正常。通常可用于检测的工具有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).

PORT     STATE  SERVICE

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使用方法:


当前标题:包含linuxncat命令的词条
URL网址:http://cdkjz.cn/article/dsgcdii.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220