go语言入门-搞定cmd

go语言入门-搞定cmd

package main
import (
    "bufio"
    "fmt"
    "io"
    "os/exec"
    "regexp"
    "strconv"
    "strings"
)
func main() {
    command := "ping"
    params := []string{"-a", "127.0.0.1"}
    //执行cmd命令: ls -l
    execCommand(command, params)
    //    command := "ipconfig"
    //    params := []string{"/all"}
    //    //执行cmd命令: ls -l
    //    ip := getip(command, params)
    //    fmt.Println(ip)
    //    ip2 := IncIP(ip, 1)
    //    ip3 := IncIP(ip, 2)
    //    ip4 := IncIP(ip, 3)
    //    ip5 := IncIP(ip, 4)
    //    fmt.Println(ip2)
    //    fmt.Println(ip3)
    //    fmt.Println(ip4)
    //    fmt.Println(ip5)
}
func IncIP(ip string, n int) string {
    ips := strings.Split(ip, ".")
    ip3, error := strconv.Atoi(ips[3])
    if error != nil {
        fmt.Println("字符串转换成整数失败")
    }
    ip3 = ip3 + n
    ip3_d := strconv.Itoa(ip3) //数字变成字符串
    ip_new := ips[0] + "." + ips[1] + "." + ips[2] + "." + ip3_d
    //fmt.Println(ip_new)
    return ip_new
}
func execCommand(commandName string, params []string) bool {
    cmd := exec.Command(commandName, params...)
    //显示运行的命令
    fmt.Println(cmd.Args)
    stdout, err := cmd.StdoutPipe()
    if err != nil {
        fmt.Println(err)
        return false
    }
    cmd.Start()
    reader := bufio.NewReader(stdout)
    //实时循环读取输出流中的一行内容
    for {
        line, err2 := reader.ReadString('\n')
        if err2 != nil || io.EOF == err2 {
            break
        }
        //        enc := mahonia.NewDecoder("UTF-8")
        //        goStr := enc.ConvertString(line)
        fmt.Println(line)
    }
    cmd.Wait()
    return true
}
func getip(commandName string, params []string) string {
    cmd := exec.Command(commandName, params...)
    //显示运行的命令
    fmt.Println(cmd.Args)
    stdout, err := cmd.StdoutPipe()
    if err != nil {
        fmt.Println(err)
        return ""
    }
    cmd.Start()
    reader := bufio.NewReader(stdout)
    result := ""
    //实时循环读取输出流中的一行内容
    for {
        line, err2 := reader.ReadString('\n')
        if err2 != nil || io.EOF == err2 {
            break
        }
        //fmt.Println(line)
        reg := regexp.MustCompile("\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}") //六位连续的数字
        //返回str中第一个匹配reg的字符串
        data := reg.Find([]byte(line))
        if data != nil {
            result = string(data)
            //fmt.Println(result)
            break
        }
    }
    cmd.Wait()
    return result
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值