logman/ssh.go

62 lines
1.2 KiB
Go
Raw Normal View History

2019-08-13 09:48:47 -05:00
package main
import (
"fmt"
"golang.org/x/crypto/ssh"
)
2019-08-14 17:31:13 -05:00
// modes := ssh.TerminalModes{
// ssh.ECHO: 0,
// ssh.TTY_OP_ISPEED: 14400,
// ssh.TTY_OP_OSPEED: 14400,
// }
type SSHConnection struct {
2019-08-13 10:10:18 -05:00
Username string
Password string
Port string
Hosts []string
2019-08-13 09:48:47 -05:00
}
2019-08-14 17:31:13 -05:00
type SSHCleints []*ssh.Client
func initializeConnection(config Configuration) (SSHConnection, *ssh.ClientConfig) {
var sshConn SSHConnection
sshConn.Username = config.Username
sshConn.Password = config.Password
sshConn.Port = config.Port
sshConn.Hosts = config.Hosts
sshConfig := &ssh.ClientConfig{
User: sshConn.Username,
Auth: []ssh.AuthMethod{
ssh.Password(sshConn.Password),
},
2019-08-14 17:31:13 -05:00
HostKeyCallback: sshConn.getHostKeys(),
}
return sshConn, sshConfig
}
2019-08-14 17:31:13 -05:00
func (s SSHConnection) getHostKeys() ssh.HostKeyCallback {
return ssh.InsecureIgnoreHostKey()
}
func (s SSHConnection) dialConnection(sshConfig *ssh.ClientConfig) SSHCleints {
ClientConn := SSHCleints{}
for _, j := range s.Hosts {
hostPort := fmt.Sprintf("%s:22", j)
connection, err := ssh.Dial("tcp", hostPort, sshConfig)
if err != nil {
fmt.Errorf("Can't connect", err)
}
ClientConn = append(ClientConn, connection)
}
2019-08-14 17:31:13 -05:00
return ClientConn
}