python用paramiko将执行的结果存入excel表格
一、paramiko
利用paramiko可以远程控制服务器,上传和下载文件。
1、paramiko密码登录方式:
#!/usr/bin/env python
#coding:utf-8import paramiko ssh = paramiko.SSHClient() #创建链接
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#在远程服务器上设置签名。第一次登录服务器时,会输入YES/No
#在用户目录/.ssh/known_hosts文件里会有主机的登录签名。如果没有记录,在第一次登录时显示YES/NO
ssh.connect('192.168.1.108', 22, 'alex', '') #连接输入的信息
stdin, stdout, stderr = ssh.exec_command('df') #执行命令
print stdout.read() #打印结果
ssh.close(); #关闭链接
paramiko密码登录
2、paramiko密钥对登录方式:
密钥的方式,
1.生成密钥对
2.将自己的公钥传至目标服务器
3.提取自己私钥的路径
4.建立连接
ssh-keygen -t rsa #生成一个自己的公钥
ssh-copy-id -i chenchao@192.168.1.100 #发送自己的公钥到目标服务器的登录用户的家目录下,默认会到当前用户的目录下去找公钥 ~/.ssh/id_rsa.pub,下次在登录时就不在需要密码了 import paramiko private_key_path = '/root/.ssh/id_rsa' #声明自己的私钥在哪里 private:私有的
key = paramiko.RSAKey.from_private_key_file(private_key_path) #取出私钥,保存
ssh = paramiko.SSHClient() #创建链接
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #第一次登录时,自动设置签名 YES/NO
ssh.connect('主机名 ', 端口, username='用户名', pkey=key) #登录的信息
stdin, stdout, stderr = ssh.exec_command('df') #执行命令
print stdout.read()
ssh.close()
paramiko密钥对登录
3、远程上传下载文件:
#!/usr/bin/env python
#conding:utf-8 import paramiko t = paramiko.Transport(('192.168.1.107',22)) #创建链接
t.connect(username='root',password='pwd@123') #输入目标服务器的用户名和密码 sftp = paramiko.SFTPClient.from_transport(t) #生成连接对象 sftp.put('/python/coder/connect.py','/opt/test.py') #上传 源地址文件 目标地址文件
#sftp.get('/opt/123.txt','/python/coder/123.txt') #下载
t.close()
paramiko传送文件
1、先将执行的结果放入一个文件中
2、逐行读取文件,将每行的内容按照空格分割成列表
3、在利用csv模块方法,将分割的列表写入到csv后缀的表格文件中
二、将paramiko执行的结果放入excel表格文件里
1、python中自带csv模块
- 用python读取csv文件
csv是逗号分隔符格式 一般我们用的execl生成的格式是xls和xlsx 直接重命名为csv的话会报错:
Error: line contains NULL byte
insun解决方案:出错原因是直接是把后缀为xls的execl文件重命名为csv的 正常的要是另存为csv文件 就不会报错了
譬如我们有这么个csv文件:

#!/usr/bin/env python
# -*- coding:utf-8 -*- import csv
with open('egg.csv','rb') as f:
reader = csv.reader(f)
for row in reader:
print row
打印出来是这样的list
['a', '1', '1', '1']
['a', '2', '2', '2']
['b', '3', '3', '3']
['b', '4', '4', '4']
['b', '5', '5', '5']
- 用python写入并生成cs
#!/usr/bin/env python
# -*- coding:utf-8 -*- import csv
with open('egg2.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=' ',quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(['a', '', '', '', ''])
spamwriter.writerow(['b', '', '', '', ''])
spamwriter.writerow(['c', '', '', '', ''])
spamwriter.writerow(['d', '','','', ''])
spamwriter.writerow(['e', '','','', ''])

这样存进去的是存到一列了 跟我们原本意图存进5列不一样
使用python的csv生成excel所兼容的csv文件的话,主要就是创建writer时的参数时要有dialect=’excel’
代码修改为:
#!/usr/bin/env python
# -*- coding:utf-8 -*- import csv
with open('egg2.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile,dialect='excel')
spamwriter.writerow(['a', '', '', '', ''])
spamwriter.writerow(['b', '', '', '', ''])
spamwriter.writerow(['c', '', '', '', ''])
spamwriter.writerow(['d', '','','', ''])
spamwriter.writerow(['e', '','','', ''])
2、利用paramiko与csv结合
#!/usr/bin/python
#coding:utf-8 import paramiko
import csv ssh = paramiko.SSHClient() #创建链接
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #设置第一次登录的yes/no
ssh.connect('192.168.1.108',22,'root','Pwd@1234') #密码登录方式
stdin,stdout,stderr = ssh.exec_command('esxcli network ip interface ipv4 get') #执行的命令
w = stdout.read() #拿到执行的结果 字符串格式
ssh.close() #关闭连接
obj = open('read_test','wb+') #将执行的结果放入文件中保存
obj.write(w)
obj.close() with open('read_test','rb') as txt_file: #打开保存结果的文件
with open('test_excel.csv', 'wb') as excl_file: #打开一个新文件保存
spamwriter = csv.writer(excl_file,dialect='excel') #创建excel格式的文件对象
for line in txt_file.readlines(): #读取结果文件的每一行
re = line.split() #按照空格分割将每行转为列表
spamwriter.writerow(re) #写入到文件当中
结果存入excel表格
python用paramiko将执行的结果存入excel表格的更多相关文章
- python之paramiko 远程执行命令
有时会需要在远程的机器上执行一个命令,并获得其返回结果.对于这种情况,python 可以很容易的实现. 1 .工具 Python paramiko 1) Paramiko模块安装 在Linux的Ter ...
- python 直接存入Excel表格
def write_excels(self, document): outwb = openpyxl.Workbook() outws = outwb.create_sheet(index=0) fo ...
- python工具 - 从文件名读取特定信息到excel表格
情景:文件名中包含学号和用户名,其中用户名在前学好在后,学号为2位,如harry33.txt.natasha12.txt. 要求:将多个文件名中的用户名与学号分开并保存到excle中. 代码部分: i ...
- 将txt文件数据存入excel表格
前言 最近使用Appium自动化在测试设备配网的情况,需要记录每次成功与否和耗时时间. 由于App不是很稳定,执行一段时间会奔溃,因此数据只能通过追加的形式写入到txt文件. 实现过程 存储在txt文 ...
- 使用python读取京东pdf发票信息导出到excel表格中
代码 #!/usr/bin/env python # -*- coding: utf-8 -*- """ pip install pdfminer3k pip insta ...
- 用python批量处理Excel表格,处理结果又快又好,做办公室最靓的那个仔
使用python批量处理Excel数据 让你根据Excel上所有人的身份证号码,提取出公司员工的生日 让你每个月都将公司所有人的考勤数据整理一下 类似这样的格式化的重复操作,你还在每次都使用的 ...
- Python学习总结 06 paramiko 远程执行命令
有时会需要在远程的机器上执行一个命令,并获得其返回结果.对于这种情况,python 可以很容易的实现. 1 工具 Python paramiko 1) Paramiko模块安装 在Linux的Term ...
- Python通过paramiko批量远程主机执行命令
一.前言 在日常运维的过程中,经常需要登录主机去执行一些命令,有时候需要登录一批主机执行相同的命,手动登录执行的化效率太慢, 所以可以通过Python的paramiko模块批量执行,本篇文章基于pyt ...
- 如何进行服务器的批量管理以及python 的paramiko的模块
最近对公司的通道机账号进行改造管理,全面的更加深入的理解了公司账号管理的架构.(注:基本上所有的机器上的ssh不能使用,只有部分机器能够使用.为了安全的角度考虑,安装的不是公版的ssh,而都是定制版的 ...
随机推荐
- (转载)[FFmpeg]使用ffmpeg从各种视频文件中直接截取视频图片
你曾想过从一个视频文件中提取图片吗?在Linux下就可以,在这个教程中我将使用ffmpeg来从视频中获取图片. 什么是ffmpeg?What is ffmpeg? ffmpeg是一个非常有用的命令行程 ...
- rdlc报表
也是第一次接触报表这个东西.现在在我理解,报表无非就是两个内容,格式和数据. 格式没有多少了解,就记录了,以后再续.数据的绑定和结果的显示是怎么实现的呢? 今天的主角就是rdlc这个文件和Report ...
- powerdesigner设置唯一键,但不是主键的方式
[转载]http://blog.csdn.net/cnham/article/details/6676650 唯一约束 唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的 ...
- IDEA SVN1.8 问题解决
转自 http://blog.jetbrains.com/idea/2013/12/subversion-1-8-and-intellij-idea-13/
- linux常用命令之tail
从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的 ...
- java设计模式——单例(Singleton)模式
在某些场景,你需要找到一个承担职责的对象,并且这个对象是他所属类的唯一实例.此时可以使用单例模式. 单例模式的意图是为了确保一个类有且仅有一个实例,并为他提供一个全局的访问点.创建一个担当独一无二角色 ...
- php之购物车类思路及代码
<?php /* 购物车类 1.整站范围内,购物车--全局有效 解决:把购物车的信息,放在session里 2.既然全局有效,购物车的实例只有一个 解决:单例模式 技术选型:session+单例 ...
- PHPCMS v9 自定义表单添加验证码验证
1. 在 \phpcms\templates\default\formguide\show.html 中添加验证码显示 <input type="text" id=" ...
- 百度的一个Ajax跨域方法 JavaScript是没有域的限制
baidu的通行证处理都是在二级域名passport.baidu.com中处理的,但是baidu很多地方登录都好像是用ajax处理的,他是怎么做的呢?研究了一下,发现一个小技巧. 在http://zh ...
- 排他锁Lock
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...