关于换批量cisco nexus的主机名,关键字段如下(python 2.7):

first_character = output.rfind("\n") + 2

last_character = output.rfind("#")

hostname = output[first_character:last_character]

new_hostname = hostname.replace("{关键字A}","{关键字B}")

使用rfind函数找出hostname,然后进行关键字的替换。

完整代码(我是个菜鸟,请忽略代码的优雅,目前功能至上,如下代码跑过,ctrl + C出来的):

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import paramiko

import time

import os

import getpass

import re

import socket

import sys

# import datetime

#切换到本地E盘E盘python_test文件夹

#os.chdir(r'G:\Python\ssh_maintence_fetch')

#输入账号和密码

username = raw_input('username: ')

password = getpass.getpass('Password: ')

#读取IP_address,以及command中的信息

IP_address_file = open('IP_address.txt','r')

try_result = open('unreachable.txt','a+')

#result = []

# ssh the ip in the IP_address command

for line in IP_address_file.readlines():

try:

ip = line.strip()

ssh_client = paramiko.SSHClient()

ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh_client.connect(hostname=ip, username=username, password=password)

time.sleep(1)

print ("Sucessfully login to ", ip)

command = ssh_client.invoke_shell()

file_result = open(ip + '_commandfeedback.txt', 'a+')

time.sleep(0.5)

output = str(command.recv(65535))

#取出output中的hostname字段,并替换{关键字}为{关键字},注意要前面还有回车字符,所以要+2

first_character = output.rfind("\n") + 2

last_character = output.rfind("#")

hostname = output[first_character:last_character]

print hostname

new_hostname = hostname.replace("{关键字A}","{关键字B}")

print new_hostname

# print 'hostname' + ' ' + new_hostname

#将新hostname刷进设备,并回显,并记录到commandfeedback中

command.send('conf ter' + '\n')

time.sleep(0.5)

command.send('hostname '+ new_hostname + '\n')

time.sleep(0.5)

command.send('copy run start' + '\n')

output = str(command.recv(65535))

print output

file_result.seek(0,2)

file_result.write(output)

while re.search(r'complete',output) == None:

time.sleep(3)

output = str(command.recv(65535))

print output

file_result.seek(0,2)

file_result.write(output)

file_result.close()

ssh_client.close()

file_result2 = open('commadresult.txt','a+')

file_result2.seek(0,2)

file_result2.write(ip+' command upload succeeded!\n')

except socket.error:

try_result.write(ip+ '\n')

try_result.close()

IP_address_file.close()

file_result2.close()

关于为什么要在rfind的时候+2,因为在执行command.send('hostname '+ new_hostname + '\n')的时候,newhostname前总会换行,使用print list(new_hostname)可以发现前面多了一个\r,所以直接+2了,当然我们也可以在rfind的时候查找‘\r’确认第一个字符的位置。

python网络运维书籍_菜鸟级python自学者的python网络运维尝试相关推荐

  1. python必读5本书籍_免费下载!5本从Python入手机器学习的必备电子书!(附链接)...

    大数据文摘授权转载自数据派THU 作者:Richard Gall 编译:车前子.丁楠雅 今天,机器学习已成为软件工程所有领域中最重要的发展趋势之一.这门技术不再局限于研究者和数据分析者,从网络安全到网 ...

  2. python用于数据分析的书籍_做数据分析不得不看的书有哪些?

    书不在多,而在于精.我分析了知乎上推荐的数据分析类书籍的回答,最终总结了以下内容,形成了这篇文章. 数据分析类的书有很多,可以按数据分析的流程分类,每个流程应该看哪些书籍. 也可以按照通识类和工具类进 ...

  3. python程序员专用壁纸_神级python程序员分享的让小白30分钟快速上手的一张神图,赶快收藏!...

    原标题:神级python程序员分享的让小白30分钟快速上手的一张神图,赶快收藏! 现在很多人学编程都把Python作为入门语言,其实这是个很不错的选择,那么你知道新手如何学Python吗?小编给大家分 ...

  4. python 如何判断一个函数执行完成_菜鸟来也!50行Python代码一键整理桌面

    我的老同学小马忙于找工作,整天被各种照片信息,和面试笔试资料搞的焦头烂额,很多文件来不及处理,全部都堆放在了一起,久而久之,就造成了桌面非常的混乱,如下图所示: 乱糟糟的桌面,让心情也会潜移默化的变得 ...

  5. python的设计理念和应用_菜鸟爱Python第1期:Python发展史?对Python最深刻的解读...

    这是胜天半子的第1篇原创. 前言 也许你不是一名程序员,也许你甚至都不是做IT行业的,但你的定位只要不是被时代所抛弃的老年人,你,多多少少应该听过"Python"一词,多多少少看到 ...

  6. python难度大的题_早看少被坑!Python 最难的问题

    超过十年以上,没有比解释器全局锁(GIL)让Python新手和专家更有挫折感或者更有好奇心. 未解决的问题 随处都是问题.难度大.耗时多肯定是其中一个问题.仅仅是尝试解决这个问题就会让人惊讶.之前是整 ...

  7. python构造方法与java区别_一张图秒懂Java和Python的区别,你知道吗?

    对于程序员的语言千千万JAVA\C\C++\PHP\Python不同的程序员使用着不同的语言,做着功能相似需求却不同的产品. 但是最近Python在人工智能的推动下突然出现在人们的面前,其实和Java ...

  8. python 数组合并排重_并排深度学习:Julia vs Python

    python 数组合并排重 Julia could possibly be the biggest threat to Python. For a variety of applications, J ...

  9. 编程入门python java和c语言_学习编程适不适合从Python入门?哪种语言更适合入门?...

    本文对比了C语言和Python语言,分析它们作为编程入门语言各自的利弊,并给出了我推荐的编程学习道路. 我本身已经入门了Python脚本语言,在进阶C语言和JAVA语言后,Python重学就轻松很多, ...

最新文章

  1. 这一次,你能彻底搞懂 Flink!
  2. Ansible5:Ad-hoc常用模块
  3. linux做单臂路由实现trunk 使vlan之间通信
  4. leetcode算法题--Count and Say
  5. 虚荣的程序员--恶心,真的想吐
  6. java hashmap实例,关于java中的HashMap的实例操作
  7. Yarn 资源调度框架
  8. jstl core and jstl fn
  9. Gsview裁剪EPS文件
  10. vmware下安装rhel5
  11. 每天CookBook之JavaScript-073
  12. Visual studio 番茄助手过期解决方案
  13. 杨振宁100岁了,诺奖都不算他的人生巅峰
  14. CCF NOI 2022获奖名单
  15. python编程快速上手 ----让繁琐的工作自动化 (2.自动化任务)
  16. hexo博客yilia主题作者名字的更改
  17. Dinky 0.6.2 已发布,优化 Flink 应用体验
  18. Linux密码破解(非远程爆破)
  19. 音频格式转换(ffmpeg)
  20. 虾米网音乐真实地址解析

热门文章

  1. uniapp form表单validator函数校验
  2. 【Unity】项目源码——简单2D空战游戏
  3. 日本人收了ARM天也不会塌 苹果可以转战MIPS
  4. python中 .py .pyc .pyw .pyo .pyd各后缀文件区别
  5. php魔术方法call,PHP魔术方法__call()
  6. 第五讲 一元函数微分学的几何应用
  7. #java读书笔记#面向对象2
  8. 吴恩达机器学习--多类别分类:一对多
  9. malloc动态创建二维数组(C语言)
  10. mysql创建表格显示1064错误_尝试创建表时出现错误1064(Error 1064 when trying to create a table)...