2016-02-17 54 views
1

我想用golang.org/x/crypto/ssh寫一個能夠讀取相當於ssh -v輸出的小程序。雖然我能通過ssh包連接到我的服務器,但我不知道如何啓用詳細輸出或獲取所需的信息。由於我是golang的新手,我甚至無法決定是否有可能。如何增加golang.org/x/crypto/ssh的詳細程度

這是迄今爲止

package main 

import (
    "fmt" 

    "golang.org/x/crypto/ssh" 
) 

type SSHClient struct { 
    Config *ssh.ClientConfig 
    Host string 
    Port int 
} 

func main() { 
    sshConfig := &ssh.ClientConfig{ 
     User: "your_user_name", 
     Auth: []ssh.AuthMethod{ 
      ssh.Password("your_password"), 
     }, 
    } 

    client := &SSHClient{ 
     Config: sshConfig, 
     Host: "example.com", 
     Port: 22, 
    } 

    client.test() 
    _, err := ssh.Dial("tcp", "example.com:22", sshConfig) 
    if err != nil { 
     fmt.Printf("Failed to dial: %s", err) 
    } 

} 

func (client *SSHClient) test() { 
    fmt.Println("test") 
} 

回答

1

作爲一個快速黑客可以打開$GOPATH/golang.org/x/crypto/ssh/mux.go文件,更改const debugMux = falseconst debugMux = true並重新編譯程序我的代碼。

爲了看到調試日誌使你的程序做一些事情第一:

s, err := c.NewSession() 
if err != nil { 
    fmt.Printf("Failed to create session: %s", err) 
} 
fmt.Println(s.CombinedOutput("hostname")) 
+0

THX您的快速反應,這聽起來像一個可能的解決方案,但我如何訪問現已調試信息? – braunbeard

+0

如果您運行您的程序,調試信息將被記錄在控制檯上。 – kostya