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、使用不同的插件可以快速排查有问题的进程,然后配合其他工具下钻具体问题,当然这个需要建立在你对所有的插件都比较熟悉的基础之上,知道什么情况下使用什么插件。技巧:可以将常用的命令写成脚本,执行分析,这样就不用每次都敲了。
来源:CSDN
作者:电影菌
链接:https://blog.csdn.net/UF147/article/details/103831254