关于golang封装一个bash函数,用于执行bash命令


本文摘自php中文网,作者藏色散人,侵删。

下面由golang教程栏目给大家介绍关于golang封装一个bash函数,用于执行bash命令析,希望对需要的朋友有所帮助!

在go中封装一个bash函数,用于执行bash命令

1

2

3

4

5

6

7

8

9

10

11

package mainimport "os/exec"// 执行bash命令,返回输出以及执行后退出状态码func Bash(cmd string) (out string, exitcode int) {

    cmdobj := exec.Command("bash", "-c", cmd)

    output, err := cmdobj.CombinedOutput()

    if err != nil {

        // Get the exitcode of the output

        if ins, ok := err.(*exec.ExitError); ok {

            out = string(output)

            exitcode = ins.ExitCode()

            return out, exitcode        }

    }

    return string(output), 0}

执行

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

func main() {

    out, _ := utils.Bash("ifconfig")

    fmt.Println(out)}// 输出:lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384

        options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>

        inet 127.0.0.1 netmask 0xff000000

        inet6 ::1 prefixlen 128

        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1

        nd6 options=201<PERFORMNUD,DAD>gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280stf0: flags=0<> mtu 1280en5: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

        ether ac:de:48:00:11:22

        inet6 fe80::aede:48ff:fe00:1122%en5 prefixlen 64 scopeid 0x4

        nd6 options=201<PERFORMNUD,DAD>

        media: autoselect (100baseTX <full-duplex>)

        status: active

ap1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500

        options=400<CHANNEL_IO>

        ether b2:9c:4a:b7:0f:e6

        media: autoselect

        status: inactive

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

        options=400<CHANNEL_IO>

        ether 90:9c:4a:b7:0f:e6

        nd6 options=201<PERFORMNUD,DAD>

        media: autoselect (<unknown type>)

        status: inactive

awdl0: flags=8902<BROADCAST,PROMISC,SIMPLEX,MULTICAST> mtu 1500

        options=400<CHANNEL_IO>

        ether fa:96:0c:c0:b4:98

        nd6 options=201<PERFORMNUD,DAD>

        media: autoselect

        status: inactive

llw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

        options=400<CHANNEL_IO>

        ether fa:96:0c:c0:b4:98

        nd6 options=201<PERFORMNUD,DAD>

        media: autoselect

        status: inactive

en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500

        options=460<TSO4,TSO6,CHANNEL_IO>

        ether ee:48:05:91:d0:44

        media: autoselect <full-duplex>

        status: inactive

en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500

        options=460<TSO4,TSO6,CHANNEL_IO>

        ether ee:48:05:91:d0:45

        media: autoselect <full-duplex>

        status: inactive

en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500

        options=460<TSO4,TSO6,CHANNEL_IO>

        ether ee:48:05:91:d0:41

        media: autoselect <full-duplex>

        status: inactive

en4: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500

        options=460<TSO4,TSO6,CHANNEL_IO>

        ether ee:48:05:91:d0:40

        media: autoselect <full-duplex>

        status: inactive

bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

        options=63<RXCSUM,TXCSUM,TSO4,TSO6>

        ether ee:48:05:91:d0:44

        Configuration:

                id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0

                maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200

                root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0

                ipfilter disabled flags 0x0

        member: en1 flags=3<LEARNING,DISCOVER>

                ifmaxaddr 0 port 9 priority 0 path cost 0

        member: en2 flags=3<LEARNING,DISCOVER>

                ifmaxaddr 0 port 10 priority 0 path cost 0

        member: en3 flags=3<LEARNING,DISCOVER>

                ifmaxaddr 0 port 11 priority 0 path cost 0

        member: en4 flags=3<LEARNING,DISCOVER>

                ifmaxaddr 0 port 12 priority 0 path cost 0

        nd6 options=201<PERFORMNUD,DAD>

        media: <unknown type>

        status: inactive

utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380

        inet6 fe80::e60f:e004:7bd3:9732%utun0 prefixlen 64 scopeid 0xf

        nd6 options=201<PERFORMNUD,DAD>utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000

        inet6 fe80::62dc:7f46:6f6:b955%utun1 prefixlen 64 scopeid 0x10

        nd6 options=201<PERFORMNUD,DAD>en7: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

        options=6467<RXCSUM,TXCSUM,VLAN_MTU,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>

        ether 00:e0:4c:68:01:ea

        inet6 fe80::845:989:8b95:88e6%en7 prefixlen 64 secured scopeid 0xd

        inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255

        nd6 options=201<PERFORMNUD,DAD>

        media: autoselect (100baseTX <full-duplex>)

        status: active

utun2: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500

        inet 10.8.0.6 --> 10.8.0.5 netmask 0xffffffff

更多相关技术文章,请访问go语言教程栏目!

以上就是关于golang封装一个bash函数,用于执行bash命令的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

golang如何定义一个二维数组

分享go命名规范小记

手撸golang 基本数据结构与算法 链表

使用golang解析yaml

聊聊dubbo-go-proxy的client

go语言反射的使用

golang约瑟夫问题

使用gin封装一个web脚手架(八):限流器

源码读起来,go源码共读计划

golang-chan block 内存oom(线上问题)

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...