8 1 月, 2022
背景
我不是程序员,只是偶尔用Python写一些对个人有些帮助的小程序。之前了解过Go,朋友也一直在推荐Go,但一直没有深入研究过,自从面对下面几个事后,就萌生了想尝试一下的想法:
- 我想用Caddy搭一个简易HTTP Server,一般建议Docker部署,比较方便,但发现macOS如果需要支持Docker,需要装Docker虚拟机,光虚拟机就占了1.5g的内存。后来我去Caddy官网下载了支持ARM架构的Caddy,只有小40m左右,下载即可执行,不需要任何环境,此程序是用Go编译而成的,关于Caddy在macOS的使用,可以看这里;
- Java也是编译语言,可是要想执行,仍然需要Java虚拟机提供运行时环境;类比Python类似,是编译+解释语言,需要Python环境才能进行解释运行;
- 我需要对多个地址发送ICMP探测报文,Terminal其实挺好用的,只是为了多个地址,需要打开多个窗口,不是很灵活,为了CPU不影响ICMP报文,想找一款支持多核的Ping工具,但发现macOS不像Linux,没有Affinity和Taskset来给进程分配内核,最后找到一个用Go做的开源Ping软件,并支持多线程,但这个运行有些问题,需要排障;
此篇文章简单用实例总结Go的初体验,以及Go程序的排错方法,方便以后复习查阅。
机器环境
System: macOS Monterey 12.1
Arch: darwin/arm64
Go ver: 1.17.5
完整阅读
18 8 月, 2021
背景
之前总结过一些Trex的内容,如下所示,这篇文章主要介绍如何在GUI中的高级模式中创建报文,并变更特定项目,如原/目IP地址,TCP/UDP 原/目端口等,以及如何修复可变TCP/UDP端口号带来的Checksum不正确的问题;另外最后还会使用另一种方法来调用流量模型;
Limited
- 报文统计数据不能导出到Excel或CVS;
- IPv6包头不能通过Field Engine改变,但API支持;
- 如果想打IPv6的报文,需要在网络设备上绑定nd和mac的mapping关系;
Topology
拓扑同上一篇文章:
Trex-Server1 (100.0.0.1)------ (100.0.0.2)Router1 ---- network ----- Router2(100.1.1.2) ------ (100.1.1.1)Trex-Server2
Trex配置文件生成
Trex里有一个程序,可以自动生成配置文件,如下所示,Platform部分是设置内核分配的(如果不设置,默认只有一个core,性能有限),启动时指明需要几个内核,那么系统就会自动按照配置进行分配,如“./t-rex-64 -i -c 27”
完整阅读
16 8 月, 2021
详细内容可以查阅:TRex Advance stateful support
在之前的文章中,介绍过Trex Stateless Mode的简单使用方法,在这里介绍下ASTF模式是如何工作的,并且如何统计信息的;另外在这个例子中,主要是通过变更PCAP报文中的原和目的地址,并以Server/Client方式发送流量并统计;
Topology
Trex-Server1 (100.0.0.1)------ (100.0.0.2)Router1 ---- network ----- Router2(100.1.1.2) ------ (100.1.1.1)Trex-Server2
完整阅读
11 8 月, 2021
由于办公用的是自己的电脑,为了跟原有管理原账号分开,单独创建了一个办公账号,这样可以方便多场景使用,权限也被限制,但今天在尝试用brew安装软件时,会报下面的错误:
xxx@MacBook ~ % brew install wget
Error: /usr/local/Cellar is not writable. You should change the
ownership and permissions of /usr/local/Cellar back to your
user account:
sudo chown -R $(whoami) /usr/local/Cellar
Error: The following directories are not writable by your user:
按照提示的操作,没多大用处,最后报下面错误:
xxx@MacBook ~ % brew install gettext
==> Downloading https://homebrew.bintray.com/bottles/gettext-0.21.big_sur.bottle
#=#=-# #
curl: (22) The requested URL returned error: 403 Forbidden
Error: Failed to download resource "gettext"
执行下面命令后,恢复正常使用:
sudo chown -R $(whoami) $(brew --prefix)/*
16 7 月, 2021
在常规测试中,经常需要在测前、测后抓取大量信息留存,不同厂商命令又不一样,黏贴复制采集工作量巨大,效率又低,所以需要写一个自动化脚本帮助自动化采集。自动化脚本有很多种方法编写,这里主要使用简单易用的Python,由于使用的是SecureCRT,所以直接选择了Python与SecureCRT的组合自动化脚本,其实之前写过一些,不过此篇用到了多个Session;
- Python独立自动化脚本,可以参考之前的文章:
- Python 与SecureCRT组合的自动化脚本,可以参考之前的文章:
SecureCRT最开始支持VB脚本,后来逐步转到Python。官网也有很多example可以供参考,如果感兴趣可以参考:
https://www.vandyke.com/support/securecrt/python_examples.html
https://www.vandyke.com/support/tips/tabscripts.html
脚本功能
此自动化脚本可以复用,根据需求任意更改,简单上手;另外Juniper带“table”的命令会扰乱SecureCRT的脚本,更改后恢复正常,代码正文中的是最终版本,同时也去掉了等待时间;其实脚本还可以优化下,但为了简单点,就写了10多个函数;
- 指定路径并按照“日_时分”格式自动创建文件夹;
- SecureCRT自动登录14台路由设备,并开启记录log功能;
- 采集14台设备信息,自动保存log,以“年-月-日-时-分”命名log文件;
- 采集后自动关闭Session;
show route yyyyyyyy extensive table C-CT |no-more\r
完整阅读