From f813cda986254f323fda018c14a8811e74d8d779 Mon Sep 17 00:00:00 2001 From: lpxxn Date: Thu, 17 Jun 2021 10:23:55 +0800 Subject: [PATCH] feat: config ssh --- cmd/doraemon/common.go | 45 ++++++++++++++++++++++++++++++++++++++++++ cmd/doraemon/main.go | 41 -------------------------------------- config/config.go | 26 +++++++++++------------- 3 files changed, 57 insertions(+), 55 deletions(-) create mode 100644 cmd/doraemon/common.go diff --git a/cmd/doraemon/common.go b/cmd/doraemon/common.go new file mode 100644 index 0000000..c1991d8 --- /dev/null +++ b/cmd/doraemon/common.go @@ -0,0 +1,45 @@ +package main + +import ( + "fmt" + + "github.com/lpxxn/doraemon/config" + "github.com/lpxxn/doraemon/utils" +) + +func runGlobalCmd(cmdName string) (ran bool, needExist bool) { + if _, ok := existCommand[cmdName]; ok { + return true, true + } + if openConfigDir == cmdName { + if err := config.OpenConfDir(); err != nil { + fmt.Println(err) + } + return true, false + } + return false, false +} + +func runCustomCmd(cmdName string) error { + item, err := config.CustomConfigByName(cmdName) + if err != nil { + return err + } + return utils.RunCmd(item.Cmd) +} + +func startSSHShell(sshName string) error { + sshConfig, err := config.SSHConfigByName(sshName) + if err != nil { + return err + } + client, err := utils.NewSSHClient(sshConfig) + if err != nil { + return err + } + session, err := client.CreateSession() + if err != nil { + return err + } + return client.Shell(session) +} diff --git a/cmd/doraemon/main.go b/cmd/doraemon/main.go index b65c16b..707149b 100644 --- a/cmd/doraemon/main.go +++ b/cmd/doraemon/main.go @@ -150,47 +150,6 @@ func RootCMD(param cmdParam) *cobra.Command { return rootCmd } -func runGlobalCmd(cmdName string) (ran bool, needExist bool) { - if _, ok := existCommand[cmdName]; ok { - return true, true - } - if openConfigDir == cmdName { - if err := config.OpenConfDir(); err != nil { - fmt.Println(err) - } - return true, false - } - return false, false -} - -func startSSHShell(sshName string) error { - sshConfig, err := config.SSHConfigByName(sshName) - if err != nil { - return err - } - client, err := utils.NewSSHClient(sshConfig) - if err != nil { - return err - - } - // Create Session - session, err := client.CreateSession() - if err != nil { - return err - } - - // Start ssh shell - return client.Shell(session) -} - -func runCustomCmd(cmdName string) error { - item, err := config.CustomConfigByName(cmdName) - if err != nil { - return err - } - return utils.RunCmd(item.Cmd) -} - func customCmd(rootCmd *cobra.Command, param cmdParam) { cmd := &cobra.Command{ Use: "cmd", diff --git a/config/config.go b/config/config.go index 0d178a1..7b0ca3e 100644 --- a/config/config.go +++ b/config/config.go @@ -174,7 +174,7 @@ func (s *sshInfo) ToSSHConfig() (utils.SSHConfig, error) { } func (s *sshInfo) sshPwdConf() (utils.SSHConfig, error) { - sshConf := &utils.SSHPasswordConfig{SSHBaseConfig: &utils.SSHBaseConfig{ + return &utils.SSHPasswordConfig{SSHBaseConfig: &utils.SSHBaseConfig{ MethodName: utils.Password, URI: s.URI, User: s.User, @@ -183,20 +183,10 @@ func (s *sshInfo) sshPwdConf() (utils.SSHConfig, error) { Passphrase: s.Passphrase, StartCommand: s.StartCommand, }, - } - return sshConf, nil + }, nil } func (s *sshInfo) sshPublicKeyConf() (utils.SSHConfig, error) { - sshConf := &utils.SSHPrivateKeyConfig{SSHBaseConfig: &utils.SSHBaseConfig{ - MethodName: utils.PublicKey, - URI: s.URI, - User: s.User, - Timout: s.Timout, - Passphrase: s.Passphrase, - StartCommand: s.StartCommand, - }, - } pemBytes, err := ioutil.ReadFile(s.PublicKeyPath) if err != nil { log.Fatal(err) @@ -212,8 +202,16 @@ func (s *sshInfo) sshPublicKeyConf() (utils.SSHConfig, error) { log.Printf("parse key failed:%v", err) return nil, err } - sshConf.AuthMethods = []ssh.AuthMethod{ssh.PublicKeys(signer)} - return sshConf, nil + return &utils.SSHPrivateKeyConfig{SSHBaseConfig: &utils.SSHBaseConfig{ + MethodName: utils.PublicKey, + URI: s.URI, + User: s.User, + AuthMethods: []ssh.AuthMethod{ssh.PublicKeys(signer)}, + Timout: s.Timout, + Passphrase: s.Passphrase, + StartCommand: s.StartCommand, + }, + }, nil } func (s *sshInfo) HaveProxy() bool {