宝藏命令行工具整理
文章目录
- 1. 写在最前面
- 2. 命令行工具
- 2.1 nc
- 2.1.1 使用场景
- 2.1.2 命令行介绍
- 2.2 pstree
- 2.2.1 使用场景
- 2.2.2 查找镜像的演示
- 2.2.3 命令行介绍
- 2.3 python3 -m http.server
- 2.3.1 使用场景
- 2.3.2 命令行介绍
- 3. 碎碎念
- 4. 参考资料
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