成都网站建设设计

将想法与焦点和您一起共享

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远程调试
文章位置:http://chengdu.cdxwcx.cn/article/docjepg.html