linux--nc-dstat

杀马特。学长 韩版系。学妹 提交于 2020-01-04 18:39:03

NC

一、概述:

NC命令是一个功能强大的网络工具,通过它不仅可以扫描探测端口,还可以作为客户端连接服务。

主要作用:

  • 实现对任意TCP/UDP端口的侦听

  • 扫描端口

  • 作为client发起TCP或UDP连接

  • 机器间传输文件

  • 网络测速

二、语法:

ncat [OPTIONS…] [hostname] [port]

三、参数

以下只列出常用的几个参数,大家可以使用man nc 或者nc -h查看详尽参数内容

-l 使用监听模式,管控传入的资料。

-n 直接使用IP地址,而不通过域名服务器。

-p<通信端口> 设置本地主机使用的通信端口。

-r <端口>指定本地与远端主机的通信端口。

-s<来源位址> 设置本地主机送出数据包的IP地址。 //适用于多网卡主机

-u 使用UDP传输协议。

-v 详细输出–用两个-v可得到更详细的内容 //输出交互式报错信息,新手调试必备

-w<超时秒数> 设置等待连线的时间。

-z 使用0输入/输出模式,只在扫描通信端口时使用。 //告诉主机不用等待用户输入

-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。

四、使用场景及实例

1、扫描探测某机器的某个端口是否存活,有返回即存活。

nc -v -w 2 192.168.10.10 8999

在这里插入图片描述
2、开发过程中可能会需要把包先放到测试环境进行部署测试,可以使用nc命令来实现

目的:将hostA 上my.cnf文件传输至hostB上
步骤:
在hostB上执行:

nc -l 8666 >test.txt      //打开8666端口,将其他机器传输过来的数据写入test.txt

在hostA上执行:

nc hostB 8666 < my.cnf         //往hostB主机的8666端口传输my.cnf

注意:在启动数据传输时可能会遇到报错:
No route to host!
这类报错一般都是防火墙的原因,排查firewalld,iptables selinux状态,可以暂时关闭防火请测试一下。

3、网络测速
在hostA和hostB上都安装网络监控工具:dstat

yum -y install dstat

hostA: nc -l 9999 > /dev/null

hostB: nc hostA 9999 < /dev/zero

另开终端窗口,在两个主机上执行dstat命令,通过recv和send列信息查看网速。


dstat服务器监控工具

dstat可以很方便的监控系统运行状况并用于基准测试和排除故障。

dstat可以实时看到所有系统资源,例如,其可以统计IDE控制器当前状态来比较磁盘利用率,
或者直接利用相同时间间隔内网络带宽数值来比较磁盘的吞吐率。

dstat的默认输出是专门为人们实时查看而设计的,不过你也可以将详细信息通过CSV输出到一个文件,并导入GNU或Excel生成表格。

dstat特性总结:

⒈结合了vmstat,iostat,ifstat,netstat以及更多的信息

⒉实时显示统计情况

⒊在分析和排障时可以通过启用监控项并排序

⒋模块化设计

5.使用python编写的,更方便编写插件,扩展现有的工作任务

6.可以分组统计块设备/网络设备,并给出总数

7.可以显示每台设备的当前状态

8.极准确的时间精度,即便是系统负荷较高也不会延迟显示

9.显示中间结果延时小于1秒

10.支持输出CSV格式报表,并能导入到Gnumeric和Excel以生成图形

使用方法:

dstat基本用法就是执行dstat命令,输出如下
在这里插入图片描述

total-cpu-usage(CPU使用率):这项报告显示了用户,系统和空闲部分,上图中空闲居多。
值得注意的是waits指标,当系统处于waits状态时,是正在等待I/O设备(内存,磁盘)的相应而且迟迟没有收到。
如果发现wait值居高不下,需要排查下系统有没有故障问题。

dsk/total(磁盘使用率):磁盘的读写操作,显示磁盘读写总数。

net/total(网络统计):设备发送和接受的数据总数。

paging(分页统计):系统的分页活动。分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,或者说内存非常分散,大多数情况下你都希望看到page in(换入)和page out(换出)的值是0

system(系统统计):这一项显示的是中断(int)和上下文切换(csw)。这项统计仅在有比较基线时才有意义。

这一栏中较高的统计值通常表示大量的进程造成拥塞,需要对CPU进行关注。你的服务器一般情况下都会运行一些程序,所以这项总是显示一些数值。

dstat可用参数

-l :显示负载统计量

-m :显示内存使用率(包括used,buffer,cache,free值)

-r :显示I/O统计

-s :显示交换分区使用情况

-t :将当前时间显示在第一行

–fs :显示文件系统统计数据(包括文件总数量和inodes值)

–nocolor :不显示颜色(有时候有用)

–socket :显示网络统计数据

–tcp :显示常用的TCP统计

–udp :显示监听的UDP接口及其当前用量的一些动态数据

dstat附带了一些插件很大程度地扩展了它的功能。可以通过查看/usr/share/dstat目录来查看它们的一些使用方法,常用的有这些:

-–disk-util :显示某一时间磁盘的忙碌状况

-–freespace :显示当前磁盘空间使用率

-–proc-count :显示正在运行的程序数量

-–top-bio :指出块I/O最大的进程

-–top-cpu :图形化显示CPU占用最大的进程

-–top-io :显示正常I/O最大的进程

-–top-mem :显示占用最多内存的进程

常用实例:

查看全部内存占用情况:

dstat -g -l -m -s --top-mem

在这里插入图片描述

如何输出一个CVS文件

dstat --output /tmp/test.csv

可以有选择的查看一些参数,并将实时数据写到指定文件.csv中

常见问题:
1、CPU的使用情况若不合理可以用dstat对应的插件(- -top-cpu)排查最耗CPU的进程,配合mpstat、top再去下钻一下分析线程,进一步到程序(比如java可以jstack)。
2、磁盘IO读写是否正常:读写是否偏大;若不正常可以配合插件- -disk-util、- -freespace、- -top-bio、- -top-io等进行排查。
3、内存是否正常:一般要配合交换区内存一起判断,若不正常可以配合插件- -top-mem,可能是开启的进程太多,或者第三方程序捣乱。
4、分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,或者说内存非常分散,大多数情况下你都希望看到page in(换入)和page out(换出)的值都是0。
5、使用不同的插件可以快速排查有问题的进程,然后配合其他工具下钻具体问题,当然这个需要建立在你对所有的插件都比较熟悉的基础之上,知道什么情况下使用什么插件。技巧:可以将常用的命令写成脚本,执行分析,这样就不用每次都敲了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!