当前位置: 首页 > news >正文

宝藏命令行工具整理

1. 写在最前面

真的是一个人当成两个人用的一个月,在需求分析、开发、运维以及客户上线风险梳理所有工作的重心都在自己一个人身上的时候,真的恨不得一天有四十八个小时。虽然忙的没有时间整理之前感兴趣的流媒体协议以及 ffmpeg 工具,那就整理下最近学到的宝藏命令行工具吧。

意识到自己的无知,意识到应该努力,学习也是会像毒品一样上瘾的。

2. 命令行工具

2.1 nc

是一个端口扫描工具,也是一款安全工具,还是一款监测工具,甚至可以做为一个简单的 TCP 代理。

2.1.1 使用场景

笔者需要在开发机和测试环境之前传输用于调试的二进制文件。

  • 在目标机器上执行,目标机器的 IP 为 192.168.0.1

    sudo -l -p 2222 > demo.exe
    

    注:如果是新版本的 nc ,-p 参数可以省略

  • 在源机器上执行

    sudo -v 192.168.0.1 2222 < demo.exe
    

通过此种方式可以轻松的将本地调试的二进制文件传输至测试机器进行测试。(ps:不要问我为什么用这么复杂的方式,可能跟《水浒传》中好汉们被逼迫上梁山是一样的理由)

2.1.2 命令行介绍

使用场景中的命令行介绍:

  • -l : 将处于监听模式。指定该参数,则意味着 nc 被当作 server,可以向其地址发起连接。

  • -p :指定监听的端口号,新版本可以不用指定

  • -v :输出交互或者出错信息,可以用于调试

更复杂的功能介绍

笔者此处只用了,nc 比较皮毛的功能。实际上这个宝藏工具厉害着呢,但是本着自己学到才是自己的原则,此处仅仅列举出来,感兴趣的小伙伴,可以看参考链接继续学习。

  • 以 UDP server 的方式监听连接

  • 将 nc 作为聊天工具

  • 将 nc 作为代理

  • -w 设置连接超时

  • -k 强制 nc 待命

  • 通过 nc 创建后门

    注:There is no -c or -e option in this netcat, but you still can execute a command after connection being established by redirecting file descriptors.

    见 nc man 帮助主页

  • 通过 nc 进行端口转发

    此项不能用 -c 参数设置,在 server 端设置的方法

    rm -f /tmp/f; mkfifo /tmp/f

    $ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

    注:mkfifo 用于创建命名管道

2.2 pstree

用于查看进程树之间的关系。

注: ubuntu 默认没有安装 pstree ,安装方法 apt install psmisc

2.2.1 使用场景

在笔者所负责的服务中有一类比较特殊的调用方法,即 — 主的 docker 进程,会按需拉起需要提供服务的其他子进程。而在调试时,又需要找到主的 docker 进程,更新配置重启使之生效。

有个很困难的点是,这个主的 docker 进程,同一台物理机上会启动多个,很难找到提供服务的到底是哪个进程。

注:这段写的自己都觉得绕,写一个小栗子解释一下:

主进程 A1,子进程 B、C、D

主进程 A2,子进程 B、C、D

A1、A2 进程是通过 docker 的方式拉起的,现在需要找到启动该进程的 docker 镜像?

2.2.2 查找镜像的演示

  • ps -ef | grep ${任务 id} 根据任务 id ,查找启动任务的父进程
  • pstree -slag ${父进程号} 根据父进程查看启动父进程的 docker 镜像

在这里插入图片描述

2.2.3 命令行介绍

使用场景中的命令行介绍

  • -s :显示指定进程的父进程。
  • -l : 显示更详细数据。默认情况下,行被截断为环境变量或显示宽度。如果这两个方法都不起作用,则默认的使用了 132 列。
  • -a : 显示命令行参数。
  • -g : 显示 PGIDs。

其他参数介绍

其他更复杂参数的用户参照 man 帮助文档。

2.3 python3 -m http.server

http.server 模块用于搭建简易的 http 服务器。

2.3.1 使用场景

用于将线上产生的 pprof 文件下载到本地。

2.3.2 命令行介绍

python3 -m http.server --bind 127.0.0.1 -d  .
  • –bind : 指定绑定的网卡
  • -d :指定暴露的目录

3. 碎碎念

希望能够在忙碌的日子里,依然能发现生活中的小确幸。

  • 我们对年龄的恐惧 ,其实并不在于年龄增长所带来的苍老 。而是恐惧随着年龄的增长,我们仍然一无所得 。
  • 你不一定非得长成玫瑰,你乐意的话,做茉莉、做蔷薇、做无名小花,做千千万万。
  • 像你这样才华横溢的小朋友,就像汽水里的泡泡,能靠着自己的力量,慢慢升起,没有事情可以阻止你。

4. 参考资料

  • 一文让你熟练掌握Linux的ncat(nc)命令
  • arbitrary TCP and UDP connections and listens
  • pstree(1) — Linux manual page
  • Python 3 HTTP Server

相关文章:

  • 整页型网站/软文代发价格
  • 注册公司邮箱/seo外包公司一般费用是多少
  • wordpress用户如何删除文章/网站点击量查询
  • asp网站增加新栏目在哪添加/网络推广优化服务
  • 开网站做家政/徐州seo企业
  • seo搜索工具栏/windows优化大师怎么彻底删除
  • app逆向(10)| APP的加固与脱壳
  • 项目开发遇到的不同角色的矛盾问题,项目经理,产品经理,开发
  • Python实时获取steam游戏数据
  • RK3568平台开发系列讲解(Camera篇)Camera系统的结构
  • Flink / Scala - 18.KeyedState 简介与使用
  • 【Neo4j】第 12 章:Neo4j at Scale
  • 物联网开发笔记(25)- 使用Micropython开发ESP32开发板之控制LCD1602显示屏
  • MooseFS和Hadoop两个分布式文件系统各有什么优缺点?
  • 初识C++ - 类与对象(中篇·上半)
  • (附源码)计算机毕业设计高校学生宿舍管理信息系统
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • matlab梯形法求解微分方程和simulink对比