ITPub博客

首页 > 应用开发 > IT综合 > Go语言交互执行系统命令

Go语言交互执行系统命令

原创 IT综合 作者:壹頁書 时间:2015-04-17 17:41:23 4 删除 编辑
还是那个坑爹的expect安全问题,虽然在Shell层面已经解决了
http://blog.itpub.net/29254281/viewspace-1580525/

但是使用Golang调用脚本,还是出现了问题
func Backup(backupinfo *BackupInfo, backuppath *string) {
        cmdstring := "echo  '" + backupinfo.LocalAddr + " " + backupinfo.User + " " + backupinfo.Pwd + " " + backupinfo.Path + " " + *backuppath + "/" + backupinfo.LocalAddr + "' | sed 's/ /\\n/g' |" + GetCurrentPath() + "/backup.sh"                               
        cmd := exec.Command("/bin/bash","-c",cmdstring)                                                                                                            
        cmd.Run()                                                                                                      
}

使用小花狸监控执行异地备份的同时
在另外一个窗口执行命令.
ps -ef | grep backup
mysql    12069     1  0 16:44 pts/1    00:00:00 /bin/bash -c echo  '127.0.0.1 root password /home/dev/ /tmp' | sed 's/ /\n/g' |/home/dev/backup.sh

纳尼,这是神马啊...
怎么又显示出来了.

解决这个问题,可以使用golang交互执行的方式


修改之后,终于搞定这个问题了
func Backup(backupinfo *BackupInfo, backuppath *string) {
        cmdstring := "echo  '" + backupinfo.LocalAddr + " " + backupinfo.User + " " + backupinfo.Pwd + " " + backupinfo.Path + " " + *backuppath + "/" + backupinfo.LocalAddr + "' | sed 's/ /\\n/g' |" + GetCurrentPath() + "/backup.sh"
        in := bytes.NewBuffer(nil)
        cmd := exec.Command("/bin/bash")
        cmd.Stdin = in
        in.WriteString(cmdstring)
        cmd.Run()
}

参考:
http://blog.leanote.com/post/53075412e01c5378f2000001



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-1583780/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-10-19

  • 博文量
    620
  • 访问量
    6340606