• 网络相关linux指令等储备


    1.ping和telnet

    1. todo:ping一个网段
    2. ping和telnet
      1. ping + ip: 查看某一个ip地址是否能够连通,如: ping 114.80.67.193
      2. telnet ip port : 查看某一个机器上的某一个端口是否可以访问,如:telnet 114.80.67.193 8080
      3. ping 常用指令:
        1. -i: 每次执行ping操作的间隔时间, 默认是1s;
        2. -c: 执行ping操作的次数, 默认是一直执行, 除非被中断;

        3. -s: 指定执行ping操作时发送的包的大小, 默认是56B, 添加报文头之后, 最终发送的是64B.

        4. 使用示例
          # 在终端 ping 某个地址, 执行3次, 每次间隔2秒, 每次发送10KB的数据:
          [root@localhost ~]# ping -c 3 -i 2 -s 10240 172.16.22.132

           

    3. ping 输出格式

      输出格式:

       下图为简单的ping产生的响应内容,图中返回内容具体的含义如下:

      • ① ping目标主机的域名和IP(ping会自动将域名转换为IP)
      • ② 不带包头的包大小和带包头的包大小(参考“-s”参数)
      • ③ icmp_seq:ping序列,从1开始;
      •   ttl:剩余的ttl;
      •   time: 响应时间,数值越小,联通速度越快;
      • ④ 发出去的包数,返回的包数,丢包率,耗费时间;
      • ⑤ 最小/最大/平均响应时间和本机硬件耗费时间;
    4.  NR(Number of Record):行号,当前处理的文本行的行号。
    5.  FNR:各文件分别计数的行号\.注意:grep的--line-buffered选项和awk的fflush(stdout)命令可以使得grep和awk不缓存数据。不然文件不会有信息

      #!/usr/bin/sh
      
      # ping -c -c: 执行ping操作的次数, 默认是一直执行, 除非被中断,86400次, 默认间隔1秒, 也就是24小时;-s 指定执行ping操作时发送的包的大小, 默认是56B
      ping -c 5 -s 20240 10.157.22.230 | gawk -F '[ ,=]' '$10>0.5''{print NR "\t"  $5 "=" $6,$9"="$10,$11 "\t" strftime("%D_%H:%M:%S",systime())}' > logs/overReponseTime.txt 
      
    6. sh -x pingOverTime.sh
    7. # 输出包含 "re" 的行 $ awk '/re/ ' log.txt
      ls -l *.txt | awk '{sum+=$5} END {print sum}'
      awk 'BEGIN{FS=","} {print $1,$2}'     log.txt
      awk 'BEGIN{FS=","} {print $1,$2}END {print sum}'     log.txt
      1. awk
      2. 'BEGIN {print "统计销售金额";total=0} # 输出提示语"统计销售金额",并设置total变量为0
      3. {print $3;total=total+$3;} # 逐行扫描文件
      4. END {print "销售金额总计",total}' file.txt # 在扫描文件之后执行,打印total变量
    8. 通过脚本记录时间戳

      1. 很多时候, 我们除了监控网络时延的大小, 还想知道网络发生抖动时的具体时间 —— 可以将 ping 的结果通过管道进行处理.为了方便后期查看, 也防止退出终端时命令被中断, 我们可以通过后台运行命令(脚本)的方式进行操作.

        脚本内容如下

        #!/usr/bin/sh
        
        # ping 86400次, 默认间隔1秒, 也就是24小时
        ping -c 10 -s 10240 10.157.22.230 | awk '{ print $0"\t" strftime("%D_%H:%M:%S",systime()) }' > ping_result.log

      2. 为防止脚本被中断, 可以通过 nohup 令脚本在后台执行:nohup sh long_ping.sh &

      3. 要结束后台进程, 可通过下述方式查找并kill: ps aux | grep  long_ping.sh ps -ef |grep long.sh
         

        1. 格式化时间 systime( [format specification][,timestamp] 
           awk '{now=strftime("%D",systime());print now}'

    2.Linux awk 命令

    1. awk '条件1 {动作 1} 条件 2 {动作 2} …' 文件名
    2. FS:指定每行文本的字段分隔符,默认为空格或制表位。 与-F一样
      NF:当前处理的行的字段个数。
      NR:当前处理的行的行号(序数)。
      $0:当前处理的行的整行内容。——cat /etc/passwd | awk '{print}'  #输出所有内容  或者  '{print $0}'
      $n:当前处理行的第 n 个字段(第 n 列)。
      FILENAME:被处理的文件名。
      RS:数据记录分隔,默认为\n,即每行为一条记录。
       
    3. awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号

    4. awk -F  #-F相当于内置变量FS, 指定分割字符
      
      2 this is a test
      3 Do you like awk
      This's a test
      10 There are orange,apple,mongo

       

    5. awk -v  # 设置变量

       

    6. awk -f {awk脚本} {文件名}  ——>awk -f cal.awk log.txt
      1.  

       

       

    7. 使用正则,字符串匹配.

      1. ~ 表示模式开始。// 中是模式。

        # 输出包含 "re" 的行
        $ awk '/re/ ' log.txt
        ---------------------------------------------
        3 Do you like awk
        10 There are orange,apple,mongo
        # 输出第二列包含 "th",并打印第二列与第四列
        $ awk '$2 ~ /th/ {print $2,$4}' log.txt
        ---------------------------------------------
        this a
      2. 忽略大小写

        $ awk 'BEGIN{IGNORECASE=1} /this/' log.txt
        ---------------------------------------------
        2 this is a test
        This's a test

      3. 模式取反

        $ awk '$2 !~ /th/ {print $2,$4}' log.txt
        ---------------------------------------------
        Are like
        a
        There orange,apple,mongo
        $ awk '!/th/ {print $2,$4}' log.txt
        ---------------------------------------------
        Are like
        a
        There orange,apple,mongo
    8. awk脚本

      关于 awk 脚本,我们需要注意两个关键词 BEGIN 和 END。

      • BEGIN{ 这里面放的是执行前的语句 }
      • END {这里面放的是处理完所有的行后要执行的语句 }
      • {这里面放的是处理每一行时要执行的语句}
    9. 解释一下变量:

      变量:分为内置变量和自定义变量;输入分隔符FS和输出分隔符OFS都属于内置变量。

      内置变量就是awk预定义好的、内置在awk内部的变量,而自定义变量就是用户定义的变量。

      •  FS(Field Separator):输入字段分隔符, 默认为空白字符
      •  OFS(Out of Field Separator):输出字段分隔符, 默认为空白字符
      •  RS(Record Separator):输入记录分隔符(输入换行符), 指定输入时的换行符
      •  ORS(Output Record Separate):输出记录分隔符(输出换行符),输出时用指定符号代替换行符
      •  NF(Number for Field):当前行的字段的个数(即当前行被分割成了几列)
      •  NR(Number of Record):行号,当前处理的文本行的行号。
      •  FNR:各文件分别计数的行号
      •  ARGC:命令行参数的个数
      •  ARGV:数组,保存的是命令行所给定的各参数

      自定义变量的方法

      •  方法一:-v varname=value ,变量名区分字符大小写。
      •  方法二:在program中直接定义。
    10. cat /etc/passwd | awk -F ":" '{print $1,$3,$4}'

    #以":"为分隔符,输出1,3,4列内容

    3. 脚本备注

    1. 能ping通过

      $ping -c 5 -s 20240 10.157.22.230
      PING 10.157.22.230 (10.157.22.230) 20240(20268) bytes of data.
      20248 bytes from 10.157.22.230: icmp_seq=1 ttl=63 time=1.87 ms
      20248 bytes from 10.157.22.230: icmp_seq=2 ttl=63 time=0.495 ms
      20248 bytes from 10.157.22.230: icmp_seq=3 ttl=63 time=0.500 ms
      20248 bytes from 10.157.22.230: icmp_seq=4 ttl=63 time=0.507 ms
      20248 bytes from 10.157.22.230: icmp_seq=5 ttl=63 time=0.453 ms
      
      --- 10.157.22.230 ping statistics ---
      5 packets transmitted, 5 received, 0% packet loss, time 4002ms
      rtt min/avg/max/mdev = 0.453/0.765/1.872/0.554 ms

    2. 不能ping,丢包

      $ping -c 5 -s 1240 172.16.22.132
      PING 172.16.22.132 (172.16.22.132) 1240(1268) bytes of data.
      
      --- 172.16.22.132 ping statistics ---
      5 packets transmitted, 0 received, 100% packet loss, time 3999ms

    3. 等等

    5.ping和ICMP (得再看看,不太明白)

    计算机网络——ping命令过程的详解、原理_欢喜躲在眉梢里的博客-CSDN博客_ping过程详解

    ping是基于ICMP协议工作的。ICMP全称是Internet Control Message Protocol,就是互联网控制报文协议。
    控制主要指的是?
    网络包在异常复杂的网络环境中传输时,常常会遇到各种问题。遇到问题时,不能死的不明不白,所以需要传出消息来报告情况,这样才能调整传输策略。类比古代行军中,将军要通过侦察兵掌握情况,控制全局。
    ICMP 是封装在IP包里面的。因为传输指令的时候,需要源地址和目标地址
    在这里插入图片描述
    ICMP报文有很多类型,不同的类型有不同的代码。最常用的类型是主动请求为8,主动请求的应答为0。

    查询报文类型

    ICMP查询报文类型和主动应答的ICMP协议。ping 包比如原生的ICMP,多了两个字段,一个是标识符,用于标识功能的。一个是序号,统计回来数目的。

    差错报文类型

    • 终点不可达。 网络不可达为0,主机不可达为1,协议不可达为2,端口不可达为3,需要进行分片单设置了不分片位代码为4。
    • 源站抑制。也就是让源站放慢发送速度。
    • 时间超时。超过网络包的生存时间还没到
    • 路由重定向。下次发给另外一个路由器。

    查询报文类型的使用

    在这里插入图片描述

    差错报文类型的使用

    Traceroute的第一个作用就是故意设置特殊的TTL,来追踪去往目的地时沿途经过的路由器。
    Traceroute故意设置不分片,来确定路径的MTU。

    小结

    • ICMP相当于网络世界的侦察兵,两种类型的ICMP报文,一种是主动探查的查询报文,一种是异常报告的差错报文。
    • ping使用查询报文,Traceroute使用差错报文。

    6. postman 授权

    Postman之授权( Authorization)_51CTO博客_postman authorization

    7.启多个服务端口 ——脚本 or Iperf

    一个ip本就对应6w多个端口可供使用,但是端口的作用是辅助定位某个应用程序,也就是说,如果你一台服务器并未开启任何服务,那么你的所有端口都属于未使用状态,比如你开启一个nginx服务,监听80端口,并部署了一个网站,别人可以通过你的ip+端口访问你nginx上面部署的网站,通过ip确定是哪台设备,通过端口确定设备上的某个服务进程而已。

    1. 脚本 , eg:[工具] Shell 批量对多个 IP 地址开发多个端口策略 (firewalld 版) – Eternal Center
      1. 脚本
        #!/bin/bash
        
        ####################### Separator ########################
        
        ips="192.168.2.1 192.168.1.0/24"
        ports"22 3306 8080-8090"
        
        ####################### Separator ########################
        
        systemctl start firewalld
        systemctl enable firewalld
        
        for i in $ips
        do
                for j in $ports
                do
                        firewall-cmd --add-rich-rule="rule family="ipv4" source address="$i" port protocol="tcp" port="$j" accept" --permanent
                done
                echo $i done
                echo
        done
        
        firewall-cmd --reload

    2. Iperf:GP智能网卡验证

    2.Iperf(需要安装)

    是一个网络性能 测试工具。可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽,延迟抖动和数据包丢失。

    (这里先不说怎么发包、带宽测试等带宽测试工具iperf3使用方法详解_逸趣,只说启服务端口)

    eg:

    1. 环境假设:

      假设两台云服务器A(内)和B(外),我们通过笔记本电脑终端分别ssh远程连接上云服务器A和B。

      A(内)IP地址:10.10.0.1

      B(外)IP地址:10.10.0.2

    2. 先让B(外)做server端,开启iperf服务器模式,指定TCP端口1314:#iperf3 -s -p 1314
    3. 然后打开A(内)做client端,连接服务器端1314端口:#iperf3 -c 10.10.0.2  -p 1314

    参数说明

    -s             以server模式启动,eg:iperf -s 

    -c host    以client模式启动,host是server端地址,eg:iperf -c 222.35.11.23

    通用参数 

    -f [k|m|K|M] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K 

    -i sec 以秒为单位显示报告间隔,eg:iperf -c 222.35.11.23 -i 2

    -l 缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16 -m 显示tcp最大mtu值 

    -o 将报告和错误信息输出到文件eg:iperf -c 222.35.11.23 -o c:\iperflog.txt 

    -p 指定服务器端使用的端口或客户端所连接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999 

    -u 使用udp协议 

    -w 指定TCP窗口大小,默认是8KB 

    -B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)

    -C 兼容旧版本(当server端和client端版本不一样时使用)

    -M 设定TCP数据包的最大mtu值

    -N 设定TCP不延时

    -V 传输ipv6数据包   server专用参数 

    -D 以服务方式运行ipserf,eg:iperf -s -D -R 停止iperf服务,针对-D,eg:iperf -s -R  

    client端专用参数 

    -d 同时进行双向传输测试 

    -n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000

    -r 单独进行双向传输测试 

    -t 测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5

    -F 指定需要传输的文件

    -T 指定ttl值 

    8.ping 、telnet、tcping

    1. ping 命令只能检查 IP 的连通性或网络连接速度,无法具体到某个端口。
      1. ping 命令使用 ICMP 协议,跟 IP 协议属于同一层次(网络层)。ping 命令在每次发数据包后都会等对方返回数据包。可以禁止 ICMP 协议,此时对方收到消息后不会回复。
      2. 端口是传输层 TCP/UDP 协议的概念,比如常用的 web 端口指的是 TCP 的 80 端口。使用网络层的 ping 命令是无法指定端口的。
      3. ping 不通,可能是服务器确实没有开放这个端口,或是禁 ping 了。
    2. telnet 命令使用 TCP 协议,一般用于远程登录(明文传输,不安全,已经被 SSH 替代了),也可以查看指定端口的连通性
      1. telnet ip2 port
    3. tcping 命令 tcping 命令使用 TCP 协议(传输层),也可以看 ping 值,即使源地址禁 ping 也可以通过 tcping 来监控服务器网络状态。 可以指定监控的端口。

      1.  tcping -t 59.46.9.195 3389: -t是连续ping服务器59.36.100.195的3389端口,去掉-t就只发送默认的4次tcp包。

    使用上来看tcping和telnet都可以用于,查看端口级别的连通情况

    tcping
    tcping:tcping命令基于tcp协议监控,可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从容硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

    tcping与ping的区别
    指代不同
    ①ping:1、ping:是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。通过ICMP协议发送报文到对方主机上任意一个60000以上的端口,然后获取对方主机的回复

    ②tcping:是一种面向连接的、可靠的、基于字节流的传输层通信协议。使用tcp协议尝试与某一个端口建立连接,然后获取与对方主机建立一次连接的回复

    功能不同
    ①.ping:利用“ping”命令可以检查网络是否连通,可以很好地帮助分析和判定网络故障。
    ②.tcping:适知应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成道对进程之间依靠TCP提供可靠的通信内服务。有些网络环境禁ping,想要知道网络或端口连通性,tcping就是很好的方法

    特点不同
    ①.ping:Ping发送一个ICMP即因特网信报控制协议;回声请求消息给目的地并报告是否收到所希望的ICMPecho
    ②.tcping:可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从容硬线连接到分组交换或电路交换网络的各种通信系统之上操作
     

  • 相关阅读:
    【管理运筹学】第 10 章 | 排队论(4,系统容量有限制和顾客源有限的情形)
    MPNN 模型:GNN 传递规则的实现
    搭建nacos集群 和 网关
    sql中如何添加数据
    【机器学习】PyTorch中 tensor.detach() 和 tensor.data 的区别
    5G注册流程详解
    音频编码格式介绍-AAC
    git stash 暂存当前修改
    openlayers wms/wmts 栅格图层点击点像元值查询
    SSM框架原理【超级详细】
  • 原文地址:https://blog.csdn.net/m0_37644085/article/details/127676834