python组建之paramiko的简介和简单使用

参考文献:


http://www.cnblogs.com/gannan/archive/2012/02/06/2339883.html

pydoc paramiko

paramiko简介

paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。

由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux, Solaris, BSD, MacOS
X, Windows等,paramiko都可以支持,因此,如果需要使用SSH从一个平台连接到另外一个平台,进行一系列的操作时,paramiko是
最佳工具之一。

举个常见的例子,现有这样的需求:需要使用windows客户端,远程连接到Linux服务器,查看上面的日志状态,大家通常使用的方法会是:

1:用telnet

2:用PUTTY

3:用WinSCP

4:用XManager等…

那现在如果需求又增加一条,要从服务器上下载文件,该怎么办?那常用的办法可能会是:

1:Linux上安装FTP并配置

2:Linux上安装Sambe并配置…

大家会发现,常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了。

使用paramiko可以很好的解决以上问题,比起前面的方法,它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助。

paramiko安装

本人用的最简单的安装方式:

?





1

$ easy_install paramiko

 

paramiko函数简介

目前仅仅用的下面的这两个class,如果以后还使用其他的模块的话,继续添加!

transport


简介:

An SSH Transport attaches to a stream (usually a socket), negotiates an encrypted session, authenticates, and then creates stream tunnels, called `channels <.Channel>`, across the session.  Multiple channels can be multiplexed across a single session (and often are, in the case of port forwardings).

channel

简介:

?





1

A secure tunnel across an SSH `.Transport`.  A Channel is
meant to behave  like a socket, and
has an API that should be indistinguishable from
the   Python socket API.

paramiko简单实例应用

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

#/usr/bin/env python

import
paramiko

import
sys

import
traceback

import
socket

import
os

import
getpass

# setup logging

paramiko.util.log_to_file(‘demo.log‘)

hostname =
‘192.168.1.253‘

port =
22

username =
‘apache‘

# now  connect

try:

    sock =
socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    sock.connect((hostname, port))

except
Exception as e:

    print("****   Connect failed ****")

    traceback.print_exc()

    sys.exit(1)

try:

    t =
paramiko.Transport(sock)

    try:

        t.start_client()

    except
paramiko.SSHException:

        print(‘****  SSH negotiation failed.  ****‘)

        sys.exit(1)

    try:

        keys =paramiko.util.load_host_keys(os.path.expanduser(‘~/.ssh/known_hosts‘))

    except
IOError:

        try:

            keys =
paramiko.util.load_host_keys(os.path.expanduser(‘~/ssh/known_hosts‘))

        except
IOError:

            print(‘****  Unable to open host keys file  ****‘)

            keys =
{}

    # check server‘s host key -- this is important.

    key =
t.get_remote_server_key()

    if
hostname not
in keys:

        print(‘*** WARNING: Unknown host key!‘)

    elif
key.get_name() not
in keys[hostname]:

        print(‘*** WARNING: Unknown host key!‘)

    elif
keys[hostname][key.get_name()] !=
key:

        print(‘*** WARNING: Host key has changed!!!‘)

        sys.exit(1)

    else:

        print(‘*** Host key OK.‘)

    pw =
getpass.getpass(‘Password for %[email protected]%s: ‘
% (username, hostname))

    t.auth_password(username, pw)

    chan =
t.open_session()

    chan.get_pty()

    chan.invoke_shell()

    print(‘**** Here we go! \n‘)

    chan.send(‘pwd‘)

    print
chan.recv(9999)

    chan.close()

    t.close()

except
Exception as e:

    print(‘*** Caught exception: ‘
+ str(e.__class__) +
‘: ‘ + str(e))

    traceback.print_exc()

    try:

        t.close()

    except:

        pass

    sys.exit(1)

  

时间: 2024-10-30 05:41:53

python组建之paramiko的简介和简单使用的相关文章

[Python Fabric] [SSH] Mac OS X 10.9 + Vagrant虚拟环境使用Python Fabric进行SSH远程登录的简单实验

1. ssh客户端生成key 1 $ ssh-keygen -t rsa -b 4096 2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/Users/(username)/.ssh/id_rsa): vagrantid_rsa 4 Enter passphrase (empty for no passphrase): 5 Enter same passphrase again: 6

Protobuf 简介及简单应用

Protobuf 是 protocol buffers 的缩写. 根据官网的说法, protocol buffers 与平台无关, 与语言无关, 实现数据序列化的一种手段. 正如名字一样, protobuf 可以将数据按照规定的协议(protocol)序列化为二进制的数据(buffers). 序列化的数据基本上可以保证类型安全, 并且可以压缩大小. 这篇文章将简单说说关于 protobuf 的优点和问题, 如果有使用的需要可以作为参考 安装和使用 Protobuf 是在 github 上开源的项

python的列表,元组和字典简单介绍

引 入 java                                   python 存取多个值:数组或list集合 ------------------------> 列表,元组 key-value格式:    Map        ------------------------>    字典 自己学习发现,java跟python这两门面向对象语言在数据类型的定义上,很多思想都是互通的,这里不说java,简单介绍一下python的列表,元组和字典. 一.列表 List: 最通

实时计算,流数据处理系统简介与简单分析

转自:http://www.csdn.net/article/2014-06-12/2820196-Storm 摘要:实时计算一般都是针对海量数据进行的,一般要求为秒级.实时计算主要分为两块:数据的实时入库.数据的实时计算.今天这篇文章详细介绍了实时计算,流数据处理系统简介与简单分析. 编者按:互联网领域的实时计算一般都是针对海量数据进行的,除了像非实时计算的需求(如计算结果准确)以外,实时计算最重要的一个需求是能够实时响应计算结果,一般要求为秒级.实时计算的今天,业界都没有一个准确的定义,什么

python环境安装paramiko模块

下载软件安装包并安装,官方网站https://pypi.python.org/pypi/paramiko/ [[email protected] ~]# wget https://pypi.python.org/packages/source/p/paramiko/paramiko-1.14.0.tar.gz#md5=e26324fd398af68ad506fe98853835c3 [[email protected] ~]# tar xf paramiko-1.14.0.tar.gz  [[e

python批量执行paramiko

puppet 分发软件  同步文件 ssh-批量执行-paramiko-比较好的模块 直接修改远端主机的host文件 python批量执行paramiko,布布扣,bubuko.com

特殊权限简介(简单的理解)

特殊权限: suid:运行程序时,相应的进程的属主是程序文件自身的属主,而不是启动者. chmod u+s(u-s) file sgid:运行某个程序时,对应进程的属组是程序文件自身的属组,而不是启动者的所属的基本组.(常常与sticky一起使用,控制公共文件,组人能修改所有文件不能删除别人文件) chmod g+s(g-s) file sticky:在一个公共的目录中,每个人都可以创建文件,删除自己的文件,但不能删除别人的文件 chmod o+t filedir 特殊权限简介(简单的理解),布

Python中基本的读文件和简单数据处理

Python中基本的读文件和简单数据处理 暂无评论 DataQuest上面的免费课程(本文是Python基础课程部分),里面有些很基础的东西(csv文件读,字符串预处理等),发在这里做记录.涉及下面六个案例: Find the lowest crime rate(读取csv文件,字符串切分,for循环和if判断过滤数据) Discover weather pattern in LA(for循环和if判断进行频数统计) Building a Spell Checker(词频统计,字符串预处理,字典

Robot Framework-工具简介及简单使用

界面详解 Project.Suite页面 项目结构:整修项目中所有结构显示及相关引用文件的显示,树型结果展示.可选择针对部分TestCase进行执行 引用:添加外部引用包.资源.变量.失败帮助 参数:添加变量.数组 数据:使用TDD时,此处可添加一些测试引用数据 TestCase页面 设置区:主要用来配制此TestCase执行阶段的的操作 Documentation:说明,可添加TestCase的说明.上下文.参数说明.业务等.无内容限制 Setup:执行用例前可进行的一些设置,数据初始化.上下