python中paramiko模块的使用

paramiko是python一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接
1、可以远程操作服务器文件

例如:
df:查看磁盘使用情况
mkdir:创建目录
mv/cp/mkdir/rmdir:对文件或目录进行操作
/sbin/service/ xxxservice start/stop/restart:启动、停止、重启某服务
netstat -ntl |grep 8080:查看8080端口的使用情况 
或者 nc -zv localhost :查看所有端口的使用情况 
find / -name XXX:查找某文件 等等

2、可以实现远程文件的上传,下载(类似于ssh的scp功能)

首先安装paramiko
pip install paramiko
但是安装paramiko需要先安装一个依赖包叫PyCrypto的模块。PyCrypto是python编写的加密工具包,支持的各种加密算法(主要有:MD2 128 bits;MD4 128 bits;MD5 128 bits;RIPEMD 160 bits;SHA1 160 bits;SHA256 256 bits;AES 16, 24, or 32 bytes/16 bytes;ARC2 Variable/8 bytes;Blowfish Variable/8 bytes;CAST Variable/8 bytes;DES 8 bytes/8 bytes ;DES3 (Triple DES) 16 bytes/8 bytes;IDEA 16 bytes/8 bytes ;RC5 Variable/8 bytes等等。)

具体实例代码如下:
1、实现简单的命令操作

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3
 4 import paramiko
 5
 6 #创建ssh对象
 7 ssh = paramiko.SSHClient()
 8
 9 #允许连接不在know_host中的主机
10 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
11
12 #连接服务器
13 ssh.connect(hostname=‘192.168.1.1‘,port=22,username=‘user‘,password=‘pwd‘)
14
15 #执行命令
16 stdin, stdout, stderr = ssh.exec_command(‘cd home;ls -l‘)
17
18 #执行结果
19 #result = stderr.read() #如果有错误则打印
20 result = stdout.read()
21 print result
22 #关闭连接
23 ssh.close()

2、实现远程上传

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # Author:Eric.yue
 4
 5 import paramiko,os
 6
 7 class Paramiko_put(object):
 8     def __init__(self,local_dir,remote_dir):
 9         self.host = ‘192.168.1.1‘
10         self.username = ‘user‘
11         self.passwd = ‘pwd‘
12         self.port = 22
13         self.local_dir = local_dir
14         self.remote_dir = remote_dir
15         self.tt = None
16
17     def pk_connect(self):
18         self.tt = paramiko.Transport((self.host, self.port))
19         self.tt.connect(username = self.username, password = self.passwd)
20         try:
21             return paramiko.SFTPClient.from_transport(self.tt)
22         except Exception as e:
23             print ‘Connect error:‘,e
24             exit()
25
26     def put_file(self):
27         sftp = self.pk_connect()
28         files = os.listdir(self.local_dir)
29         cnt = 0
30         for file in files:
31             sftp.put(os.path.join(self.local_dir, file), os.path.join(self.remote_dir, file))
32             cnt += 1
33
34         if cnt == len(files):
35             print str(cnt) +‘ files put successful‘
36         else:
37             print ‘put failure‘
38
39     def __del__(self):
40         self.tt.close()
41
42 pk = Paramiko_put(‘/home/mywork/test/day8‘,‘/home/mywork/test/day8‘)
43 pk.put_file()

3、实现远程下载

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # Author:Eric.yue
 4
 5
 6 import paramiko,os
 7
 8 class Paramiko_get(object):
 9     def __init__(self,remote_dir,local_dir):
10         self.host = ‘192.168.1.1‘
11         self.username = ‘user‘
12         self.passwd = ‘pwd‘
13         self.port = 22
14         self.local_dir = local_dir
15         self.remote_dir = remote_dir
16         self.tt = None
17
18     def pk_connect(self):
19         self.tt = paramiko.Transport((self.host, self.port))
20         self.tt.connect(username = self.username, password = self.passwd)
21         try:
22             return paramiko.SFTPClient.from_transport(self.tt)
23         except Exception as e:
24             print ‘Connect error:‘,e
25             exit()
26
27     def get_file(self):
28         sftp = self.pk_connect()
29         files = sftp.listdir(self.remote_dir)
30         cnt = 0
31         for file in files:
32             sftp.get(os.path.join(self.remote_dir, file),os.path.join(self.local_dir, file))
33             cnt += 1
34
35         if cnt == len(files):
36             print str(cnt) +‘ files get successful‘
37         else:
38             print ‘get failure‘
39
40     def __del__(self):
41         self.tt.close()
42
43 pk = Paramiko_get(‘/home/inf/mywork/day8‘,‘/home/mywork/day8‘)
44 pk.get_file()

温馨提示:实现上传下载功能时要保证目录存在,有可操作权限哦!

时间: 2024-07-31 04:36:02

python中paramiko模块的使用的相关文章

Python中paramiko模块在linux运维中应用

python的paramiko模块可以实现ssh客户端的功能,使用起来也比较简单.但是当服务器非常多的时候,每台服务器上执行完全相同的简单操作,也会花费大量的时间. 下载模块:paramiko.tar.gz使用tar解压后在cd到目录下最后使用rpm安装 rpm -ivh * import paramiko //导入paramiko模块host='192.168.x.xx' //需要远程管理的主机ip ssh=paramiko.SSHClient() //相当于点开xshellssh.set_m

Python之paramiko模块和SQL连接API

堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.con

Python中time模块详解

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST

Python中ConfigParser模块应用

Python中ConfigParser模块应用 Python的ConfigParser模块定义了3个对INI文件进行操作的类 RawConfigParser,ConfigParser和SafeConfigParser.其中RawCnfigParser是最基础的INI文件读取类,ConfigParser.SafeConfigParser支持对%(value)s变量的解析. 下面看看怎样通过ConfigParser类来解析一个ini文件. 配置文件settings.cfg [DEFAULT] myk

python中的模块安装

python中的模块研究: 需要用import导入的模块都是用python实现的. 内建的部分是用c.c++实现的. pypi:第三方的python包. 在windows上安装python: 1.安装python到C:\PythonXX,添加系统环境变量path:C:\PythonXX. 安装pypi库的方法三种方法: 1.在pypi上下载安装包离线安装 cd  $package-dir python   setup.py  install 在windos的cmd上也可以这样安装. 3.用eas

python中threading模块详解(一)

python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thread模块更高层的API来提供线程的并发性.这些线程并发运行并共享内存. 下面来看threading模块的具体用法: 一.Thread的使用 目标函数可以实例化一个Thread对象,每个Thread对象代表着一个线程,可以通过start()方法,开始运行. 这里对使用多线程并发,和不适用多线程并发做

Python中optionParser模块的使用方法[转]

本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. 示例如下: ? 1 2 3 4 5 6 7 8

【转】关于python中re模块split方法的使用

注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于python中re模块split方法的使用 已有 3094 次阅读 2014-3-12 11:30 |系统分类:科研笔记 今天在写一段小代码的时候需要用到re.split()方法,在使用的过程中发现了一个以前不知道的新用法,发现这个用法还是挺实用的,就把它记录下来: >>> m = re.s

python中MySQLdb模块用法实例

篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中MySQLdb模块用法.分享给大家供大家参考.具体用法分析如下: MySQLdb其实有点像php或asp中连接数据库的一个模式了,只是MySQLdb是针对mysql连接了接口,我们可以在python中连接MySQLdb来实现数据的各种操作. python连接mysql的方案有oursql.PyMyS