码迷,mamicode.com
首页 > 编程语言 > 详细

Python自动化运维开发之paramiko(远程批量管理服务器)

时间:2016-07-11 01:26:38      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:脚本   开发   python   paramiko   运维自动化   

一:简介

    paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助。

二:安装方法

   安装paramiko有两个先决条件,python和另外一个名为PyCrypto的模块。唯一麻烦的就是安装PyCrypto时,需要GCC库编译,如果没有GCC库会报错,会导致PyCrypto以及paramiko无法安装。在安装过程中,遇到报错,百度基本可以找到解决方法!

以下以32 位的windows 7为例,说明paramiko的安装过程

1:安装python2.2以上版本都可以,我使用的是2.7,安装过程略,并假设安装目录是D:\ProgramFiles\Python27

2:判断本地是否安装了GCC,并在PATH变量可以找到,如果没有,可使用windows 版的GCC,即MinGW,下载地址:http://sourceforge.net/projects/mingw/,然后运行下载后的exe文件进行网络安装,假设目录为C:\mingw,在PATH中加入 C:\mingw\bin,并在D:\ProgramFiles\Python27\lib\distutils下新建一个名称是distutils.cfg的文件,填入:

[build]
compiler=mingw32

3:下载PyCrypto ,安装包见本文章附件

安装PyCrypto:

·        解压缩

·        dos下进入解压缩的目录,运行

D:\ProgramFiles\Python27\python.exe setup.py build
D:\ProgramFiles\Python27\python.exe setup.py install

·        安装测试

  运行python.exe,在提示符下输入:

import  Crypto

  如果没有出现错误提示,说明Crypto安装成功

4:下载paramiko,地址是http://www.lag.net/paramiko/,安装包见本文章附件

·        解压缩

·        dos下进入解压缩的目录,运行

D:\ProgramFiles\Python27\python.exe setup.py build
D:\ProgramFiles\Python27\python.exe setup.py install

·        测试paramiko

  运行python.exe,在提示符下输入:

import  paramiko

  如果没有出现错误提示,说明paramiko安装成功,如下图为我电脑的输出:

技术分享

三:程序调用

‘‘‘
Python远程登录Linux服务器并执行相关命令
‘‘‘
#!/usr/bin/python
import paramiko
port=22
IP="192.168.1.144"
username="testread"
password="123456"

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(IP,port,username, password)

alarm_cmd="cat /cpic/jtvp/files/alarm/CPIC_P17.log|wc -l"
ctilog_cmd="cat /cpic/jtvp/vpclog/cti.log|grep ‘returned value = 01‘|wc -l"

stdin, stdout, stderr = ssh.exec_command(alarm_cmd) #执行命令,搜索该告警日志条数
print stdout.readlines()
stdin, stdout, stderr = ssh.exec_command(ctilog_cmd)#执行命令,搜索关键字,如有则告警
print stdout.readlines()
ssh.close()
---------------------------------------
程序输出:
[u‘233\n‘] ---》有233条记录
[u‘0\n‘]  ----》关键字搜索,0个
#从widnows端远程下载linux服务器上的文件
t = paramiko.Transport((IP,port))
t.connect(username=username,password=password) 

sftp = paramiko.SFTPClient.from_transport(t)
remotepath=‘/cpic/jtvp/files/alarm/CPIC_P17.log‘
localpath=‘c:/CPIC_P17.log‘
sftp.get(remotepath, localpath)
print "--->下载成功"
t.close()
----------------------------------------
程序输出:
--->下载成功
查看本地目录,文件的确下载下来了。
#上传文件到远程服务器,
t= paramiko.Transport((IP,port))
t.connect(username=username,password=password) 
sftp = paramiko.SFTPClient.from_transport(t)
remotepath=‘/cpic/jtvp/files/alarm/spider.txt‘
localpath=‘c:/spider.txt‘
sftp.put(localpath,remotepath)
print "--->上传成功"
t.close()
----------------------------------------
程序输出:
--->上传成功
远程登录Linux服务器,检查是否上传成功。

    通过上述的操作,批量管理Linux服务器变得非常简单,为后续的自动化运维提供了条件。可以自动化发布,自动化系统信息收集,告警日志收集,应用日志扫描等等,再调用告警接口,触发告警,让运维更加轻松和高效!




  



本文出自 “催花雨” 博客,请务必保留此出处http://chenwen.blog.51cto.com/771416/1815210

Python自动化运维开发之paramiko(远程批量管理服务器)

标签:脚本   开发   python   paramiko   运维自动化   

原文地址:http://chenwen.blog.51cto.com/771416/1815210

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!