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


    一、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表格
  • 相关阅读:
    Object.assign () 和深拷贝
    在关机或重启前,关闭有道云笔记
    OpenSSL生成加密证书.cer和.pfx
    scrcpy 安卓投屏
    C#.NET AES CBC 加密
    华擎B365M ITX ,SSD WIN7 电脑卡顿,4K异常,9代 I7
    华擎B365 BIOS 设置来电启动,来电自启,来电后开机
    打开 gpedit.msc 组策略时弹出错误提示,"找不到资源 string.Advanced_EnableSSL3Fallback ”。
    将手机声音通过蓝牙输入到WIN10电脑
    CSS选择器——cssSelector定位方式详解
  • 原文地址:https://www.cnblogs.com/chenchao1990/p/5110763.html
Copyright © 2020-2023  润新知