分类标签归档:go

公司证书过期时间扫描(golang)


公司证书过期时间扫描(golang)

// 将公司所有A记录域名解析导出

// 将域名拼接为https://+域名

//设置超时时间,并发扫描域名

//无响应,不正确域名直接抛弃

//打印所有有结果域名过期信息

package main

import (
    "bufio"
    "context"
    "fmt"
    "io"
    "log"
    "net/http"
    "os"
    "strings"
    "sync"
    "time"
)

type Cert struct {
    Name string //域名
    Startt...

Read more

容器状态监控


容器状态监控

根据实际需要写了两版监控容器状态的golang程序。

//容器状态监控
//报警发送企业微信webhook
//每一分钟获取一次容器运行状态
//包括一分钟内容器是否重启,包括启动容器名称,主机ip,外网IP,启动时间,获取启动前三分钟日志的方法(并没有实际执行)
//获取一分钟内已经关机的容器,获取包括容器的名称,外网IP,关机时间
//获取当容器超过指定大小后的,提醒功能

方式一

package main

import (
    "context"
    "encoding/json"
    "fmt"
    "github.com/docker/docker...

Read more

Golang 之SSH理解


以前写过Golang通过SSH执行交换机操作,但是对于证书认证这一块没有深究。这次通过读gopkg文件,理解更深了一步。

代码案例

package main

import (
    "bytes"
    "fmt"
    "golang.org/x/crypto/ssh"
    "io/ioutil"
    "log"
)

func main() {
    //hnowhost文件对应/root/.ssh/known_hosts。
    var knowhost = []byte("192.168.14.137 ecdsa-sha2-nistp256 AAAAE2VjZ...

Read more

Golang之Protobuf格式定义和代码生成


1.Protobuf格式定义(首部)

  • protobuf代码说明

addresssbook.proto

syntax = "proto3";  //指定proto为版本3
  package tutorial;  //包命名,确保不同项目的包名不冲突,导入其他proto文件会用到。

  import "google/protobuf/timestamp.proto";
  //导入其他目录下的proto包,个人理解这里的导入包的位置,为指定源目录的相对位置,即protoc -I=$SRC-DIR目录位置,如果没有指定,则为当前执行命令目录。

  option go_package ...

Read more

以注册mysql驱动举例init()函数的注册行为(golang)


​ Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用database/sql包时必须注入(至少)一个数据库驱动。

​ 但是import _ "github.com/go-sql-driver/mysql" 的意义不是很好理解。

​ 为此,我通过自己写的三个简单程序,演示init()的注册行为。

代码的目录组织结构如下:

awesomeProject/talkischeap/main.go  //主函数
awesomeProject/talkischeap/showmecode/main...

Read more

Golang通过SSH执行交换机操作


Golang通过SSH执行交换机操作

​ 简单实现通过输入指令,两步执行交换机命令。

  • 输入执行换机的账号和密码。可以一次输入多个账号和密码,为了方便操作,规定了输入格式。如 用户名;主机IP;密码|用户名;主机IP;密码。举例admin;192.168.56.10;h3csw1|admin;192.168.56.11;h3csw2
  • 输入要执行的命令,以;分割。例如system-view;dis cu;

​ 存在问题:

  • 不够灵活。输入方式限制太死,输入特别字符也可能存在错误。
  • 过于简陋。
  • 功能简单。

​ 不过我的目的已经达到,我主要是了解ssh的...

Read more

Golang使用selenium操作Chrome


Golang使用selenium操作Chrome

1.需求

解决自动化登录的问题,顺便可以解决爬虫问题。

2.基本概念

selenium:  Selenium 是一个用于 Web 应用程序测试的工具,Selenium 测试直接自动运行在浏览器中,就像真正的用户在手工操作一样。

    webdriver:   chromeDriver是谷歌为网站开发人员提供的自动化测试工具。

    selenium和webdriver其实原来是两个不同的开源项目,后来selenium2就把selenium1(RC)和webdriver合并到一起,还是用selenium的名字,但是实现方式和协议基本...

Read more

Windows下Go程序添加图标


Windows下Go程序添加图标

​ 计划使用go语言编译一系列实用工具,提高自己的工作效率。发现编译后的.exe文件没有图标,甚是难看,所以找了windows平台下添加Go程序图标的方法。

1. 查找ico图标

​ 查找一个符合程序气质的图标,下载备用。

​ ico链图标下载: easyicon

2.生成syso文件

​ rsrc是在Windows的Go程序中嵌入.ico和manifest资源的工具。

2.1 下载安装rsrc
go get github.com/akavel/rsrc
2.2 生成程序描述文件ico.manifest...

Read more

K8S : Helm 部署 ELK 7.6


K8S : Helm 部署 ELK 7.6

场景

​ 在 K8S 上部署有状态应用 ELK,收集日常测试数据的上报(应用拨测的 Heartbeat、调用链追踪的 APM、性能指标 metabeat 等)。本文通过rook提供底层存储,用于安装elk的statefulset,然后部署MetalLB实现本地负载均衡,最后通过ingress-control实现访问kibana。

操作步骤

  • 1.安装rook
  • 2.安装helm
  • 3.安装ES
  • 4.安装kibana
  • 5.安装filebeat
  • 6.安装metalLB
  • 7.安装Ingress-control
  • 8.访问测试

1.安装rook...

Read more

golang 堆排序


package main

import "fmt"

func main() { arr := []int{6, 1, 2, 7, 9, 3, 4, 5, 10, 8} heapSort(arr) fmt.Println("---") fmt.Println(arr) }

//堆排序 func heapSort(arr []int) { //求数组长度 //根据堆的规律,假设子节点的规律,假设子节点的坐标为i //左子节点坐标为2i+1,右子节点坐标为2i+2 //父节点的坐标为(i-1)/2. 此处可以计算无论最后一位数...

Read more