python_way day13 paramiko

paramiko

一、安装

pip3 install paramiko

  

二、使用

1、SSHClient

用于连接远程服务器并执行基本命令

import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname=‘c1.salt.com‘, port=22, username=‘wupeiqi‘, password=‘123‘)

# 执行命令
stdin, stdout, stderr = ssh.exec_command(‘ls‘)
# 获取命令结果
result = stdout.read()

# 关闭连接
ssh.close()

 看代码:

1、ssh = paramiko.SSHClient()
def __init__(self):    """    Create a new SSHClient.    """    self._system_host_keys = HostKeys()    self._host_keys = HostKeys()    self._host_keys_filename = None    self._log_channel = None    self._policy = RejectPolicy()    self._transport = None    self._agent = None

2、ssh.connect(hostname=‘c1.salt.com‘, port=22, username=‘wupeiqi‘, password=‘123‘)

326    t = self._transport = Transport(sock, gss_kex=gss_kex, gss_deleg_creds=gss_deleg_creds)

#其实SSHClient内部就是定义了transport来链接的

import paramiko

#创建transport指定主机地址和端口
transport = paramiko.Transport((‘hostname‘, 22))

#使用transport连接主机
transport.connect(username=‘wupeiqi‘, password=‘123‘)

#创建ssh
ssh = paramiko.SSHClient()

#赋值transport
ssh._transport = transport

stdin, stdout, stderr = ssh.exec_command(‘df‘)
print stdout.read()

transport.close()

SSHClient 封装了 transport

使用公钥链接

import paramiko

private_key = paramiko.RSAKey.from_private_key_file(‘/home/auto/.ssh/id_rsa‘)

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname=‘c1.salt.com‘, port=22, username=‘wupeiqi‘, key=private_key)

# 执行命令
stdin, stdout, stderr = ssh.exec_command(‘df‘)
# 获取命令结果
result = stdout.read()

# 关闭连接
ssh.close()

import paramiko

#定义秘钥位置
private_key = paramiko.RSAKey.from_private_key_file(‘/home/auto/.ssh/id_rsa‘)

#创建transport
transport = paramiko.Transport((‘hostname‘, 22))

#使用transport 指定用户名,指定秘钥
transport.connect(username=‘wupeiqi‘, pkey=private_key)

#连接
ssh = paramiko.SSHClient()

#使用将transport赋值
ssh._transport = transport

#执行命令
stdin, stdout, stderr = ssh.exec_command(‘df‘)

transport.close()

SSHClient 封装了 transport

  

2、SFTPClient

用于连接远程服务器并执行上传下载

基于用户名密码上传下载:

import paramiko

#使用 transport 创建链接
transport = paramiko.Transport((‘hostname‘,22))
transport.connect(username=‘wupeiqi‘,password=‘123‘)

#并且将transport倒入

sftp = paramiko.SFTPClient.from_transport(transport)

# 将location.py 上传至服务器 /tmp/test.py
sftp.put(‘/tmp/location.py‘, ‘/tmp/test.py‘)

# 将remove_path 下载到本地 local_path
sftp.get(‘remove_path‘, ‘local_path‘)

transport.close()
基于公钥密钥上传下载:

3、总结通过上面的ssh 和 sftp 可以看出来paramiko的链接都是使用的transport来实现的

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import paramiko
import uuid

class SSHConnection(object):

    def __init__(self, host=‘172.16.103.191‘, port=22, username=‘wupeiqi‘,pwd=‘123‘):
        self.host = host
        self.port = port
        self.username = username
        self.pwd = pwd
        self.__k = None

    def create_file(self):
        file_name = str(uuid.uuid4())
        with open(file_name,‘w‘) as f:
            f.write(‘sb‘)
        return file_name

    def run(self):
        self.connect()
        self.upload(‘/home/wupeiqi/tttttttttttt.py‘)
        self.rename(‘/home/wupeiqi/tttttttttttt.py‘, ‘/home/wupeiqi/ooooooooo.py)
        self.close()

    def connect(self):
        transport = paramiko.Transport((self.host,self.port))
        transport.connect(username=self.username,password=self.pwd)
        self.__transport = transport

    def close(self):

        self.__transport.close()

    def upload(self,target_path):
        # 连接,上传
        file_name = self.create_file()

        sftp = paramiko.SFTPClient.from_transport(self.__transport)
        # 将location.py 上传至服务器 /tmp/test.py
        sftp.put(file_name, target_path)

    def rename(self, old_path, new_path):

        ssh = paramiko.SSHClient()
        ssh._transport = self.__transport
        # 执行命令
        cmd = "mv %s %s" % (old_path, new_path,)
        stdin, stdout, stderr = ssh.exec_command(cmd)
        # 获取命令结果
        result = stdout.read()

    def cmd(self, command):
        ssh = paramiko.SSHClient()
        ssh._transport = self.__transport
        # 执行命令
        stdin, stdout, stderr = ssh.exec_command(command)
        # 获取命令结果
        result = stdout.read()
        return result

ha = SSHConnection()
ha.run()
时间: 2024-10-21 10:29:37

python_way day13 paramiko的相关文章

python_way day13 sqlalchemy

sqlalchemy 一对多 多对多 1.一对多 一.#创建表结构 class Host(Base): #所有的子类都继承这个基类 #创建表结构 __tablename__ = 'hosts' id = Column(Integer, primary_key=True,autoincrement=True) hostname = Column(String(64),unique=True,nullable=False) group_id = Column(Integer,ForeignKey('

python运维开发(十三)----SQLalchemy和paramiko续

内容目录: ORM架构SQLalchemy Paramiko SQLalchemy对表的操作 使用 ORM/Schema Type/SQL Expression Language/Engine/ConnectionPooling/Dialect 所有组件对数据进行操作.根据类创建对象,对象转换成SQL,执行SQL. 1.创建表 # 单表 class Test(Base): __tablename__ = 'test' nid = Column(Integer, primary_key=True,

centos7 python3 安装paramiko模块

1. CentOS 7下安装Python3.5 CentOS7默认安装了python2.7.5,要用 Python3需要自己手动安装.注意不要删除python2. 1.1 下载python3源码包 wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz 1.2 安装依赖 yum install openssl-devel libxslt-devel python3-dev python-dev -y 1.3 解压缩源码包然后编译

堡垒机之paramiko模块

一.paramiko简单介绍 场景预设: 很多运维人员平时进行维护linux/unix主机时候,无非通过ssh到相应主机操作,那么一旦主机有成千上百台,那该如何应对,这时候我们需要批处理工具,基于python的工具有ansible.salt,而ansible的核心则是介于paramiko. 安装: pip install paramiko或 easy_install paramiko paramiko依赖第三方的Crypto,Ecdsa和pyhton-devel 核心组件: SSHclient类

python的paramiko模块简单应用

用法1,SSHClient 分别可以使用密码和秘钥登陆,然后执行命令,并且获取执行结果 import paramiko #创建一个SSH对象 ssh = paramiko.SSHClient() #允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #通过用户名和密码去连接服务器 ssh.connect(hostname="127.0.0.1",port=22,username

python模块--paramiko

paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能.这是一个第三方的软件包,使用之前需要安装. 1 基于用户名和密码的 sshclient 方式登录 # 建立一个sshclient对象 ssh = paramiko.SSHClient() # 允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 调用c

paramiko

批量之行命令 安装paramiko模块 [[email protected] ~]# yum install -y python-paramiko.noarch python-paramiko-1.7.5-2.1.el6.noarch.rpm                    | 728 kB     00:00 运行 rpm_check_debug 执行事务测试 事务测试成功 执行事务   正在安装   : python-paramiko-1.7.5-2.1.el6.noarch     

paramiko模块

paramiko模块 下载安装 # pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto # 下载安装 pycrypto wget http://files.cnblogs.com/files/wupeiqi/pycrypto-2.6.1.tar.gz tar -xvf pycrypto-2.6.1.tar.gz cd pycrypto-2.6.1 python setup.py build python setup.py install # 进

Python 学习记录之----模块 paramiko

paramiko 一.安装 pip3.5 install paramiko pip3.5 install pycrypto 1 # pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto 2 3 # 下载安装 pycrypto 4 wget http://xxxxxx/pycrypto-2.6.1.tar.gz 5 tar -xvf pycrypto-2.6.1.tar.gz 6 cd pycrypto-2.6.1 7 python setup.p