用于junos系统的出站ssh
junospyez-ossh-server的Python项目详细描述
用于junos pyez的出站ssh服务器
提供用于junos出站ssh功能的服务器。
关于出站ssh
基于junos的网络系统支持一个称为“出站ssh”的特性。此功能指示 用于创建到远程服务器的ssh会话的junos设备。例如,下面的junos 配置将指示junos设备创建到服务器的出站ssh连接 位于端口9000上的IP地址192.168.229.1
system {
services {
outbound-ssh {
client netnoob {
device-id netnoob;
services netconf;
192.168.229.1 port 9000;
}
}
}
OSSH服务器的目的是接受这个出站连接,然后允许执行 netconf命令。
示例用法
创建服务器
下面创建一个服务器,该服务器侦听端口9000上主机(0.0.0.0)上的任何IP接口。 当建立入站连接时,服务器将与 使用登录用户“admin”和密码“juniper123”的设备。
fromjunospyez_ossh_serverimportOutboundSSHServerserver=OutboundSSHServer('0.0.0.0',port=9000,login_user='admin',login_password='juniper123')
启动服务器
当服务器建立netconf会话时,将使用 junos-pyez设备对象和基本事实字典。例如:
importjsondefdump_device_facts(device,facts):print("GOT FACTS: ",json.dumps(facts,indent=3))server.start(on_device=dump_device_facts)
下面是示例输出,以说明作为服务器一部分收集的事实 功能。
GOT FACTS: { "os_version": "15.1X53-D59.3", "hostname": "JX0218140351", "device_sn": "JX0218140351", "device_model": "EX2300-48T", "mgmt_interface": "vme", "mgmt_ipaddr": "192.168.230.13", "mgmt_macaddr": "f0:4b:3a:fe:4a:22" }
作为开发人员,您可以创建一个on_device
回调函数来执行
允许登录用户执行此操作。
日志记录
服务器包包含一个log
模块,因此您可以轻松地控制日志记录的各个方面。这个
logger是服务器实例的属性。例如,可以输出所有信息级别
使用以下命令登录到标准输出:
importloggingserver.logger.setLevel(logging.INFO)server.logger.addHandler(logging.StreamHandler())server.start(on_device=dump_device_facts)
将导致以下标准输出:
outbound-ssh-server: starting on 0.0.0.0:9000 outbound-ssh-server: started outbound-ssh-server: accepted connection from 192.168.230.13:62572 establishing netconf to device via: 192.168.230.13:62572 gathering basic facts from device via: 192.168.230.13:62572 { "os_version": "15.1X53-D59.3", "hostname": "JX0218140351", "device_sn": "JX0218140351", "device_model": "EX2300-48T", "mgmt_interface": "vme", "mgmt_ipaddr": "192.168.230.13", "mgmt_macaddr": "f0:4b:3a:fe:4a:22" } completed device with management IP address: 192.168.230.13 GOT FACTS: { "os_version": "15.1X53-D59.3", "hostname": "JX0218140351", "device_sn": "JX0218140351", "device_model": "EX2300-48T", "mgmt_interface": "vme", "mgmt_ipaddr": "192.168.230.13", "mgmt_macaddr": "f0:4b:3a:fe:4a:22" }
停止服务器
要关闭服务器,请使用stop
方法:
server.stop()