网络管理命令
ping
ping命令主要的功能是用来检测网络的连通情况和分析网络速度。
-t:<存活数值> 设置存活数值TTL的大小 -c:-c <完成次数> 设置完成要求回应的次数 -W:<timeout> 在等待 timeout 秒后开始执行 -f:极速ping -i<间隔秒数>:指定收发信息的间隔时间 -I<网络界面>:使用指定的网络接口送出数据包 -l<前置载入>:设置在送出要求信息之前,先行发出的数据包 -n:只输出数值 -p<范本样式>:设置填满数据包的范本样式 -q:不显示指令执行过程,开头和结尾的相关信息除外 -r:忽略普通的Routing Table,直接将数据包送到远端主机上 -R:记录路由过程 -v:详细显示指令的执行过程
ping一下baidu
[root@dmxsp ~]# ping baidu.com PING baidu.com (220.181.38.251) 56(84) bytes of data
指定次数和时间,间隔ping baidu(ping 3次 间隔3秒)
[root@dmxsp ~]# ping -c 3 -i 3 baidu.com PING baidu.com (220.181.38.148) 56(84) bytes of data. 64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=128 time=17.5 ms 64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=128 time=19.9 ms 64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=3 ttl=128 time=22.1 ms — baidu.com ping statistics — 3 packets transmitted, 3 received, 0% packet loss, time 6017ms rtt min/avg/max/mdev = 17.580/19.897/22.130/1.865 ms
-i 指定发送数据包时间间隔,-c 指定一共发送多少个数据包,-I 指定源地址,-q指定直接显示程序的启动和最后结果
[root@dmxsp ~]# ping -i 3 -c 10 -I 10.0.0.22 220.181.38.148 -q PING 220.181.38.148 (220.181.38.148) from 10.0.0.22 : 56(84) bytes of data. — 220.181.38.148 ping statistics — 10 packets transmitted, 10 received, 0% packet loss, time 27071ms rtt min/avg/max/mdev = 12.339/14.931/18.998/2.404 ms
-i 3 发送周期为 3秒 -s 设置发送包的大小为1024 -t 设置TTL值为 255
[root@dmxsp ~]# ping -i 3 -s 1111 -t 223 10.0.0.22
nc
nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具
-g<网关>:设置路由器跃程通信网关,最多可设置8个 -G<指向器数目>:设置来源路由指向器,其数值为4的倍数 -h:在线帮助 -i<延迟秒数>:设置时间间隔,以便传送信息及扫描通信端口 -n:直接使用IP地址,而不通过域名服务器 -o<输出文件>:指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存 -p<通信端口>:设置本地主机使用的通信端口 -r:乱数指定本地与远端主机的通信端口 -s<来源位址>:设置本地主机送出数据包的IP地址 -l:用于指定nc将处于侦听模式 -u:指定nc使用UDP协议,默认为TCP -v:输出交互或出错信息,新手调试时尤为有用 -w:超时秒数,后面跟数字 -z:表示zero,表示扫描时不发送任何数据
安装
[root@dmxsp ~]# yum install nc -y
Chat Server(聊天服务器)
服务器之间的聊天跟软件和信息服务一样,比如你在计算机实验室,所有的对外的连接都是被限制的,你怎样和整天坐在隔壁房间的朋友沟通那?不要郁闷了,netcat提供了这样一种方法,你只需要创建一个Chat服务器,一个预先确定好的端口,这样子他就可以联系到你了
server(服务器)
netcat 命令在6666端口启动了一个tcp 服务器,所有的标准输出和输入会输出到该端口。输出和输入都在此shell中展示
[root@dmxsp ~]# nc -l 6666
Client(客户)
不管你在机器B上键入什么都会出现在机器A上
[root@web02 ~]$ nc 10.0.0.22 6666
文件传输
server(服务器)
[root@dmxsp ~]# nc -l 6666 < dmxsp.sh
Client(客户)
[root@web02 ~]$ nc -n 10.0.0.22 6666 > dmxsp.sh
server(服务器)
[root@dmxsp ~]# nc -l 6666 > php.zip
Client(客户)
[root@web02 ~]$ nc 10.0.0.22 6666 < php.zip
传输目录压缩
发送一个文件很简单,但是如果我们想要发送多个文件,或者整个目录,一样很简单,只需要使用压缩工具tar,压缩后发送压缩包。 如果你想要通过网络传输一个目录从A到B
server(服务器)
[root@dmxsp ~]# tar -cvf – dmxsp dmxsp.sh dm | nc -l 6666 dmxsp/ dmxsp/etc.tar.gz dmxsp/dmxsp.gz dmxsp.sh dm/
Client(客户)
[root@web02 ~]$ nc -n 10.0.0.22 6666 | tar -xvf – dmxsp/ dmxsp/etc.tar.gz dmxsp/dmxsp.gz dmxsp.sh dm/
打开一个shell
我们已经用过远程shell-使用telnet和ssh,但是如果这两个命令没有安装并且我们没有权限安装他们,我们也可以使用netcat创建远程shell
server(服务器)
[root@dmxsp ~]# nc -l 6666 -e /bin/bash
Client(客户)
[root@web02 ~]$ nc 10.0.0.22 6666
反向shell
反向shell是指在客户端打开的shell。反向shell这样命名是因为不同于其他配置,这里服务器使用的是由客户提供的服务
server(服务器)
[root@dmxsp ~]# nc -l 6666
Client(客户)
[root@web02 ~]$ nc 10.0.0.22 6666 -e /bin/bash
telnet
一种远程登录的工具。同样可以检查某个主机是否开启某个端口
-8:允许使用8位字符资料,包括输入与输出 -a:尝试自动登入远端系统 -b<主机别名>:使用别名指定远端主机名称 -c:不读取用户专属目录里的.telnetrc文件 -d:启动排错模式 -e<脱离字符>:设置脱离字符 -E:滤除脱离字符 -f:此参数的效果和指定”-F”参数相同 -F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机 -k<域名>:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名 -K:不自动登入远端主机 -l<用户名称>:指定要登入远端主机的用户名称 -L:允许输出8位字符资料 -n<记录文件>:指定文件记录相关信息 -r:使用类似rlogin指令的用户界面 -S<服务类型>:设置telnet连线所需的IP TOS信息 -x:假设主机有支持数据加密的功能,就使用它 -X<认证形态>:关闭指定的认证形态
安装
[root@dmxsp ~]# yum install -y xinetd [root@dmxsp ~]# yum install -y telnet*
启动服务
[root@dmxsp ~]# systemctl start xinetd.service [root@dmxsp ~]# systemctl start telnet.socket
关闭防火墙
[root@dmxsp ~]# systemctl stop firewalld.service
登录远程主机(默认只允许普通用户)
[c:\~]$ telnet 192.168.0.5
ss
是类似netstat的工具。能显示查看网络状态信息,包括TCP、UDP连接,端口
-a:显示所有网络连接 -l:显示LISTEN状态的连接(连接打开) -m:显示内存信息(用于tcp_diag) -n:不解析服务名称 -o:显示Tcp 定时器x -p:显示进程信息 -s:连接统计 -r:解析主机名 -d:只显示 DCCP信息 (等同于 -A dccp) -u:只显示udp信息 (等同于 -A udp) -w:只显示 RAW信息 (等同于 -A raw) -t:只显示tcp信息 (等同于 -A tcp) -x:只显示Unix通讯信息 (等同于 -A unix) -4:只显示 IPV4信息 -6:只显示 IPV6信息 –help:显示帮助信息 –version:显示版本信息
查看所有的tcp连接
[root@dmxsp ~]# ss -t -a
查看所有的udp连接
[root@dmxsp ~]# ss -u -a
显示LISTEN状态的进程信息
[root@dmxsp ~]# ss -pl
显示连接X服务器的进程
[root@dmxsp ~]# ss -x src /tmp/.X11-unix/*
显示本地打开的所有端口
[root@dmxsp ~]# ss -ln
用TCP 状态过滤Sockets
ss -4 state FILTER-NAME-HERE ss -6 state FILTER-NAME-HERE
FILTER-NAME-HERE可以是下面的任何一个
listen:侦听来自远方的TCP端口的连接请求 syn-sent:再发送连接请求后等待匹配的连接请求(客户端) syn-recv:再收到和发送一个连接请求后等待对方对连接请求的确认(服务器) established:代表一个打开的连接 fin-wait-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认 fin-wait-2:从远程TCP等待连接中断请求 close-wait:等待从本地用户发来的连接中断请求 closing:等待远程TCP对连接中断的确认 last-ack:等待原来的发向远程TCP的连接中断请求的确认 time-wait:等待足够的时间以确保远程TCP接收到连接中断请求的确认 closed:没有任何连接状态 all : 所有以上状态 connected : 除了listen and closed的所有状态 synchronized :所有已连接的状态除了syn-sent bucket : 显示状态为maintained as minisockets,如:time-wait和syn-recv. big : 和bucket相反
匹配远程地址和端口号
ss dst ADDRESS_PATTERN ss dst 192.168.1.1 ss dst 192.168.21.1:http ss dst 192.168.21.1:smtp ss dst 192.168.21.1:443
将本地或者远程端口和一个数比较
ss sport = :http ss dport = :http ss dport \> :1024 ss sport \> :1024 ss sport \< :32000 ss sport eq :22 ss dport != :22 ss state connected sport = :http ss \( sport = :http or sport = :https \) ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24
ss dport OP PORT 远程端口和一个数比较;ss sport OP PORT 本地端口和一个数比较
OP:可以代表以下任意一个: <= or le:小于或等于端口号 >= or ge:大于或等于端口号 == or eq:等于端口号 != or ne:不等于端口号 < or gt:小于端口号 > or lt:大于端口号
iftop
是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能。必须以root身份才能运行
-i:设定监测的网卡,如:# iftop -i eth1 -B:以bytes为单位显示流量(默认是bits),如:# iftop -B -n:使host信息默认直接都显示IP,如:# iftop -n -N:使端口信息默认直接都显示端口号,如: # iftop -N -F:显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0 -h(display this message):帮助,显示参数信息 -p:使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息; -b:使流量图形条默认就显示; -f:这个暂时还不太会用,过滤计算包用的; -P:使host信息及端口信息默认就都显示; -m:设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M
进入iftop画面后的一些操作命令(注意大小写)
按h切换是否显示帮助; 按n切换显示本机的IP或主机名; 按s切换是否显示本机的host信息; 按d切换是否显示远端目标主机的host信息; 按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量; 按N切换显示端口号或端口服务名称; 按S切换是否显示本机的端口信息; 按D切换是否显示远端目标主机的端口信息; 按p切换是否显示端口信息; 按P切换暂停/继续显示; 按b切换是否显示平均流量图形条; 按B切换计算2秒或10秒或40秒内的平均流量; 按T切换是否显示每个连接的总流量; 按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息; 按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化; 按j或按k可以向上或向下滚动屏幕显示的连接记录; 按1或2或3可以根据右侧显示的三列流量数据进行排序; 按<根据左边的本机名或IP排序; 按>根据远端目标主机的主机名或IP排序; 按o切换是否固定只显示当前的连接; 按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个! 按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢! 按q退出监控。
中间的<= =>这两个左右箭头,表示的是流量的方向
TX:发送流量 RX:接收流量 TOTAL:总流量 Cumm:运行iftop到目前时间的总流量 peak:流量峰值 rates:分别表示过去 2s 10s 40s 的平均流量
glances
Glances 是一个由 Python 编写,使用 psutil 库来从系统抓取信息的基于 curses 开发的跨平台命令行系统监视工具。 通过 Glances,我们可以监视 CPU,平均负载,内存,网络流量,磁盘 I/O,其他处理器 和 文件系统 空间的利用情况
Glances 是一个用来监视 GNU/Linux 和 FreeBSD 操作系统的 GPL 授权的自由软件
glances工具可以在用户的终端上实时显示重要的系统信息,并动态地对其进行更新。这个高效的工具可以工作于任何终端屏幕。另外它并不会消耗大量的CPU资源,通常低于百分之二。glances在屏幕上对数据进行显示,并且每隔两秒钟对其进行更新
Glances 主要功能
CPU 信息 (用户的相关应用, 系统核心程序和空闲程序)
总内存信息,包括了物理内存,交换空间和空闲内存等等
之前的 1 分钟、5 分钟和 15 分钟平均的 CPU 负载
网络链接的下行和上行速度
处理器总数,以及其活动状态
硬盘 I/O 相关(读写)速度详情
当前挂载设备的磁盘使用情况
高 CPU 和内存使用的进程名,和相关应用的位置
在底部显示当前日期和时间
将消耗最高系统资源的进程用红色标出
Glances 会用一下几种颜色来代表状态
绿色:OK(一切正常)
蓝色:CAREFUL(需要注意)
紫色:WARNING(警告)
红色:CRITICAL(严重)
Glances 还提供了更多的可在其运行时开关输出信息选项的快捷键
a:对进程自动排序 c:按 CPU 百分比对进程排序 m:按内存百分比对进程排序 p:按进程名字母顺序对进程排序 i:按读写频率(I/O)对进程排序 d:显示/隐藏磁盘 I/O 统计信息 f:显示/隐藏文件系统统计信息 n:显示/隐藏网络接口统计信息 s:显示/隐藏传感器统计信息 y:显示/隐藏硬盘温度统计信息 l:显示/隐藏日志(log) b:切换网络 I/O 单位(Bytes/bits) w:删除警告日志 x:删除警告和严重日志 1:切换全局 CPU 使用情况和每个 CPU 的使用情况 h:显示/隐藏这个帮助画面 t:以组合形式浏览网络 I/O u:以累计形式浏览网络 I/O q:退出(‘ESC‘ 和 ‘Ctrl&C‘ 也可以)