Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有斜杠的GoLang SSH命令似乎会立即失败_Go_Ssh - Fatal编程技术网

带有斜杠的GoLang SSH命令似乎会立即失败

带有斜杠的GoLang SSH命令似乎会立即失败,go,ssh,Go,Ssh,我目前正在编写一个给定参数的应用程序,它将在远程服务器上运行命令。我使用的是/x/crypto/ssh包,如果我使用诸如“who”或“ls”之类的一行命令,一切似乎都会顺利进行,但是,如果我运行更复杂的命令,例如: “grep SOMEDATA/var/log/logfile.log” 程序立即退出,命令执行行只显示“进程以状态1退出”,我没有得到任何其他返回 如果我检查用户的历史记录,让它以SSH的形式进入远程系统,我根本看不到该命令正在运行 以前有没有其他人遇到过这种问题?下面是我用来执行此

我目前正在编写一个给定参数的应用程序,它将在远程服务器上运行命令。我使用的是/x/crypto/ssh包,如果我使用诸如“who”或“ls”之类的一行命令,一切似乎都会顺利进行,但是,如果我运行更复杂的命令,例如:

“grep SOMEDATA/var/log/logfile.log”

程序立即退出,命令执行行只显示“进程以状态1退出”,我没有得到任何其他返回

如果我检查用户的历史记录,让它以SSH的形式进入远程系统,我根本看不到该命令正在运行

以前有没有其他人遇到过这种问题?下面是我用来执行此操作的代码片段(当然删除了敏感数据):


如果添加选项,您的“简单”命令是否也会失败?比如说,运行
who--login
ls-1
-它们工作还是失败?它们确实与选项一起工作,即使我通过我的webform或直接通过Session.run()为Session.Stderr添加一个目的地。这可能会提供更多的线索。可能是os.Stderr。不幸的是,Stderr只打印0.:!这可能与sudo有关吗?有没有可能是因为stdin没有被设置而发生了一些奇怪的事情?是否需要bin程序的绝对路径?它可能与具有空格的输入数据有关吗?
func returnData(w http.ResponseWriter, r *http.Request) {
var b bytes.Buffer
hostKey, err := getHostKey("SERVERNAME")
if err != nil {
    log.Fatalln(err)
}

err = r.ParseForm()
if err != nil {
    log.Fatalln(err)
}

config := &ssh.ClientConfig{
    User: "USERNAME",
    Auth: []ssh.AuthMethod{
        ssh.Password("TESTPASS"),
    },
    HostKeyCallback: ssh.FixedHostKey(hostKey),
}

client, err := ssh.Dial("tcp", "SERVERNAME:22", config)
if err != nil {
    log.Fatalln("Creating Client Failed: ", err)
}

session, err := client.NewSession()
if err != nil {
    log.Fatalln("Creating new Session Failed: ", err)
}

session.Stdout = &b
inputData := r.Form["fname"][0]
cmdExecute := fmt.Sprintf(`sudo grep %v /var/log/logfile.log`, inputData)
log.Println(cmdExecute)
if err := session.Run(cmdExecute); err != nil {
    log.Fatalln("Getting Data From session Failed: ", err)
    log.Fatalln(b.String())
}
//log.Println(hostKey)
defer session.Close()