现在想通过 go 执行这条命令
bash -c "$(curl -s dl.ysicing.net/download/test.sh) 1"
大佬,有姿势么
代码是这个
执行的命令是这个
bash -c "set 1;$(curl -s dl.ysicing.net/download/test.sh)"
package main
import (
"fmt"
"os"
"os/exec"
"strings"
)
func main() {
var myshell []byte
var err error
var cmd *exec.Cmd
cmd = exec.Command("/bin/bash", "-c", "set 3.3;$(curl -s dl.ysicing.net/download/test.sh)")
//cmd = exec.Command("/bin/bash", "-c", "set 3.3 192.168.1.1 aaaa local test;$(curl -s dl.ysicing.net/download/go.sh)")
if myshell, err = cmd.Output(); err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Println(string(myshell))
fmt.Println(strings.Trim(string(myshell), "\n"))
}
1
chy373180 2017-09-25 10:53:11 +08:00
基本啥啥语言都自带系统调用包
https://golang.org/pkg/os/exec/ |
2
YakuMioto 2017-09-25 10:53:32 +08:00
自己看看 exec 包就会了..
|
3
janxin 2017-09-25 11:06:23 +08:00
exec.Command("bash", "-c", "$(curl -s dl.ysicing.net/download/test.sh) 1")
|
5
tt0411 2017-09-25 21:48:45 +08:00
lz 这是对 bash 脚本理解不到位, 换 python 估计还是达不到你的预期
|
6
freestyle 2017-09-25 22:10:09 +08:00
@ysicing 可以通过设置 cmd.Stdin 实现. go 这样强制要分割参数列表传是为了安全, 避免传入的 args 里写分号造成可执行任意其他命令.
package main import ( "os/exec" "strings" "log" ) func main() { cmd := exec.Command("bash") cmd.Stdin = strings.NewReader(`echo 'your command';echo 'multi command';`) output, err := cmd.Output() if err != nil { log.Fatalf("cmd.Output error:%s", err) } log.Printf("cmd ouput:\n%s", output) } |