一、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', '') #连接输入的信息
  9. stdin, stdout, stderr = ssh.exec_command('df') #执行命令
  10. print stdout.read() #打印结果
  11. ssh.close(); #关闭链接

paramiko密码登录

 2、paramiko密钥对登录方式:

  1.   密钥的方式,
  1.   1.生成密钥对
  1.   2.将自己的公钥传至目标服务器
  1.   3.提取自己私钥的路径
  1.   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. t = paramiko.Transport(('192.168.1.107',22)) #创建链接
  7. t.connect(username='root',password='pwd@123') #输入目标服务器的用户名和密码
  8.  
  9. sftp = paramiko.SFTPClient.from_transport(t) #生成连接对象
  10.  
  11. sftp.put('/python/coder/connect.py','/opt/test.py') #上传 源地址文件 目标地址文件
  12. #sftp.get('/opt/123.txt','/python/coder/123.txt') #下载
  13. 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', '', '', '', ''])
  8. spamwriter.writerow(['b', '', '', '', ''])
  9. spamwriter.writerow(['c', '', '', '', ''])
  10. spamwriter.writerow(['d', '','','', ''])
  11. spamwriter.writerow(['e', '','','', ''])

  

  这样存进去的是存到一列了 跟我们原本意图存进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', '', '', '', ''])
  8. spamwriter.writerow(['b', '', '', '', ''])
  9. spamwriter.writerow(['c', '', '', '', ''])
  10. spamwriter.writerow(['d', '','','', ''])
  11. spamwriter.writerow(['e', '','','', ''])

  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表格

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. 国际化 native2ascii用法

    cmd下输入: native2ascii -encoding GBK(需要编译成哪种语言) (中文文件路劲) (英文文件路劲) 其他固定 例如 native2ascii -encoding GBK C ...

  2. ORACLE 数据库简单测试

    ORACLE 数据库简单测试 操作系统:Windows 7 – ORACLE:oracle database 10.2.0.4 一.目的 测试 启动监听程序.数据库  非同一个用户的情况,用户是否可以 ...

  3. Alljoyn 概述(2)

    AllJoyn 基本概念 • 总线(Bus) – 实现P2P通信的基础 – AllJoyn 的底层协议类似于D-Bus,相当于是跨设备分布式的 D-Bus • 总线附件(Bus Attachment) ...

  4. cocos2dx解析lua table数据结构 简易版.

    之前一直用xml填配置, cocos2dx自带了xml解析接口, 非常方便. 但是, 接口好用也改变不了xml的结构字符太多, 书写麻烦, 乱七八糟的事实. 很早就想换lua, 无奈引擎没有现成接口, ...

  5. Oracle IN 传递字符串参数查询失效

    在写存储过程中有如下代码: FOR a IN ( SELECT a.svo_no,a.AUDIT_NO,a.order_id FROM TT_PI_MODEL_REL a ) LOOP SELECT ...

  6. applicationContext.xml详解(转)

    转自:http://blog.csdn.net/heng_ji/article/details/7022171,写的很好,省得以后找,放此处 想必用过Spring的程序员们都有这样的感觉,Spring ...

  7. Tenth Line

    How would you print just the 10th line of a file? For example, assume that file.txt has the followin ...

  8. mysql数据类型——整型INT(m)

    1.整形分为四种 tinyint smallint mediumint int bigint 注意: 右侧的取值范围是在未加unsigned关键字的情况下,如果加了unsigned,则最大值翻倍,如t ...

  9. MySql数据库4【命令行赋权操作】

    MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant selec ...

  10. DEDECMS栏目自定义字段添加

    用到的文件: catalog_add.htm  路径:\dede\templets\ catalog_edit.htm  路径:\dede\templets\  catalog_add.php  路径 ...