新学的nc小技巧

最近遇到不少转发上的问题, 很大部分是因为一些不太常见的客户端请求. 正常的请求我们可以直接curl模拟, 但是有些异常的, 比如 某些header内容为空, 我们就很难模拟. 这时候可能就需要用上nc来模拟了. 当然它不仅仅可以用来模拟http请求. 下面介绍两个新学的 技巧. 模拟http请求发送 模拟一个POST请求. 直接使用指令nc 127.0.0.1 8080, 然后徒手敲命令;) 当然我们也可以提前把内容写到一个文本文件里面, 然后用管道传给nc # 发送request.txt中的内容到本地的8080端口 cat request.txt | nc 127.0.0.1 8080 这里还会有一个问题, 我希望nc发送完后等待一段时间再退出, 可以这么搞: # 发送request.txt中的内容到本地的8080端口, 并等待10秒 (cat request.txt; sleep 10) | nc 127.0.0.1 8080 这样我们就可以通过修改request.txt文件构造不同的request了. 自定义发送端口 一般应用发送数据的端口是由操作系统随机选择的, 但是有时候在debug的时候可能需要强制使用某个端口, 这时候可以用上nc的-p指令. 这个在排查四层转发问题的时候还是蛮好用的.

February 1, 2019 · akawhy

新学的bash小技巧

本周遇到不少线上的问题, 由于手生, 花了不少时间, 这里重新记录一下. 将多行合并成一行 之前经常用到的是用xargs. 通常是利用find找到对应的文件, 然后整成一行: find . | xargs. 不过这次是需要将对应的行使用逗号分隔, 这个用xargs就搞不定了, 需要使用paste: find . | paste -sd ',' - 比较两个文件, 找出在一个文件中而不在另一个文件中的行 很常见的一个需求, 但是花了不少时间. 答案是comm. 将两个排好序的文件comm一下会输出三列, 分别代表仅在第一文件中的, 两个文件都出现过的, 仅在第二个文件中的. 一般会通过-123参数来取消某列的输出, 达到需要的效果 ## 找出只在第一个文件中出现的 comm -23 file1 file2 打印文件的第n到m行 使用sed. 这个指令对我来说已经有点陌生了. ## 打印第二到第三行 ls -l | sed -n '2,3p;4q' 最后 工具长时间不用真的会生疏不少, 幸好搜索能力还在;) 还记得之前刚上手学Linux的时候, 各种指令各种学. 现在重新翻翻书架上的《Linux Shell 脚本攻略》还能收获不少

January 25, 2019 · akawhy