package tools import ( "bufio" "log" "os" "strings" ) func HostsToJson() (data map[string][]string, err error) { f, err := os.Open(`/etc/ansible/hosts`) if err != nil { return nil, err } defer func() { if err = f.Close(); err != nil { log.Fatal(err) } }() data = make(map[string][]string) // 以这个文件为参数,创建一个 scanner s := bufio.NewScanner(f) var key string var per []string // 扫描每行文件,按行读取 for s.Scan() { if strings.HasPrefix(s.Text(), "[") && strings.HasSuffix(s.Text(), "]") { key = s.Text() per = []string{} data[key] = per } else { data[key] = append(data[key], s.Text()) } } err = s.Err() if err != nil { return nil, err } return data, nil }