Loading... # go代码 ``` package main import ( "bufio" "fmt" "os" "regexp" "strings" ) func main() { scanner := bufio.NewScanner(os.Stdin) // 定义MAC地址的正则表达式 macRegex := regexp.MustCompile(`(?i)(?:[0-9A-F]{2}[:-]){5}[0-9A-F]{2}`) for scanner.Scan() { line := scanner.Text() words := strings.Fields(line) var result []string for _, word := range words { if macRegex.MatchString(word) { mac := strings.ReplaceAll(word, ":", "-") mac = strings.ToUpper(mac) if len(mac) >= 8 { mac = mac[:8] } else { result = append(result, fmt.Sprintf("%s (Unknown)", word)) continue } file, err := os.Open("oui.txt") if err != nil { fmt.Println("Error opening file:", err) os.Exit(1) } defer file.Close() fileScanner := bufio.NewScanner(file) var organization string for fileScanner.Scan() { fileLine := fileScanner.Text() if strings.Contains(fileLine, mac) && strings.Contains(fileLine, "(hex)") { organization = strings.TrimSpace(strings.Split(fileLine, "(hex)")[1]) break } } if err := fileScanner.Err(); err != nil { fmt.Println("Error reading file:", err) os.Exit(1) } if organization != "" { result = append(result, fmt.Sprintf("%s (%s)", word, organization)) } else { result = append(result, fmt.Sprintf("%s (Unknown)", word)) } } else { result = append(result, word) } } fmt.Println(strings.Join(result, " ")) } if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "Error reading standard input:", err) os.Exit(1) } } ``` # 编译脚本 ``` #!/bin/bash export GOROOT=/usr/local/go export GOPATH=/opt/go/ export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 定义目标操作系统和架构 targets=( "darwin/amd64" "darwin/arm64" "linux/386" "linux/amd64" "linux/arm" "linux/arm64" "windows/386" "windows/amd64" ) # 获取Go文件名 go_file=$(ls *.go) binary_name="${go_file%.*}" # 编译目标文件 for target in "${targets[@]}"; do os_name=${target%/*} arch_name=${target#*/} output_name="${binary_name}_${os_name}_${arch_name}" if [ "$os_name" == "windows" ]; then output_name="${output_name}.exe" fi if [ "$os_name" == "linux" ]; then #env GOOS=$os_name GOARCH=$arch_name go build -ldflags "-linkmode external -extldflags '-static'" -o $output_name $go_file env GOOS=$os_name GOARCH=$arch_name go build -o $output_name $go_file else env GOOS=$os_name GOARCH=$arch_name go build -o $output_name $go_file fi if [ $? -eq 0 ]; then echo "Successfully built $output_name" else echo "Failed to build $output_name" fi done ``` ``` go mod init changshang go get -u ./build_all.sh ``` # 运行方式 ``` cat xxx.log | changshang tail -fn 40 xxx.log | changshang echo 11:11:11:11:11:11 | changshang ``` # 下载 https://d2.sddts.cn/download/jingan/changshang # 测试 最后修改:2024 年 06 月 05 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏