github.com/TaceyWong/ctools@v0.1.1-0.20201221084458-4d7a8190b2ac/utils/shtool.go (about)

     1  package utils
     2  
     3  import (
     4  	"bytes"
     5  	"errors"
     6  	"os/exec"
     7  	"regexp"
     8  )
     9  
    10  // ExecShellCMD 执行Sheel命令
    11  func ExecShellCMD(shellType, command string) (string, string, error) {
    12  	var stdout bytes.Buffer
    13  	var stderr bytes.Buffer
    14  	cmd := exec.Command(shellType, "-c", command)
    15  	cmd.Stdout = &stdout
    16  	cmd.Stderr = &stderr
    17  	err := cmd.Run()
    18  	return stdout.String(), stderr.String(), err
    19  }
    20  
    21  // RegexGetGroup 实现正则group功能
    22  func RegexGetGroup(compRegEx *regexp.Regexp, text string) (map[string]string, error) {
    23  	match := compRegEx.FindStringSubmatch(text)
    24  	groupMap := make(map[string]string)
    25  	err := errors.New("no match")
    26  	for i, name := range compRegEx.SubexpNames() {
    27  		if i > 0 && i <= len(match) {
    28  			groupMap[name] = match[i]
    29  			err = nil
    30  		}
    31  	}
    32  	return groupMap, err
    33  }