zoukankan      html  css  js  c++  java
  • 网络工具

    引用:

    https://www.cnblogs.com/ggjucheng/p/2316661.html

    https://blog.csdn.net/dongl890426/article/details/86981901

    linux工具快速教程:https://linuxtools-rst.readthedocs.io/zh_CN/latest/index.html#

    Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

    Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。

    Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

    一、执行netstat后的结果

    [root@sy-suz-srv51 ~]# netstat
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 k8sdev.sui:sun-sr-https k8sdev.suiyi.com.:34880 SYN_RECV
    tcp        0      0 k8sdev.suiyi.com.c:2379 10.1.62.21:47910        ESTABLISHED
    tcp        0      0 k8sdev.suiyi.com.c:2379 k8sdev.suiyi.com.:37790 ESTABLISHED
    tcp        0      0 sy-suz-srv:pcsync-https 10.1.62.162:49200       ESTABLISHED
    Active UNIX domain sockets (w/o servers)
    Proto RefCnt Flags       Type       State         I-Node   Path
    unix  3      [ ]         DGRAM                    18442    /run/systemd/notify
    unix  2      [ ]         DGRAM                    18444    /run/systemd/cgroups-agent
    unix  2      [ ]         DGRAM                    23822    /var/run/chrony/chronyd.sock
    unix  2      [ ]         DGRAM                    14151    /var/run/nscd/socket
    unix  2      [ ]         DGRAM                    584      /run/systemd/shutdownd
    unix  3      [ ]         STREAM     CONNECTED     124439388 /run/dbus/system_bus_socket
    unix  3      [ ]         STREAM     CONNECTED     42312    /run/systemd/journal/stdout
    unix  3      [ ]         STREAM     CONNECTED     39909
    netstat的输出结果可以分为两个部分
    Active Internet connections 有源TCP连接,其中"Recv-Q""Send-Q"指接收队列和发送队列。这些数字一般都应该是0。
      如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
    Active UNIX domain sockets 有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。 列名解释: Proto:显示连接使用的协议。 RefCnt:表示连接到本套接口上的进程号。 Types:显示套接口的类型。 State:显示套接口当前的状态。 Path:表示连接到套接口的其它进程使用的路径名。

    二、netstat常见参数

    -a (all) 显示所有选项,默认不显示LISTEN相关。
    -t (tcp) 仅显示tcp相关选项。
    -u (udp) 仅显示udp相关选项。
    -n 拒绝显示别名,能显示数字的全部转化成数字。
    -l 仅列出有在 Listen (监听) 的服务状态。

    -p 显示建立相关链接的程序名
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计
    -c 每隔一个固定时间,执行该netstat命令。

    LISTEN和LISTENING的状态只有用-a或者-l才能看到。

    三、常用netstat相关命令

    1、列出所有端口 #netstat -a

    2、列出所有 tcp 端口 #netstat -at

    3、列出所有 udp 端口 #netstat -au

    4、只显示监听端口 #netstat -l

    5、只列出所有监听 tcp 端口 #netstat -lt

    6、只列出所有监听 udp 端口 #netstat -lu

    7、列出所有监听 UNIX 端口 #netstat -lx

    8、显示所有端口的统计信息 #netstat -s

    9、显示 TCP 或 UDP 端口的统计信息 #netstat -st 或 -su

    10、 输出中显示 PID 和进程名称 #netstat -p

    11、netstat 输出中不显示主机,端口和用户名 (host, port or user)

    当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。

    同样可以加速输出,因为不用进行比对查询。

    #netstat -an

    如果只是不想让这三个名称中的一个被显示,使用以下命令

    # netsat -a --numeric-ports
    # netsat -a --numeric-hosts
    # netsat -a --numeric-users
    12、持续输出 netstat 信息  #netstat -c

    13、找出程序运行的端口 #netstat  -ap | grep ':80'

    14、查看连接某服务端口最多的的IP地址(前20个)

    #netstat -nat | grep "10.1.62.23:443" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
    15、TCP各种状态列表 

    #netstat -nat |awk '{print $6}'

    统计数量

    #netstat -nat |awk '{print $6}'|sort|uniq -c

    排序

    #netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn

    #netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

    16、直接统计tcp数量监听的数量

    #netstat -ant | wc -l

    四、实用命令实例

    1. 列出所有端口 (包括监听和未监听的)

      列出所有端口 netstat -a

    复制代码
    # netstat -a | more
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 localhost:30037 *:* LISTEN
    udp 0 0 *:bootpc *:*

    Active UNIX domain sockets (servers and established)
    Proto RefCnt Flags Type State I-Node Path
    unix 2 [ ACC ] STREAM LISTENING 6135 /tmp/.X11-unix/X0
    unix 2 [ ACC ] STREAM LISTENING 5140 /var/run/acpid.socket
    复制代码

      列出所有 tcp 端口 netstat -at

    复制代码
    # netstat -at
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 localhost:30037 *:* LISTEN
    tcp 0 0 localhost:ipp *:* LISTEN
    tcp 0 0 *:smtp *:* LISTEN
    tcp6 0 0 localhost:ipp [::]:* LISTEN
    复制代码

      列出所有 udp 端口 netstat -au

    # netstat -au
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    udp 0 0 *:bootpc *:*
    udp 0 0 *:49119 *:*
    udp 0 0 *:mdns *:*

    2. 列出所有处于监听状态的 Sockets

      只显示监听端口 netstat -l

    # netstat -l
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 localhost:ipp *:* LISTEN
    tcp6 0 0 localhost:ipp [::]:* LISTEN
    udp 0 0 *:49119 *:*

      只列出所有监听 tcp 端口 netstat -lt

    # netstat -lt
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 localhost:30037 *:* LISTEN
    tcp 0 0 *:smtp *:* LISTEN
    tcp6 0 0 localhost:ipp [::]:* LISTEN

      只列出所有监听 udp 端口 netstat -lu

    # netstat -lu
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    udp 0 0 *:49119 *:*
    udp 0 0 *:mdns *:*

      只列出所有监听 UNIX 端口 netstat -lx

    复制代码
    # netstat -lx
    Active UNIX domain sockets (only servers)
    Proto RefCnt Flags Type State I-Node Path
    unix 2 [ ACC ] STREAM LISTENING 6294 private/maildrop
    unix 2 [ ACC ] STREAM LISTENING 6203 public/cleanup
    unix 2 [ ACC ] STREAM LISTENING 6302 private/ifmail
    unix 2 [ ACC ] STREAM LISTENING 6306 private/bsmtp
    复制代码

    3. 显示每个协议的统计信息

      显示所有端口的统计信息 netstat -s

    复制代码
    # netstat -s
    Ip:
    11150 total packets received
    1 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    11149 incoming packets delivered
    11635 requests sent out
    Icmp:
    0 ICMP messages received
    0 input ICMP message failed.
    Tcp:
    582 active connections openings
    2 failed connection attempts
    25 connection resets received
    Udp:
    1183 packets received
    4 packets to unknown port received.
    .....
    复制代码

      显示 TCP 或 UDP 端口的统计信息 netstat -st 或 -su

    # netstat -st 
    # netstat -su

    4. 在 netstat 输出中显示 PID 和进程名称 netstat -p

    netstat -p 可以与其它开关一起使用,就可以添加 “PID/进程名称” 到 netstat 输出中,这样 debugging 的时候可以很方便的发现特定端口运行的程序。

    # netstat -pt
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 1 0 ramesh-laptop.loc:47212 192.168.185.75:www CLOSE_WAIT 2109/firefox
    tcp 0 0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox
    
    

    5. 在 netstat 输出中不显示主机,端口和用户名 (host, port or user)

    当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。

    同样可以加速输出,因为不用进行比对查询。

    # netstat -an

    如果只是不想让这三个名称中的一个被显示,使用以下命令

    # netsat -a --numeric-ports
    # netsat -a --numeric-hosts
    # netsat -a --numeric-users

    6. 持续输出 netstat 信息

    netstat 将每隔一秒输出网络信息。

    复制代码
    # netstat -c
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 ramesh-laptop.loc:36130 101-101-181-225.ama:www ESTABLISHED
    tcp 1 1 ramesh-laptop.loc:52564 101.11.169.230:www CLOSING
    tcp 0 0 ramesh-laptop.loc:43758 server-101-101-43-2:www ESTABLISHED
    tcp 1 1 ramesh-laptop.loc:42367 101.101.34.101:www CLOSING
    ^C
    复制代码

    7. 显示系统不支持的地址族 (Address Families)

    netstat --verbose

    在输出的末尾,会有如下的信息

    netstat: no support for `AF IPX' on this system.
    netstat: no support for `AF AX25' on this system.
    netstat: no support for `AF X25' on this system.
    netstat: no support for `AF NETROM' on this system.

    8. 显示核心路由信息 netstat -r

    # netstat -r
    Kernel IP routing table
    Destination Gateway Genmask Flags MSS Window irtt Iface
    192.168.1.0 * 255.255.255.0 U 0 0 0 eth2
    link-local * 255.255.0.0 U 0 0 0 eth2
    default 192.168.1.1 0.0.0.0 UG 0 0 0 eth2

    注意: 使用 netstat -rn 显示数字格式,不查询主机名称。

    9. 找出程序运行的端口

    并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。

    # netstat -ap | grep ssh
    tcp 1 0 dev-db:ssh 101.174.100.22:39213 CLOSE_WAIT -
    tcp 1 0 dev-db:ssh 101.174.100.22:57643 CLOSE_WAIT -

      找出运行在指定端口的进程

    # netstat -an | grep ':80'

    10. 显示网络接口列表

    # netstat -i
    Kernel Interface table
    Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
    eth0 1500 0 0 0 0 0 0 0 0 0 BMU
    eth2 1500 0 26196 0 0 0 26883 6 0 0 BMRU
    lo 16436 0 4 0 0 0 4 0 0 0 LRU

    显示详细信息,像是 ifconfig 使用 netstat -ie:

    复制代码
    # netstat -ie
    Kernel Interface table
    eth0 Link encap:Ethernet HWaddr 00:10:40:11:11:11
    UP BROADCAST MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
    Memory:f6ae0000-f6b00000
    复制代码

    11. IP和TCP分析

      查看连接某服务端口最多的的IP地址

    复制代码
    wss8848@ubuntu:~$ netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
    18 221.136.168.36
    3 154.74.45.242
    2 78.173.31.236
    2 62.183.207.98
    2 192.168.1.14
    2 182.48.111.215
    2 124.193.219.34
    2 119.145.41.2
    2 114.255.41.30
    1 75.102.11.99
    复制代码

      TCP各种状态列表

    复制代码
    wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'
    established)
    Foreign
    LISTEN
    TIME_WAIT
    ESTABLISHED
    TIME_WAIT
    SYN_SENT
    复制代码
      先把状态全都取出来,然后使用uniq -c统计,之后再进行排序。
    复制代码
    wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'|sort|uniq -c
    143 ESTABLISHED
    1 FIN_WAIT1
    1 Foreign
    1 LAST_ACK
    36 LISTEN
    6 SYN_SENT
    113 TIME_WAIT
    1 established)
    复制代码
      最后的命令如下:
    netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
    分析access.log获得访问前10位的ip地址
    awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10

    12、端口

    1、使用netstat工具查询端口
        $netstat -antp | grep 6379
        tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      25501/redis-server    
        $ps 25501
          PID TTY      STAT   TIME COMMAND
        25501 ?        Ssl   28:21 ./redis-server ./redis.conf
        
    lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,
    通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等; 在查询网络端口时,经常会用到这个工具。 2、查询7902端口现在运行什么程序:: #分为两步 #第一步,查询使用该端口的进程的PID; $lsof
    -i:7902 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME WSL 30294 tuapp 4u IPv4 447684086 TCP 10.6.50.37:tnos-dp (LISTEN) #查到30294 #使用ps工具查询进程详情: $ps -fe | grep 30294 tdev5 30294 26160 0 Sep10 ? 01:10:50 tdesl -k 43476 root 22781 22698 0 00:54 pts/20 00:00:00 grep 11554

    13、网络工具

    1、网络路由
    查看路由状态::
        $route -n
    发送ping包到地址IP::
        $ping IP
    探测前往地址IP的路由路径::    
        $traceroute IP
    DNS查询,寻找域名domain对应的IP::
        $host domain
    反向DNS查询::
        $host IP
    
    2、镜像下载
    直接下载文件或者网页::    
        wget url
    常用选项:
      --limit-rate :下载限速
      -o:指定日志文件;输出都写入日志;
      -c:断点续传
    
    3、ftp sftp lftp ssh
    
    SSH登录
        $ssh ID@host
    ssh登录远程服务器host,ID为用户名。
    
    ftp/sftp文件传输
        $sftp ID@host
    
    登录服务器host,ID为用户名。sftp登录后,可以使用下面的命令进一步操作:
    - get filename    # 下载文件
    - put filename    # 上传文件
    - ls              # 列出host上当前路径的所有文件
    - cd              # 在host上更改当前路径
    - lls             # 列出本地主机上当前路径的所有文件
    - lcd             # 在本地主机更改当前路径
    
    lftp同步文件夹(类似rsync工具)::
    
        lftp -u user:pass host
        lftp user@host:~> mirror -n
        
    5、网络复制
    将本地localpath指向的文件上传到远程主机的path路径::
    
        $scp localpath ID@host:path
    
    以ssh协议,遍历下载path路径下的整个文件系统,到本地的localpath::
    
        $scp -r ID@site:path localpath
  • 相关阅读:
    每日一篇文献:Robotic pick-and-place of novel objects in clutter with multi-affordance grasping and cross-domain image matching
    每日一篇文献:Intuitive Bare-Hand Teleoperation of a Robotic Manipulator Using Virtual Reality and Leap Motion
    每日一篇文献:Virtual Kinesthetic Teaching for Bimanual Telemanipulation
    HEBI Robotic Arm VR Teleoperation
    「iQuotient Case」AR device teleoperated robotic arm
    VR and Digital Twin Based Teleoperation of Robotic Arm
    HEBI Robotic Arm VR Teleoperation
    Human Robot Interaction
    Immersive Teleoperation Project
    机器人演示学习
  • 原文地址:https://www.cnblogs.com/ggzhangxiaochao/p/13389829.html
Copyright © 2011-2022 走看看