还是那个坑爹的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/
,如需转载,请注明出处,否则将追究法律责任。