私はGo言語を使用してSSHクライアントを開発しようとしています。以下のコードを書いて、ユーザーからコマンドを取得し、リモートサーバーでコマンドを実行し、レスポンスを出力します。出力からSSHコマンドの実行ステータスを除外します
次のコードには小さな問題があります。画面の出力結果は、応答の最後にコマンドの実行状況(nil/error status)を表示します。これを私の出力からどのように除外するのですか?
SSH.go
package main
import "fmt"
import "io"
import "bufio"
import "os"
import "net"
import "golang.org/x/crypto/ssh"
func main(){
sshConfig := &ssh.ClientConfig{
User: "[USERNAME]",
Auth: []ssh.AuthMethod{
ssh.Password("[PASSWORD]"),
},
HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
return nil
},
}
connection,err := ssh.Dial("tcp", "[IP]:[PORT]", sshConfig)
if err != nil {
fmt.Println("Failed to connect: %s", err)
}
reader := bufio.NewReader(os.Stdin)
for{
input, _ := reader.ReadString('\n')
session,err := connection.NewSession()
if err != nil {
fmt.Println("Failed to create session: %s", err)
}
stdout,err := session.StdoutPipe()
if err != nil {
fmt.Println("Failed to get stdout: %s", err)
}
go io.Copy(os.Stdout, stdout)
output := session.Run(input);
fmt.Println(output)
}
}
現在の結果
hello
Process exited with status 127
df -hP /tmp
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 198G 13G 176G 7%/
<nil>
期待される結果
hello
df -hP /tmp
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 198G 13G 176G 7%/
多分stderrを '/ dev/null'にリダイレクトするべきでしょうか? – armnotstrong
@armnotstrong - その構文は何ですか? – Beginner
@Beginner「stderrを '/ dev/null'にリダイレクトすればgoogleになる? – zerkms