一、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表格的更多相关文章

  1. python之paramiko 远程执行命令

    有时会需要在远程的机器上执行一个命令,并获得其返回结果.对于这种情况,python 可以很容易的实现. 1 .工具 Python paramiko 1) Paramiko模块安装 在Linux的Ter ...

  2. python 直接存入Excel表格

    def write_excels(self, document): outwb = openpyxl.Workbook() outws = outwb.create_sheet(index=0) fo ...

  3. python工具 - 从文件名读取特定信息到excel表格

    情景:文件名中包含学号和用户名,其中用户名在前学好在后,学号为2位,如harry33.txt.natasha12.txt. 要求:将多个文件名中的用户名与学号分开并保存到excle中. 代码部分: i ...

  4. 将txt文件数据存入excel表格

    前言 最近使用Appium自动化在测试设备配网的情况,需要记录每次成功与否和耗时时间. 由于App不是很稳定,执行一段时间会奔溃,因此数据只能通过追加的形式写入到txt文件. 实现过程 存储在txt文 ...

  5. 使用python读取京东pdf发票信息导出到excel表格中

    代码 #!/usr/bin/env python # -*- coding: utf-8 -*- """ pip install pdfminer3k pip insta ...

  6. 用python批量处理Excel表格,处理结果又快又好,做办公室最靓的那个仔

    使用python批量处理Excel数据     让你根据Excel上所有人的身份证号码,提取出公司员工的生日 让你每个月都将公司所有人的考勤数据整理一下 类似这样的格式化的重复操作,你还在每次都使用的 ...

  7. Python学习总结 06 paramiko 远程执行命令

    有时会需要在远程的机器上执行一个命令,并获得其返回结果.对于这种情况,python 可以很容易的实现. 1 工具 Python paramiko 1) Paramiko模块安装 在Linux的Term ...

  8. Python通过paramiko批量远程主机执行命令

    一.前言 在日常运维的过程中,经常需要登录主机去执行一些命令,有时候需要登录一批主机执行相同的命,手动登录执行的化效率太慢, 所以可以通过Python的paramiko模块批量执行,本篇文章基于pyt ...

  9. 如何进行服务器的批量管理以及python 的paramiko的模块

    最近对公司的通道机账号进行改造管理,全面的更加深入的理解了公司账号管理的架构.(注:基本上所有的机器上的ssh不能使用,只有部分机器能够使用.为了安全的角度考虑,安装的不是公版的ssh,而都是定制版的 ...

随机推荐

  1. Java 6 Thread States and Life Cycle.

    Ref: Java 6 Thread States and Life Cycle This is an example of UML protocol state machine diagram sh ...

  2. The performance between the 'normal' operation and the 'shift' operation.

    First, I gonna post my test result with some code: //test the peformance of the <normal operation ...

  3. Premature optimization is the root of all evil.

    For all of we programmers,we should always remember that "Premature optimization is the root of ...

  4. PE File.

    Figure 1 - PE File The CLR header stores information to indicate that the PE file is a .NET executab ...

  5. VSS Admin 清除密码

    [参阅链接]http://www.cnblogs.com/Zealot/archive/2004/09/18/44309.html the secret is to hack the um.dat f ...

  6. 【转】iOS- 详解文本属性Attributes

    原文: http://www.cnblogs.com/qingche/p/3574995.html?utm_source=tuicool 1.NSKernAttributeName: @10 调整字句 ...

  7. filter过滤器执行顺序

    浏览器请求---->进入过滤器---->进入doFilter方法--->执行chain.doFilter()方法就会放行----->进入业务逻辑方法------>进入过滤 ...

  8. gzip命令

    http://www.cnblogs.com/peida/archive/2012/12/06/2804323.html 减 少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时, ...

  9. 使用程序往Neo4j导入CSV报错

    今天在用程序向Neo4j导入csv文件时,报以下错误: java.net.ConnectException: Connection refused: connect java.rmi.ConnectE ...

  10. 深入Java虚拟机读书笔记第五章Java虚拟机

    Java虚拟机 Java虚拟机之所以被称之为是虚拟的,就是因为它仅仅是由一个规范来定义的抽象计算机.因此,要运行某个Java程序,首先需要一个符合该规范的具体实现. Java虚拟机的生命周期 一个运行 ...