54 lines
1009 B
Go
54 lines
1009 B
Go
package service
|
|
|
|
import (
|
|
"bytes"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
const (
|
|
username = "root"
|
|
password = "Legu.cc()123"
|
|
ip = "10.0.0.9"
|
|
port = 22
|
|
cmd = "ls"
|
|
cmds = "cd /home/liwei/go_dreamfactory&&git pull&&exit" //exit结尾,否则程序不会退出
|
|
)
|
|
|
|
func TestSSHConnect(t *testing.T) {
|
|
ciphers := []string{}
|
|
ssh := &SSHService{}
|
|
|
|
session, err := ssh.Connect(username, password, ip, "", port, ciphers)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer session.Close()
|
|
|
|
cmdlist := strings.Split(cmds, "&&")
|
|
stdinBuf, err := session.StdinPipe()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
var stdoutBuf, errBuf bytes.Buffer
|
|
session.Stdout = &stdoutBuf
|
|
session.Stderr = &errBuf
|
|
|
|
if err := session.Shell(); err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
for _, c := range cmdlist {
|
|
c = c + "\n"
|
|
stdinBuf.Write([]byte(c))
|
|
}
|
|
|
|
session.Wait()
|
|
t.Logf(stdoutBuf.String() + errBuf.String())
|
|
// if err := session.Run(cmd); err != nil {
|
|
// t.Logf("run err: %v", err)
|
|
// }
|
|
// t.Logf("res: %v", session.Stdout)
|
|
}
|