Documentation ¶
Index ¶
- Constants
- Variables
- func GetSSHBrand(user, password, ipPort string) (string, error)
- func LogDebug(format string, a ...interface{})
- func LogError(format string, a ...interface{})
- func RunCommands(user, password, ipPort string, cmds ...string) (string, error)
- func RunCommandsWithBrand(user, password, ipPort, brand string, cmds ...string) (string, error)
- type SSHSession
- func (this *SSHSession) CheckSelf() bool
- func (this *SSHSession) ClearChannel()
- func (this *SSHSession) Close()
- func (this *SSHSession) GetLastUseTime() time.Time
- func (this *SSHSession) GetSSHBrand() string
- func (this *SSHSession) ReadChannelExpect(timeout time.Duration, expects ...string) string
- func (this *SSHSession) ReadChannelTiming(timeout time.Duration) string
- func (this *SSHSession) UpdateLastUseTime()
- func (this *SSHSession) WriteChannel(cmds ...string)
- type SessionManager
- func (this *SessionManager) GetSession(user, password, ipPort, brand string) (*SSHSession, error)
- func (this *SessionManager) GetSessionCache(sessionKey string) *SSHSession
- func (this *SessionManager) LockSession(sessionKey string)
- func (this *SessionManager) RunAutoClean()
- func (this *SessionManager) SetSessionCache(sessionKey string, session *SSHSession)
- func (this *SessionManager) UnlockSession(sessionKey string)
Constants ¶
View Source
const ( HUAWEI = "huawei" H3C = "h3c" CISCO = "cisco" )
Variables ¶
View Source
var ( HuaweiNoPage = "screen-length 0 temporary" H3cNoPage = "screen-length disable" CiscoNoPage = "terminal length 0" )
Functions ¶
func GetSSHBrand ¶
*
- 外部调用的统一方法,完成获取交换机的型号
- @param user ssh连接的用户名, password 密码, ipPort 交换机的ip和端口
- @return 设备品牌(huawei,h3c,cisco,"")和执行错误
- @author shenbowei
func RunCommands ¶
*
- 外部调用的统一方法,完成获取会话(若不存在,则会创建连接和会话,并存放入缓存),执行指令的流程,返回执行结果
- @param user ssh连接的用户名, password 密码, ipPort 交换机的ip和端口, cmds 执行的指令(可以多个)
- @return 执行的输出结果和执行错误
- @author shenbowei
func RunCommandsWithBrand ¶
*
- 外部调用的统一方法,完成获取会话(若不存在,则会创建连接和会话,并存放入缓存),执行指令的流程,返回执行结果
- @param user ssh连接的用户名, password 密码, ipPort 交换机的ip和端口, brand 交换机品牌(可为空), cmds 执行的指令(可以多个)
- @return 执行的输出结果和执行错误
- @author shenbowei
Types ¶
type SSHSession ¶
type SSHSession struct {
// contains filtered or unexported fields
}
*
- 封装的ssh session,包含原生的ssh.Ssssion及其标准的输入输出管道,同时记录最后的使用时间
- @attr session:原生的ssh session,in:绑定了session标准输入的管道,out:绑定了session标准输出的管道,lastUseTime:最后的使用时间
- @author shenbowei
func NewSSHSession ¶
func NewSSHSession(user, password, ipPort string) (*SSHSession, error)
*
- 创建一个SSHSession,相当于SSHSession的构造函数
- @param user ssh连接的用户名, password 密码, ipPort 交换机的ip和端口
- @return 打开的SSHSession,执行的错误
- @author shenbowei
func (*SSHSession) CheckSelf ¶
func (this *SSHSession) CheckSelf() bool
*
- 检查当前session是否可用
- @return true:可用,false:不可用
- @author shenbowei
func (*SSHSession) ClearChannel ¶
func (this *SSHSession) ClearChannel()
*
- 清除管道缓存的内容,避免管道中上次未读取的残余内容影响下次的结果
func (*SSHSession) Close ¶
func (this *SSHSession) Close()
*
- SSHSession的关闭方法,会关闭session和输入输出管道
- @author shenbowei
func (*SSHSession) GetLastUseTime ¶
func (this *SSHSession) GetLastUseTime() time.Time
*
- 获取最后的使用时间
- @return time.Time
- @author shenbowei
func (*SSHSession) GetSSHBrand ¶
func (this *SSHSession) GetSSHBrand() string
*
- 获取当前SSH到的交换机的品牌
- @return string (huawei,h3c,cisco)
- @author shenbowei
func (*SSHSession) ReadChannelExpect ¶
func (this *SSHSession) ReadChannelExpect(timeout time.Duration, expects ...string) string
*
- 从输出管道中读取设备返回的执行结果,若输出流间隔超过timeout或者包含expects中的字符便会返回
- @param timeout 从设备读取不到数据时的超时等待时间(超过超时等待时间即认为设备的响应内容已经被完全读取), expects...:期望得到的字符(可多个),得到便返回
- @return 从输出管道读出的返回结果
- @author shenbowei
func (*SSHSession) ReadChannelTiming ¶
func (this *SSHSession) ReadChannelTiming(timeout time.Duration) string
*
- 从输出管道中读取设备返回的执行结果,若输出流间隔超过timeout便会返回
- @param timeout 从设备读取不到数据时的超时等待时间(超过超时等待时间即认为设备的响应内容已经被完全读取)
- @return 从输出管道读出的返回结果
- @author shenbowei
func (*SSHSession) UpdateLastUseTime ¶
func (this *SSHSession) UpdateLastUseTime()
*
- 更新最后的使用时间
- @author shenbowei
func (*SSHSession) WriteChannel ¶
func (this *SSHSession) WriteChannel(cmds ...string)
*
- 向管道写入执行指令
- @param cmds... 执行的命令(可多条)
- @author shenbowei
type SessionManager ¶
type SessionManager struct {
// contains filtered or unexported fields
}
*
- session(SSHSession)的管理类,会统一缓存打开的session,自动处理未使用超过10分钟的session
- @attr sessionCache:缓存所有打开的map(10分钟内使用过的),sessionLocker设备锁,globalLocker全局锁
- @author shenbowei
func NewSessionManager ¶
func NewSessionManager() *SessionManager
*
- 创建一个SessionManager,相当于SessionManager的构造函数
- @return SessionManager实例
- @author shenbowei
func (*SessionManager) GetSession ¶
func (this *SessionManager) GetSession(user, password, ipPort, brand string) (*SSHSession, error)
*
- 从缓存中获取session。如果不存在或者不可用,则重新创建
- @param user ssh连接的用户名, password 密码, ipPort 交换机的ip和端口
- @return SSHSession
- @author shenbowei
func (*SessionManager) GetSessionCache ¶
func (this *SessionManager) GetSessionCache(sessionKey string) *SSHSession
func (*SessionManager) LockSession ¶
func (this *SessionManager) LockSession(sessionKey string)
*
- 给指定的session上锁
- @param sessionKey:session的索引键值
- @author shenbowei
func (*SessionManager) RunAutoClean ¶
func (this *SessionManager) RunAutoClean()
*
- 开始自动清理session缓存中未使用超过10分钟的session
- @author shenbowei
func (*SessionManager) SetSessionCache ¶
func (this *SessionManager) SetSessionCache(sessionKey string, session *SSHSession)
func (*SessionManager) UnlockSession ¶
func (this *SessionManager) UnlockSession(sessionKey string)
*
- 给指定的session解锁
- @param sessionKey:session的索引键值
- @author shenbowei
Click to show internal directories.
Click to hide internal directories.