用于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()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在jprogressbar上添加文本?   java生成30到32位之间的随机数   我想从我自己的服务器而不是java worldwind中的nasa服务器获取数据   jsp中带有外部java文件的html计数器   java如何找到运行Servlet的主机和端口   我怎么能看到数学。java中的cos方法计算平方根?   java这个docker run命令做什么?   java如何在将表单提交到servlet后将原始JSP保存在URL中?   如何在Java中访问Arraylist中的字典数据?   java JPA如果我有一个实体被用作复合键,那么级联是否也构成复合键的一部分?   连接Java:文件读取/添加到文件程序时未按预期工作(逻辑错误)   java从Android向PLC发送布尔值   java Get build。gradle文件作为一个。类文件   Youtube API V3 Java无需调用浏览器即可上传视频   java如何在Unittest中测试StackOverflower错误   实现方法中的java异常处理   java这个::instanceMethod在java8中用作方法参数有什么用途   java偶尔会获得javax。邮政使用javamail阅读gmail电子邮件时的FolderClosedException