go语言远程控制交换机 go远程调试

如何使用Go语言实现远程执行命令

一般命令

成都创新互联公司是专业的龙井网站建设公司,龙井接单;提供成都做网站、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行龙井网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

所谓一般命令,就是在一定时间内会执行完的命令。比如 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")

}

如何远程操控三层交换机

可以在

三层交换机

上开启telnet

功能

然后就可以在任何地点(只要保证能跟三层交换机通讯就可以)都可以用远程控制终端进行telnet连接。

怎么样才能远程登录到一台交换机?+对于一个新的交换机需要完成什么样的配置

怎么样才能远程登录到一台交换机?

对于一个新的交换机需要完成什么样的配置?

对于登录所使用的电脑,需要达到什么样的条件?输

入什么样的命令?

你的四个问题,可以一起回答和解决。

要解决远程登录一台交换机,需要下面的条件:

条件一,网管交换机。交换机必须是可管理交换机,也叫网管交换机。

条件二,电脑。需要一台可正常连接网络的电脑。电脑配置一般般就可以了。可以说,用命令行方式远程登录时,全世界所有能连网的电脑,不管配置高低都可以用。

条件三,网络。从电脑到交换机的网络必须正常连接。这一条件是比较复杂的,因为,这一网络连接方式较多,不好一一列出并详细描述,需要个人上网学习掌握要领,再进行配置。

比如本地,电脑到路由器的网络连接方法,路由器本身的配置,这一步要保证电脑与互联网的稳定正常连接。

比如远端,交换机所在的网络与外网的连接配置,远端路由器一定要做映射,有的也叫NAT地址转换,或叫内部服务器配置。这一步工作保证本地电脑与远端路由器内网正常连接。

交换机本身的配置,这个方面的配置知识是需要熟练掌握,才能完成的。这一步配置工作是比较复杂的。因不同品牌交换机配置命令有差异,请上网学习配置学习方法。

条件四,从电脑到家里的路由器,从路由器到对端的路由器,从对端的路由器到交换机,所有这条网络通路必须畅通。请按条件三完成配置。

条件五,会使用操作交换机的方法。有WEB方式和命令行方式管理。至于连接的命令就简单了,如果是WEB方式,在本端电脑浏览器地址栏中输入配置好地IP,输入帐号密码后就可以正常登录了。如果是命令行方式,用TELNET IP,再输入帐号密码,就可以登录了。

当然,如果以上条件都具备了,恭喜你,祝你成功。

怎样配置远程控制交换机

最好的办法就是看它的操作说明书,因为不同品牌的交换机配置方式可能不同。举个例子:华为的

1,WEB方式

『WEB方式远程管理交换机配置流程』

首先必备条件要保证PC可以与SwitchB通信,比如PC可以ping通SwitchB。

如果想通过WEB方式管理交换机,必须首先将一个用于支持WEB管理的文件载入交换机的flash中,该文件需要与交换机当前使用的软件版本相配套。WEB管理文件的扩展名为”tar”或者”zip”,可以从网站上下载相应的交换机软件版本时得到。

需要在交换机上添加WEB管理使用的用户名及密码,该用户的类型为telnet类型,而且权限为最高级别3。

注意,在将WEB管理文件载入交换机flash时,不要将文件进行解压缩,只需将完整的文件载入交换机即可(向交换机flash载入WEB管理文件的方法,请参考本配置实例中交换机的系统管理配置章节)。

【SwitchB相关配置】

1.查看交换机flash里面的文件(保证WEB管理文件已经在交换机flash中)

dir /all

Directory of flash:/

-rwxrwx 1 noone nogroup 442797 Apr 02 2000 13:09:50 wnm-xxx.zip

2.添加WEB管理的用户,用户类型为”telnet”,用户名为”huawei”,密码为”wnm”

〔SwitchB〕local-user huawei

〔SwitchB-luser-huawei〕service-type telnet level 3

〔SwitchB-luser-huawei〕password simple wnm

3.配置交换机管理地址

〔SwitchB〕interface vlan 100

〔SwitchB-Vlan-interface100〕ip addr 192.168.0.2 255.255.255.0

4.对HTTP访问用户的控制(Option)

〔SwitchB〕ip http acl acl_num/acl_name

2,TELNET方式

【TELNET密码验证配置】

只需输入password即可登陆交换机。

1. 进入用户界面视图

〔SwitchA〕user-interface vty 0 4

2. 设置认证方式为密码验证方式

〔SwitchA-ui-vty0-4〕authentication-mode password

3. 设置登陆验证的password为明文密码”huawei”

〔SwitchA-ui-vty0-4〕set authentication password simple huawei

4. 配置登陆用户的级别为最高级别3(缺省为级别1)

〔SwitchA-ui-vty0-4〕user privilege level 3

5. 或者在交换机上增加super password(缺省情况下,从VTY用户界面登录后的级别为1级,无法对设备进行配置操作。必须要将用户的权限设置为最高级别3,才可以进入系统视图并进行配置操作。低级别用户登陆交换机后,需输入super password改变自己的级别)例如,配置级别3用户的super password为明文密码”super3”

〔SwitchA〕super password level 3 simple super3

【TELNET本地用户名和密码验证配置】

需要输入username和password才可以登陆交换机。

1. 进入用户界面视图

〔SwitchA〕user-interface vty 0 4

2. 配置本地或远端用户名和口令认证

〔SwitchA-ui-vty0-4〕authentication-mode scheme

3. 配置本地TELNET用户,用户名为”huawei”,密码为”huawei”,权限为最高级别3(缺省为级别1)

〔SwitchA〕local-user huawei

〔SwitchA-user-huawei〕password simple huawei

〔SwitchA-user-huawei〕service-type telnet level 3

4. 在交换机上增加super password

〔SwitchA〕super password level 3 simple super3

【TELNET RADIUS验证配置】

以使用华为3Com公司开发的CAMS 作为RADIUS服务器为例

1. 进入用户界面视图

〔SwitchA〕user-interface vty 0 4

2. 配置远端用户名和口令认证

〔SwitchA-ui-vty0-4〕authentication-mode scheme

3. 配置RADIUS认证方案,名为”cams”

〔SwitchA〕radius scheme cams

4. 配置RADIUS认证服务器地址10.110.51.31

〔SwitchA-radius-cams〕primary authentication 10.110.51.31 1812

5. 配置交换机与认证服务器的验证口令为”huawei”

〔SwitchA-radius-cams〕key authentication huawei

6. 送往RADIUS的报文不带域名

〔SwitchA-radius-cams〕user-name-format without-domain

7. 创建(进入)一个域,名为”huawei”

〔SwitchA〕domain huawei

8. 在域”huawei”中引用名为”cams”的认证方案

〔SwitchA-isp-huawei〕radius-scheme cams

9. 将域”huawei”配置为缺省域

〔SwitchA〕domain default enable huawei

【TELNET访问控制配置】

1. 配置访问控制规则只允许10.1.1.0/24网段登录

〔SwitchA〕acl number 2000

〔SwitchA-acl-basic-2000〕rule deny source any

〔SwitchA-acl-basic-2000〕rule permit source 10.1.1.0 0.0.0.255

2. 配置只允许符合ACL2000的IP地址登录交换机

〔SwitchA-ui-vty0-4〕acl 2000 inbound

3,SSH方式

1. 组网需求

配置终端(SSH Client)与以太网交换机建立本地连接。终端采用SSH协议进行登录到交换机上,以保证数据信息交换的安全。

2. 组网图(略)

3. 配置步骤(SSH认证方式为口令认证)

〔Quidway〕 rsa local-key-pair create

说明:如果此前已完成生成本地密钥对的配置,可以略过此项操作。

〔Quidway〕 user-interface vty 0 4

〔Quidway-ui-vty0-4〕 authentication-mode scheme

〔Quidway-ui-vty0-4〕 protocol inbound ssh

〔Quidway〕 local-user client001

〔Quidway-luser-client001〕 password simple huawei

〔Quidway-luser-client001〕 service-type ssh

〔Quidway〕 ssh user client001 authentication-type password

SSH的认证超时时间、重试次数以及服务器密钥更新时间可以采取系统默认值,这些配置完成以后,您就可以在其它与以太网交换机连接的终端上,运行支持SSH1.5的客户端软件,以用户名client001,密码huawei,访问以太网交换机了。

____________

此外参考其它的配置方法:利用设备管理命令实现远程升级交换机配置举例

分享名称:go语言远程控制交换机 go远程调试
文章源于:https://www.cdcxhl.com/article36/docjepg.html

成都网站建设公司_创新互联,为您提供响应式网站网站策划品牌网站制作虚拟主机网站收录外贸建站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设