美文网首页
【linux命令学习】— nc 命令学习

【linux命令学习】— nc 命令学习

作者: 疯狂的哈丘 | 来源:发表于2019-01-30 20:57 被阅读0次

    nc 全称netcat,使用nc可以直接监听某个端口,也可以往其他服务器的端口发送数据。

    Centos 上没有nc命令可以通过yum install -y nc来安装。其他发行版请读者自己百度如何安装。

    一、命令介绍

    1. 临时监听 tcp 端口

    # 监听8089端口
    # 只会开启一个连接,有连接进来就会立刻中断监听
    nc -l 8089
    

    2. 永久监听 tcp 端口

    # 监听8089端口
    # 会一直监听下去,除非用户中断程序
    nc -lk 8089
    

    3. 监听 udp 端口

    # 加上参数 u 表示是udp
    nc -lu 8089
    

    4. 连接某个端口

    # 连接8089端口,连接上后,可以开始输入消息,然后按回车发送
    nc 127.0.0.1 8089
    # 直接把 test.txt的内容发送过去
    nc 127.0.0.1 8089 < test.txt
    # 发送一串内容
    ehco "hello" | nc 127.0.0.1 8089
    # -v 表示连接时输出一些详细的连接信息
    nc -v 127.0.0.1 8089
    # -z 表示只是扫描端口,不发送任何数据
    nc -z 127.0.0.1 8089
    # -G 5 表示尝试连接该端口,超过5秒没连接上就判定超时
    nc -G 5 127.0.0.1 8089
    # -p 表示 以指定的端口去连接,下面指定用8888端口去连接目标端口
    nc -p 8888 127.0.0.1 8090
    # -s 表示以指定的 ip作为sourceIp去连接,该ip要是自己网卡的某个ip,不然会立刻返回
    nc -s 172.20.56.33 -p 8888 127.0.0.1 8090
    

    二、nc 实用小技巧

    1. 使用 nc 扫描端口

    # 扫描百度 8000-9000 区间的端口。加上-G是因为百度的端口如果不可用不会立即返回,而是阻塞在那里,所以带上超时条件
    nc -zv -G 1 www.baidu.com 8000-9000
    # nc 好像只能指定端口区间段,不过我们可以写个简单的shell脚本来实现指定扫描某些端口的功能
    # 下面的shell 脚本会依次扫描 80 443 8080 9000 端口
    ports=(80 443 8080 9000)
    for port in ${ports[@]}
    do
        nc -zv -G 1 www.baidu.com $port
    done
    

    2. 使用 nc 传输文件或者目录

    # 开启8090 端口监听,之后把接收到的内容输出到test.txt 文件中
    nc -l 8090 > test.txt
    # 另一边发送一个 send.txt 文件
    # 127.0.0.1 可以改成目标服务器的地址
    nc 127.0.0.1 8090 < send.txt
    

    使用 tar 来压缩数据,加快数据传输速度

    # 监听8090端口,收到数据后通过 tar 解压
    nc -l 8090 | tar xfvz -
    # 另一个服务器把要发送的内容通过tar压缩后发过来
    # * 可以是任何文件
    tar cfz - * | nc 127.0.0.1 9995
    # 甚至可以发送目录
    tar cfz - test/ | nc 127.0.0.1 9995
    

    相关文章

      网友评论

          本文标题:【linux命令学习】— nc 命令学习

          本文链接:https://www.haomeiwen.com/subject/kcfhsqtx.html