go 执行shell 命令

  • 搭建环境,运行dome
  • go执行shell命令
    • 一个demo
    • 文件操作
      • 解压文件
      • 打包文件
      • 文件内容替换

搭建环境,运行dome

安装go,设置path,go_path
参考文章:linux下GO的环境搭建及go代码程序编译示例
.bashrc写入

创建go项目
~/projects/goprj/test/src/packs# mkdir test
写入内容

package mainimport ("fmt"
)func main () {fmt.Println("aaaa")
}


编译:go install packs/test
运行:
进入bin文件 ./工程名称

go执行shell命令

一个demo

func main() {in := bytes.NewBuffer(nil)cmd := exec.Command("sh")cmd.Stdin = inin.WriteString("echo hello world > /home/aadmin/doc/res.txt\n")in.WriteString("exit\n")if err := cmd.Run();err != nil{fmt.Println("ERROR--> fail to write something to file, msg:"+err.Error())return}else{fmt.Println("SUCCESS--> the file is written something")}
}

执行shell封装

/*
Exec:执行命令
输入参数:执行命令*/
func Exec(command string) error {in := bytes.NewBuffer(nil)cmd := exec.Command("sh")cmd.Stdin = inin.WriteString(command)in.WriteString("exit\n")if err := cmd.Run();err != nil{return err}return nil
}

文件操作

解压文件

//"cd /mnt/hgfs/test && tar xf 1111tgz && rm -rf 1111.tgz\n"
cdPackStr := "cd /mnt/hgfs/test && tar xf 1111.tgz && rm -rf 1111.tgz\n"
in.WriteString(cdPackStr)

打包文件

packstr := "sleep 3 && tar cf 1111.tgz 1111 && rm -rf 1111\n"
in.WriteString(packstr)

为什么要sleep,我做的是修改打包文件的内容,首先要解压,然后进入文件去修改信息,修改完后打包。sleep就是让修改的命令全都执行了,再去执行打包命令。

文件内容替换

xml文件内容替换

//替换xml的文件内容 行,匹配内容 替换内容
//sed -i '1s/>.*</> aaa </' rest.txt
substr := fmt.Sprintf("sed -i '%ss/>.*</> %s </' %s\n",line,updatemsg,fileName)
in.WriteString(substr)
fmt.Print("执行命令:",substr)

yaml文件内容替换

//替换yaml的文件内容 行,匹配内容 替换内容
//sed -i '3s/".*"/"1111"/' rest.txt
substr = "sed -i '"+line+"s/"+`".*"/"`+updatemsg+`"/' `+fileName+"\n"
in.WriteString(substr)
fmt.Print("执行命令:",substr)

字段串里面有双引号,转义符,你想要让这些含有特殊意义的字符变成普通字符就用``,让他愣是啥都不会转义。

go 执行shell 命令相关推荐

  1. jenkins 插件执行shell命令时,提示“Command not found”处理方法

    首先提示找不到"Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具 ...

  2. linux c 执行shell命令并获取返回结果

    最近在项目中用到了C语言执行shell命令的问题,调查了一下,一般有system函数.exec族函数,但是还不太清楚怎么获取shell命令执行的返回信息. 例如执行一个ifconfig命令,肯定需要获 ...

  3. vim中执行shell命令小结

    vim中执行shell命令,有以下几种形式 1):!command 不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容 例如 :!ls - ...

  4. python调用shell命令-在Python中执行shell命令的6种方法,你都知道吗?

    原标题:在Python中执行shell命令的6种方法,你都知道吗? Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库.今天我们就讲解 ...

  5. python调用shell命令-python中执行shell命令的几个方法小结

    最近有个需求就是页面上执行shell命令,第一想到的就是os.system, 复制代码 代码如下: os.system('cat /proc/cpuinfo') 但是发现页面上打印的命令执行结果 0或 ...

  6. python 执行shell命令行效率提升_在python脚本中执行shell命令的方法

    使用Python处理一个shell命令或一个执行一个shell脚本,一般情况下,有以下三种方法,以下我们来看: 第一种方法是使用os.system的方法 os.system(" cmd&qu ...

  7. Android执行shell命令

    Android执行shell命令 一.方法 /** * 执行一个shell命令,并返回字符串值 * * @param cmd * 命令名称&参数组成的数组(例如:{"/system/ ...

  8. Python执行 shell 命令并实时打印输出

    from subprocess import Popen, PIPE, STDOUTdef exe_command(command):"""执行 shell 命令并实时打 ...

  9. java连接linux服务器执行shell命令(框架分析+推荐)

    java连接linux服务器执行shell命令(框架分析+推荐) 一.分类+连接方式 程序打成jar包,在本地服务器上执行shell命令.这种使用MyRuntimeUtil工具类 java程序远程li ...

  10. java 远程shell脚本_java通过ssh连接服务器执行shell命令详解及实例

    java通过ssh连接服务器执行shell命令详解 java通过ssh连接服务器执行shell命令:JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转 ...

最新文章

  1. HTTP缓存——304与200 from cache
  2. matlab中添加0向量,如何把在matlab中把a=0:0.1:pi变成列向量啊?
  3. org.json.JSONException: A JSONObject text must begin with #39;{#39; at character 1 of {解决方法...
  4. Xcode全局替换内容,一键Replace
  5. 如何定位并修复 HttpCore5 中的 HTTP2 流量控制问题
  6. [BS-28] iOS中分页的几种算法
  7. 学习笔记(59):Python实战编程-Graphics
  8. IOS开发-表视图LV3导航控制器
  9. android计算器编程思路,android计算器---思路以及计算器功能梳理(未完成)(示例代码)...
  10. 一个简单的微信小程序支付demo
  11. ANC降噪蓝牙耳机软件工程的数学原理
  12. 关于破解邮箱的一点心得
  13. JBoss,Geronimo还是Tomcat?——三种开源Java应用服务器的比较
  14. sqli-labs注入特色分类教程1-15【手动注入与sqlmap全面双解】
  15. 数字图像处理:像素间的一些基本关系
  16. Oracle11g 的下载和安装
  17. 后端返回amr格式音频前端处理播放播放(个人笔迹)
  18. Centos7.1搭建openstack私有云
  19. 杰罗姆鲍威尔 是犹太人吗_采访:杰罗姆·卢维尔(JéromeLouvel)关于Restlet
  20. Hive 正则表达式 判断字符串是否是数字(整数)

热门文章

  1. java文件删除失败
  2. 【Axure元件库】彩色圆形图标库 810+个矢量扁平化图标
  3. 一篇文章教你用matlab求定积分广义/变限积分
  4. 油猴安装错误问题(下载中断问题)及脚本安装
  5. VMware虚拟机下载及安装教程
  6. 汽车汽配行业DMS渠道商系统精准掌握渠道库存,提升市场响应能力
  7. 同一局域网下电脑传输文件的方式(超简单!)
  8. Pycharm 主题字体推荐(亮色)
  9. PyCharm下载安装主题
  10. 供应商层次分析法判断矩阵(文末附软件)