netmiko初窥
paramiko 和 pexpect在笔记里被跳过
因为,他们都可以被netmiko所取代,不想在他们身上浪费太多时间
补一个地方就是,如果用paramiko遇到了connection莫名自己关闭的情况,参考下面的代码
def create_a_conn(ip_addr, port, username, password):
'''
creat a conn to router using paramiko.SSHClient()
'''
conn_session = paramiko.SSHClient()
conn_session.load_system_host_keys()
conn_session.connect(ip_addr, port, username, password, look_for_keys = Fals
e, allow_agent = False)
conn = conn_session.invoke_shell()# to keep the session go on
conn.keep_this = conn_session
time.sleep(1)
conn.send("terminal length 0\n")
time.sleep(1)
if conn.recv_ready():
conn.recv(65535)
return conn
注意conn.keep_this = conn_session 这一句是解决connection莫名自己关闭的情况的关键
没有这一句会报如下错误
File "/home/hsun/applied_python/local/lib/python2.7/site-packages/paramiko/channel.py", line 715, in send
return self._send(s, m)
File "/home/hsun/applied_python/local/lib/python2.7/site-packages/paramiko/channel.py", line 1075, in _send
raise socket.error('Socket is closed')
socket.error: Socket is closed
netmiko
总体来讲还是很简单的,因为比较人性化
- 创建conn
1 #!/usr/bin/env python
2
3 from netmiko import ConnectHandler
4
5 pynet1 = {
6 'device_type': 'cisco_ios',
7 'ip': '184.105.247.70',
8 'username': 'pyclass',
9 'password': '88newclass',
10 }
11
12 conn1 = ConnectHandler(**pynet1)
13 outp = conn1.send_command("show run | inc logging")
14 print outp
就这么简单就可以输出了
要注意它的ConnectHandler括号里的俩星号,标示用的,不能少
- 利用dir()探索一个全新的library
>>> dir(netmiko)
['ConnectHandler', 'FileTransfer', 'NetMikoAuthenticationException', 'NetMikoTimeoutException', 'NetmikoAuthError', 'NetmikoTimeoutError', 'SCPConn', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', 'a10', 'alcatel', 'arista', 'avaya', 'base_connection', 'brocade', 'cisco', 'dell', 'enterasys', 'extreme', 'f5', 'fortinet', 'hp', 'huawei', 'juniper', 'linux', 'netmiko_globals', 'ovs', 'paloalto', 'platforms', 'quanta', 'scp_handler', 'ssh_connection', 'ssh_dispatcher', 'ssh_exception']
>>>
>>> dir(netmiko.ConnectHandler)
['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
>>>
>>>
- find_prompt()
print conn1.find_prompt()
- send_config_set()
命令是以数组的形式pass进去的,它的优点是可以替你跳过configure terminal这一步,并且数组里可以放多个命令,如下面的这个config_commands数组
但是要注意的是,它不会替你write,如果想write,还需要再加一条命令
18 config_commands = ['logging buffered 19999', 'no logging console']
19 outp = conn1.send_config_set(config_commands)
20 print outp
- 连接juniper设备
以srx为例
21
22 srx = {
23 'device_type': 'juniper',
24 'ip': '184.105.247.76',
25 'username': 'pyclass',
26 'port': 22,
27 'password': '88newclass',
28 }
29
30 conn2 = ConnectHandler(**srx)
31 outp = conn2.send_command("show arp")
32 print outp
33
34 print dir(conn2)
35 print dir(conn1)
可以看到conn1 conn2这俩connection的命名空间是不太一样的
注意看config_mode()和check_config_mode()
- config_mode() and check_config_mode()
check_config_mode()返回布尔值, True就说明现在正在config mode
config_mode()进入cofig mode
exit_config_mode退出config mode
- commit()
这个就是juniper的commit
conn2.commit()
netmiko初窥的更多相关文章
- Scrapy001-框架初窥
Scrapy001-框架初窥 @(Spider)[POSTS] 1.Scrapy简介 Scrapy是一个应用于抓取.提取.处理.存储等网站数据的框架(类似Django). 应用: 数据挖掘 信息处理 ...
- 初窥Kaggle竞赛
初窥Kaggle竞赛 原文地址: https://www.dataquest.io/mission/74/getting-started-with-kaggle 1: Kaggle竞赛 我们接下来将要 ...
- scrapy2_初窥Scrapy
递归知识:oop,xpath,jsp,items,pipline等专业网络知识,初级水平并不是很scrapy,可以从简单模块自己写. 初窥Scrapy Scrapy是一个为了爬取网站数据,提取结构性数 ...
- WWDC15 Session笔记 - Xcode 7 UI 测试初窥
https://onevcat.com/2015/09/ui-testing/ WWDC15 Session笔记 - Xcode 7 UI 测试初窥 Unit Test 在 iOS 开发中已经有足够多 ...
- Java发送邮件初窥
一.背景 最近朋友的公司有用到这个功能,之前对这一块也不是很熟悉,就和他一起解决出现的异常的同时,也初窥一下使用Apache Common Email组件进行邮件发送. 二.Java发送邮件的注意事项 ...
- 【软件工程】week5-个人作业-敏捷开发方法初窥
敏捷开发方法初窥 引言:本周的软件工程个人博客作业是阅读关于敏捷开发方法的文章(http://martinfowler.com/agile.html),并撰写自己的读后感.文章内容非常丰富,对敏捷开发 ...
- 网页3D效果库Three.js初窥
网页3D效果库Three.js初窥 背景 一直想研究下web页面的3D效果,最后选择了一个比较的成熟的框架Three.js下手 ThreeJs官网 ThreeJs-github; 接下来我会陆续翻译 ...
- iOS视频直播初窥:高仿<喵播APP>
视频直播初窥 视频直播,可以分为 采集,前处理,编码,传输, 服务器处理,解码,渲染 采集: iOS系统因为软硬件种类不多, 硬件适配性比较好, 所以比较简单. 而Android端市面上机型众多, 要 ...
- php面向对象(一) 初窥
初窥php面向对象 1.类:类就是属性和方法的集合 是一个抽象的概念比如生活中的“人”,"汽车"2.对象:对象是具体的事物 比如一叫“小强”的人 一辆叫“奥迪a7”的汽车3.类和对 ...
随机推荐
- Java 集合 — ArrayList
ArrayList ArrayList是基于数组实现的List 是有序的 每次添加之前判断是否进行扩容 不是线程安全的. 构造方法 // 空数组 private static final Object ...
- Sqlserver分页的问题
好久没有用SqlServer了,今天写了一个分页,遇到了小问题,本着温故而知新的道理,再来随便写些什么吧. 语句是这样的 string sql=“select * from ( select*,(ro ...
- poj 2385Apple Catching(简单dp)
/* 题意: 有两棵苹果树,每一棵苹果树每一秒间隔的掉落下来一个苹果,一个人在树下接住苹果,不让苹果掉落! 人在两棵树之间的移动是很快的!但是这个人移动的次数是有限制的,问最多可以接住多少个苹果! 思 ...
- SQL*Loader之CASE8
CASE8 1. SQL脚本 [oracle@node3 ulcase]$ cat ulcase8.sql set termout off rem host write sys$output &quo ...
- 使用Nginx配置NodeJs程序(Windows平台)
简介 Nginx("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 服务器. Nginx 是由 Igor Sysoev ...
- Spark入门实战系列--1.Spark及其生态圈简介
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .简介 1.1 Spark简介 年6月进入Apache成为孵化项目,8个月后成为Apache ...
- 机器学习&数据挖掘笔记_20(PGM练习四:图模型的精确推理)
前言: 这次实验完成的是图模型的精确推理.exact inference分为2种,求边缘概率和求MAP,分别对应sum-product和max-sum算法.这次实验涉及到的知识点很多,不仅需要熟悉图模 ...
- Testing - 测试基础 - 模型
珠玉在前,不再赘言. 软件测试模型 软件测试模型汇总
- 如何用Ajax加载服务器的图片
用Ajax请求服务器的图片,并显示在浏览器中 前言 一直在数据库里面存的都是图片在服务器的地址,然后再到浏览器中显示,但是发现两个问题 第一:为了安全起见,js是无法读取本地的图片的,不然你写一个js ...
- SQL--Having
Having--对分组信息进行过滤,因为分组之后的信息和原来的表信息没有关系了, Having可以用的之后,出现在Group子句中的列,还有聚合函数 SELECT s_Age ,COUNT(s_I ...