Go語言互動執行系統命令
還是那個坑爹的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
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部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1583780/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Go語言:crypto/ssh執行遠端命令Go
- 國產系統級程式語言與編譯器,輕鬆與 C 語言進行互動編譯
- Go語言內幕(5):執行時啟動過程Go
- Go 語言型別系統詳解Go型別
- go語言多執行緒入門筆記-執行緒同步Go執行緒筆記
- Go和Rust都是系統語言和通用語言 - RedditGoRust
- Java程式執行系統命令Java
- 《Go 語言程式設計》讀書筆記 (七) Goroutine 與系統執行緒的區別Go程式設計筆記執行緒
- C++/Php/Python語言執行shell命令C++PHPPython
- 使用 ABAP 程式語言直接執行 ABAP 伺服器所在作業系統的 shell 命令伺服器作業系統
- Go語言分散式系統配置管理實踐--go archaiusGo分散式AI
- Go的執行原理以及Go的命令Go
- java 執行作業系統命令Java作業系統
- Node.js執行系統命令Node.js
- Linux系統執行命令方法Linux
- GO語言————6.11 計算函式執行時間Go函式
- gops 是怎麼和 Go 的執行時進行互動的?Go
- go語言學習-常用命令Go
- Go語言————1、初識GO語言Go
- GhostTalk:透過充電線對智慧語音系統進行互動攻擊
- Python-呼叫執行系統命令Python
- Go語言中用 os/exec 執行命令的五種姿勢Go
- Go 系統命令管道操作Go
- GO語言Go
- owl - Go語言開發的分散式監控系統Go分散式
- GO語言————2、GO語言環境安裝Go
- 程式語言執行過程
- 三、Go語言基礎:go build命令用法及示例詳解GoUI
- Go語言基礎(04):go doc命令用法及示例詳解Go
- Go語言命令列程式和他們的引數Go命令列
- 用一句話描述Go語言的命令Go
- Go語言實現設計模式之命令模式Go設計模式
- Go 語言的 4 個特性改動Go
- Go_go語言初探Go
- golang 快速入門 [5.1]-go 語言是如何執行的-連結器Golang
- 二、Go語言基礎:go install與go fmt命令使用示例詳解Go
- 【Go語言入門系列】(八)Go語言是不是面嚮物件語言?Go物件
- go 語言常量Go