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://pwwzsj.com/article/docjepg.html