Golang通過SSH執行交換機操作

2021-10-07 09:57:11 字數 2386 閱讀 6720

golang通過ssh執行交換機操作

​ 簡單實現通過輸入指令,兩步執行交換機命令。

​ 存在問題:

​ 不過我的目的已經達到,我主要是了解ssh的使用。

package main

import (

"bufio"

"fmt"

"golang.org/x/crypto/ssh"

"log"

"os"

"strings"

"sync"

)//獲取賬號和密碼的對應關係

type hostpassword struct

var (

a,b string //臨時儲存變數

commands = string{} //執行命令組

hp hostpassword //儲存賬號和密碼

wg sync.waitgroup //執行goroutine

)func main()

fmt.println("請輸入要執行的命令列,以;號間隔")

切割交換機命令

switchgroups := strings.split(a, "|")

length := len(switchgroups)

hp = make(hostpassword,length)

for i,singleswitch := range switchgroups

switchsplit := strings.split(singleswitch, ";")

hp[i].username=switchsplit[0]

hp[i].host=switchsplit[1]

hp[i].password=switchsplit[2]

}// 1.2 輸入要執行命令

input := bufio.newreader(os.stdin)

b, err := input.readstring('\n')

if err != nil

commands = strings.split(b, ";")

//2. 執行交換機操作

err = sshswitch(hp)

if err != nil

// 同步等待

wg.wait()

}//建立ssh連線

func sshswitch(hostpasswords hostpassword) (error),

}, //新增了很多加密方式,為了應對不同的密碼規則

user: hp[i].username,

auth: ssh.authmethod,

hostkeycallback: ssh.insecureignorehostkey(), //此處相當於執行nil,但是並不安全

}client, err := ssh.dial("tcp",hp[i].host+":22", config)

if err != nil

//執行goroutine,但是沒有返回錯誤。

go handlesession(client, commands,&wg)

}return nil

}//建立session,執行命令。

func handlesession(client *ssh.client,commands string,wg *sync.waitgroup) error

//延遲關閉session

defer session.close()

//設定terminalmodes的方式

modes := ssh.terminalmodes

//建立偽終端

err = session.requestpty("xterm",80,40,modes)

if err != nil

//設定session的標準輸入是stdin

stdin, err := session.stdinpipe()

if err != nil

//設定session的標準輸出和錯誤輸出分別是os.stdout,os,stderr.就是輸出到後台

session.stdout = os.stdout

session.stderr = os.stderr

err = session.shell()

if err != nil

//將命令依次執行

for _, cmd := range commands

}//執行等待

err = session.wait()

if err != nil

//減少同步組的次數

wg.done()

return nil

}

java 通過 ssh 執行 shell 命令

public abstract class shell implements autocloseable class ssh2shell extends shell public static string errormsg new string 利用jsch包實現遠端主機shell命令執行,鏈結遠...

python通過ssh連線伺服器,執行命令

import paramiko class linuxorder def init self,ip,port,username,password,timeout param ip 伺服器ip param port ssh 連線的埠 param username 伺服器使用者名稱 param pass...

Golang打包執行

cgo enabled 0 goos linux goarch amd64 go build main.gocgo enabled 0 goos darwin goarch amd64 go build main.gocgo enabled 0 goos windows goarch amd64 g...