首页 > 其他 > 详细

用paramiko将执行的结果存入excel表格

时间:2016-01-07 20:06:00      阅读:394      评论:0      收藏:0      [点我收藏+]

一、paramiko

  利用paramiko可以远程控制服务器,上传和下载文件。

 1、paramiko密码登录方式:

技术分享
 1 #!/usr/bin/env python
 2 #coding:utf-8import paramiko
 3 
 4 ssh = paramiko.SSHClient()    #创建链接
 5 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 6 #在远程服务器上设置签名。第一次登录服务器时,会输入YES/No 
 7 #在用户目录/.ssh/known_hosts文件里会有主机的登录签名。如果没有记录,在第一次登录时显示YES/NO
 8 ssh.connect(192.168.1.108, 22, alex, 123)        #连接输入的信息
 9 stdin, stdout, stderr = ssh.exec_command(df)        #执行命令
10 print stdout.read()    #打印结果
11 ssh.close();    #关闭链接            
paramiko密码登录

 2、paramiko密钥对登录方式:

  密钥的方式,
  1.生成密钥对
  2.将自己的公钥传至目标服务器
  3.提取自己私钥的路径
  4.建立连接
技术分享
 1 ssh-keygen -t rsa    #生成一个自己的公钥
 2 ssh-copy-id -i chenchao@192.168.1.100    #发送自己的公钥到目标服务器的登录用户的家目录下,默认会到当前用户的目录下去找公钥  ~/.ssh/id_rsa.pub,下次在登录时就不在需要密码了
 3 
 4 import paramiko
 5 
 6 private_key_path = /root/.ssh/id_rsa    #声明自己的私钥在哪里  private:私有的
 7 key = paramiko.RSAKey.from_private_key_file(private_key_path)    #取出私钥,保存
 8 ssh = paramiko.SSHClient()    #创建链接
 9 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())    #第一次登录时,自动设置签名 YES/NO
10 ssh.connect(主机名 , 端口, username=用户名, pkey=key)        #登录的信息
11 stdin, stdout, stderr = ssh.exec_command(df)        #执行命令
12 print stdout.read()
13 ssh.close()
paramiko密钥对登录

  3、远程上传下载文件: 

技术分享
 1 #!/usr/bin/env python
 2 #conding:utf-8
 3 
 4 import paramiko
 5 
 6 
 7 t = paramiko.Transport((192.168.1.107,22))  #创建链接
 8 t.connect(username=root,password=pwd@123)  #输入目标服务器的用户名和密码
 9 
10 sftp = paramiko.SFTPClient.from_transport(t)    #生成连接对象
11 
12 sftp.put(/python/coder/connect.py,/opt/test.py)   #上传  源地址文件  目标地址文件
13 #sftp.get(‘/opt/123.txt‘,‘/python/coder/123.txt‘)        #下载
14 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文件:

    技术分享

    

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3   
4 import csv
5 with open(egg.csv,rb) as f:
6 reader = csv.reader(f)
7 for row in reader:
8 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

    

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3   
 4 import csv
 5 with open(egg2.csv, wb) as csvfile:
 6 spamwriter = csv.writer(csvfile, delimiter= ,quotechar=|, quoting=csv.QUOTE_MINIMAL)
 7 spamwriter.writerow([a, 1, 1, 2, 2])
 8 spamwriter.writerow([b, 3, 3, 6, 4])
 9 spamwriter.writerow([c, 7, 7, 10, 4])
10 spamwriter.writerow([d, 11,11,11, 1])
11 spamwriter.writerow([e, 12,12,14, 3])

  技术分享

  这样存进去的是存到一列了 跟我们原本意图存进5列不一样

  使用python的csv生成excel所兼容的csv文件的话,主要就是创建writer时的参数时要有dialect=’excel’

  代码修改为:

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3   
 4 import csv
 5 with open(egg2.csv, wb) as csvfile:
 6 spamwriter = csv.writer(csvfile,dialect=excel)
 7 spamwriter.writerow([a, 1, 1, 2, 2])
 8 spamwriter.writerow([b, 3, 3, 6, 4])
 9 spamwriter.writerow([c, 7, 7, 10, 4])
10 spamwriter.writerow([d, 11,11,11, 1])
11 spamwriter.writerow([e, 12,12,14, 3])

 

  2、利用paramiko与csv结合

技术分享
 1 #!/usr/bin/python
 2 #coding:utf-8
 3 
 4 import paramiko
 5 import csv
 6 
 7 ssh = paramiko.SSHClient()  #创建链接
 8 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())   #设置第一次登录的yes/no
 9 ssh.connect(192.168.1.108,22,root,Pwd@1234)      #密码登录方式
10 stdin,stdout,stderr = ssh.exec_command(esxcli network ip interface ipv4 get)    #执行的命令
11 w = stdout.read()     #拿到执行的结果 字符串格式
12 ssh.close()                   #关闭连接
13 obj = open(read_test,wb+)       #将执行的结果放入文件中保存
14 obj.write(w)      
15 obj.close()
16 
17 with open(read_test,rb) as txt_file:        #打开保存结果的文件
18     with open(test_excel.csv, wb) as excl_file:     #打开一个新文件保存
19         spamwriter = csv.writer(excl_file,dialect=excel)    #创建excel格式的文件对象
20         for line in txt_file.readlines():        #读取结果文件的每一行
21             re = line.split()                            #按照空格分割将每行转为列表
22             spamwriter.writerow(re)            #写入到文件当中
结果存入excel表格

 

用paramiko将执行的结果存入excel表格

原文:http://www.cnblogs.com/chenchao1990/p/5110763.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!