亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Golang > 正文

如何使用Go語言實現遠程執行命令

2020-04-01 19:09:07
字體:
來源:轉載
供稿:網友

前言

遠程執行命令有什么用?為什么要遠程執行命令? 如果你只有2,3臺服務器需要管理的時候,遠程執行命令確實沒有沒多大作用,你可以登錄到每臺服務器上去完成各種操作。 當你的服務器大于3臺的時候,遠程執行的命令的方式就可以大大提高你的生產力了。

如果你有一個可以遠程執行命令的工具,那么就可以像操作單臺機器那樣操作多臺機器,機器越多,效率提高的越多。 遠程執行命令最常用的方法就是利用 SSH 協議,將命令發送到遠程機器上執行,并獲取返回結果。

一般命令

所謂一般命令,就是在一定時間內會執行完的命令。比如 grep, cat 等等。 執行命令的步驟是:連接,執行,獲取結果

連接

連接包含了認證,可以使用 password 或者 sshkey 2種方式來認證。下面的示例為了簡單,使用了密碼認證的方式來完成連接。

import (  "fmt" "time" "golang.org/x/crypto/ssh")func connect(user, password, host string, port int) (*ssh.Session, error) {  var ( auth  []ssh.AuthMethod addr  string clientConfig *ssh.ClientConfig client *ssh.Client session *ssh.Session err  error ) // get auth method auth = make([]ssh.AuthMethod, 0) auth = append(auth, ssh.Password(password)) clientConfig = &ssh.ClientConfig{ User: user, Auth: auth, Timeout: 30 * time.Second, } // connet to ssh addr = fmt.Sprintf("%s:%d", host, port) if client, err = ssh.Dial("tcp", addr, clientConfig); err != nil { return nil, err } // create session if session, err = client.NewSession(); err != nil { return nil, err } return session, nil}

連接的方法很簡單,只要提供登錄主機的 用戶*, *密碼*, *主機名或者IP*, *SSH端口

執行,命令獲取結果

連接成功后,執行命令很簡單

import (  "fmt" "log" "os" "time" "golang.org/x/crypto/ssh")func main() {  session, err := connect("root", "xxxxx", "127.0.0.1", 22) if err != nil { log.Fatal(err) } defer session.Close() session.Run("ls /; ls /abc")}

上面代碼運行之后,雖然命令正常執行了,但是沒有正常輸出的結果,也沒有異常輸出的結果。 要想顯示結果,需要將 session 的 Stdout 和 Stderr 重定向 修改 func main 為如下:

func main() {  session, err := connect("root", "xxxxx", "127.0.0.1", 22) if err != nil { log.Fatal(err) } defer session.Close() session.Stdout = os.Stdout session.Stderr = os.Stderr session.Run("ls /; ls /abc")}

這樣就能在屏幕上顯示正常,異常的信息了。

交互式命令

上面的方式無法遠程執行交互式命令,比如 top , 遠程編輯一個文件,比如 vi /etc/nginx/nginx.conf 如果要支持交互式的命令,需要當前的terminal來接管遠程的 PTY。

func main() {  session, err := connect("root", "olordjesus", "dockers.iotalabs.io", 2210) if err != nil { log.Fatal(err) } defer session.Close() fd := int(os.Stdin.Fd()) oldState, err := terminal.MakeRaw(fd) if err != nil { panic(err) } defer terminal.Restore(fd, oldState) // excute command session.Stdout = os.Stdout session.Stderr = os.Stderr session.Stdin = os.Stdin termWidth, termHeight, err := terminal.GetSize(fd) if err != nil { panic(err) } // Set up terminal modes modes := ssh.TerminalModes{ ssh.ECHO:  1, // enable echoing ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud ssh.TTY_OP_OSPEED: 14400, // output speed = 14.4kbaud } // Request pseudo terminal if err := session.RequestPty("xterm-256color", termHeight, termWidth, modes); err != nil { log.Fatal(err) } session.Run("top")}

總結

好了,這樣就可以執行交互式命令了,比如上面的 top 也可以通過 vi /etc/nginx/nignx.conf 之類的命令來遠程編輯文件。以上就是如何使用Go語言實現遠程執行命令的全部內容了,希望本文對大家學習python有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品激情av电影在线观看| 91精品久久久久久久久久久| 国产精品久久久久久久久免费| 97视频在线观看网址| 国产精品高精视频免费| 欧美大片在线看| 国产精品你懂得| 成人乱人伦精品视频在线观看| 成人黄色av网站| 精品成人国产在线观看男人呻吟| 中文字幕亚洲综合久久筱田步美| 久久色精品视频| 国产一区二区av| 亚洲男人第一av网站| 成人黄色免费在线观看| 国产精品r级在线| 国产精品日韩在线一区| 国产精品91视频| 亚洲字幕一区二区| 91在线免费看网站| 国产91对白在线播放| 国产91热爆ts人妖在线| 国内揄拍国内精品| 亚洲成人亚洲激情| 51精品国产黑色丝袜高跟鞋| 欧美性猛交xxxxx水多| 日本久久中文字幕| 国产亚洲人成网站在线观看| 欧美视频在线看| 国产欧美一区二区三区久久| 最近2019中文字幕一页二页| 97av在线播放| 欧美一级片久久久久久久| 97视频在线播放| 超在线视频97| 日韩在线观看免费av| 一区二区三区四区在线观看视频| 欧美激情视频在线免费观看 欧美视频免费一| 色妞一区二区三区| 日本一欧美一欧美一亚洲视频| 精品久久久久久国产| 97免费在线视频| 亚洲欧美综合v| 精品欧美国产一区二区三区| 疯狂蹂躏欧美一区二区精品| 伊人久久久久久久久久| 色诱女教师一区二区三区| 欧美视频在线观看免费网址| 粉嫩av一区二区三区免费野| 91精品国产乱码久久久久久久久| 日韩乱码在线视频| 国产日本欧美视频| 日韩av在线天堂网| 亚洲性生活视频| 国产欧美一区二区三区视频| 在线看日韩av| 午夜精品视频网站| 国产精品第三页| 国产精品白嫩初高中害羞小美女| 自拍偷拍亚洲精品| 亚洲精品影视在线观看| 亚洲二区中文字幕| 91深夜福利视频| 久久精品国产96久久久香蕉| 欧美国产极速在线| 欧美激情奇米色| 中文字幕国产日韩| 亚洲日韩中文字幕| 色狠狠久久aa北条麻妃| 亚洲男人天堂2024| 日本免费在线精品| 欧美色播在线播放| 亚洲国产精品成人一区二区| 欧美一级在线播放| 精品久久中文字幕| 日韩av在线一区二区| 欧美性色视频在线| 国产精品主播视频| 久久人人爽人人爽爽久久| 亚洲成人网在线| 欧美老女人xx| 色哟哟亚洲精品一区二区| 欧洲美女免费图片一区| 国产精品久久久久久久久久久久久| 国产精品久久97| 中文字幕免费精品一区高清| 国产成人精品电影| 精品二区三区线观看| 欧美日韩国产综合视频在线观看中文| 国产精品va在线| 最近2019中文字幕第三页视频| 国产精品久久久久久久久久新婚| 亚洲国产精品一区二区久| 亚洲丝袜av一区| 久久精品99久久久久久久久| 国产美女精品免费电影| 久久人91精品久久久久久不卡| 亚洲视频电影图片偷拍一区| 深夜福利亚洲导航| 久久精品精品电影网| 欧美日韩成人黄色| 日韩av中文在线| 国产精品在线看| 激情成人中文字幕| 欧美日韩国产一区在线| 成人妇女淫片aaaa视频| 一区二区三区国产在线观看| 日韩一级裸体免费视频| 一区二区成人精品| 久久91精品国产91久久跳| 国产一级揄自揄精品视频| 98精品国产自产在线观看| 精品日本高清在线播放| 欧美日韩另类视频| 欧美日韩成人精品| 91成人国产在线观看| 欧美尺度大的性做爰视频| 亚洲色图狂野欧美| 精品久久久999| 欧美伦理91i| 国产日本欧美一区二区三区| 亚洲欧洲日产国码av系列天堂| 亚洲精品一区久久久久久| 影音先锋欧美在线资源| 成人淫片在线看| 国产精品精品久久久久久| 亚洲男人天堂古典| 国产日韩在线观看av| 国产精品一区二区三区在线播放| 久久久精品久久久久| 成人午夜黄色影院| 在线丨暗呦小u女国产精品| 国产色婷婷国产综合在线理论片a| 亚洲欧洲在线看| 欧美成人精品一区二区三区| 国产精品三级在线| 亚洲一级黄色片| 国产精品久久久久久久久久东京| 国产成人精品最新| 狠狠躁天天躁日日躁欧美| 日韩网站免费观看高清| 91成品人片a无限观看| 欧美日韩福利在线观看| 亚洲一区二区精品| 久久成人这里只有精品| 久久电影一区二区| 亚洲精品在线91| 欧美超级乱淫片喷水| 亚洲精品免费网站| 超在线视频97| 国产精品视频一区二区高潮| 中文日韩在线视频| 国产精品嫩草视频| 欧美国产日韩一区二区在线观看| 国产精品免费久久久久影院| 亚洲美女在线看| 久久好看免费视频| 北条麻妃一区二区在线观看| 成人做爽爽免费视频| 国产偷亚洲偷欧美偷精品| 精品亚洲国产成av人片传媒| 欧美风情在线观看| www.欧美精品一二三区| 国产suv精品一区二区三区88区|