Python之路43-paramiko模块

paramiko模块

通过ssh2协议远程登录服务器执行命令或上传下载文件

ssh 公钥密钥连接

RSA -非对称密钥验证

公钥 public key

私钥 private key

10.0.0.31 ----> 10.0.0.41

私钥             公钥

10.0.0.31先生成一对公钥和私钥,将公钥给要被登录的机器

ssh-keygen生成一对公钥私钥,id_rsa.pub公钥,id_rsa私钥

将公钥放到.ssh/authorized_keys下面

ssh-copy-id "-p52113 [email protected]"

基于账号密码的形式,执行命令或上传下载文件

import paramiko

# 基于账号密码执行命令
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的机器
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname="192.168.80.20", port=22, username="root", password="[email protected]")
# 执行命令
stdin, stdout, stderr = ssh.exec_command("free -m")
# 获取命令结果
res, err = stdout.read(), stderr.read()
result = res if res else err
print(result.decode())
# 关闭连接
ssh.close()

# 基于账号密码的上传下载
transport = paramiko.Transport(("192.168.80.20", 22))
transport.connect(username="root", password="[email protected]")
sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py上传至服务器的/tmp/test.py
sftp.put("高级FTP.png", "/root/高级FTP.png")
# 将remove_path下载到本地local_path
sftp.get("remove_path", "local_path")
transport.close()

# SSHClient 封装 Transport
transport = paramiko.Transport((‘hostname‘, 22))
transport.connect(username=‘wupeiqi‘, password=‘123‘)
ssh = paramiko.SSHClient()
ssh._transport = transport
stdin, stdout, stderr = ssh.exec_command(‘df‘)
print(stdout.read().decode())
transport.close()

基于密钥的形式,执行命令或上传下载文件

import paramiko

# 基于密钥执行命令
private_key = paramiko.RSAKey.from_private_key_file("id_rsa")
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname="192.168.80.24", port=22, username="root", pkey=private_key)
stdin, stdout, stderr = ssh.exec_command("ifconfig")
res, err = stdout.read(), stderr.read()
result = res if res else err
print(result.decode())
ssh.close()

# 基于密钥的上传下载
private_key = paramiko.RSAKey.from_private_key_file("id_rsa")
transport = paramiko.Transport(("192.168.80.24", 22))
transport.connect(username="root", pkey=private_key)
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.get("test.txt", "1")
transport.close()

# SSHClient 封装 Transport
private_key = paramiko.RSAKey.from_private_key_file(‘/home/auto/.ssh/id_rsa‘)
transport = paramiko.Transport((‘hostname‘, 22))
transport.connect(username=‘wupeiqi‘, pkey=private_key)
ssh = paramiko.SSHClient()
ssh._transport = transport
stdin, stdout, stderr = ssh.exec_command(‘df‘)
transport.close()
时间: 2024-10-11 05:51:14

Python之路43-paramiko模块的相关文章

python实战第一天-paramiko模块并练习

操作系统 Ubuntu 15.10 IDE & editor JetBrains PyCharm 5.0.2 ipython3 Python版本 python-3.4.3 安装paramiko pip3 install paramiko [email protected]:~$ pip3 install paramiko Collecting paramiko Downloading paramiko-1.16.0-py2.py3-none-any.whl (169kB) 100% |█████

python之资产采集(paramiko模块)

笔记代码: client.py # import subprocess # v1 = subprocess.getoutput("ipconfig") # value1 = v1[20:30] # # v2=subprocess.getoutput("dir") # value2 = v2[0:5] # # #连接数据库,写到数据库 # url = "http://127.0.0.1:8000/asset.html" # import reque

快速win8从头安装python直到安装好paramiko模块

快就快在,慢速的官方资源链接都换成国内的,这样下载安装快多了. 重装python,对自己也是个很好的锻炼! 1.安装python27,不去官网,官网太慢,去http://rj.baidu.com/search/index/?kw=python%25202.7下一个 然后把python安装路径加到系统变量,同时把其下Script目录也加进去方便使用pip. 2.安装pip win8有powershell,简单多了, powershell运行: (Invoke-WebRequest https://

Python基础 - 第九天 - paramiko模块、进程、线程

本篇内容: 1.paramiko模块使用 2.进程.线程简介 3.python调用线程的方法 4.join - 等待线程执行 5.守护线程 6.GIL - 全局解释器锁 7.互斥锁 8.信号量 9.事件 10.队列 一.paramiko模块使用 1.paramiko模块简介 ? paramiko是一个基于SSH用于连接远程服务器并执行相关操作(SSHClient和SFTPClinet,即一个是远程连接,一个是上传下载服务),使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric

python之路-16-常用模块学习

16.1模块定义 定义:用一砣代码实现了某个功能的代码集合(n个 .py 文件组成的代码集合就称为模块) 模块分为三种: 自定义模块 内置标准模块(又称标准库) 开源模块 16.2导入方法 单个模块导入:import module_name 一个模块多个函数:from module_lanhan import * 别名导入:from module_lanhan import def_name as module_lanhan_def_name 多模块一起导入需要用逗号(,)隔开 Import m

【Day41】Python之路——Time时间模块

time与datetime模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行"type(time.time())",返回的是float类型. 格式化的时间字符串(Format String) 结构化的时间(struct_time --元组):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时) #导入时间

Python 之路 Day5 - 常用模块学习

本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.p

python之路:Day05 --- 常用模块

本节内容 1.模块介绍 2.sys 3.os 4.time & datetime 模块 5.random 6.shutil 7.hashlib 8.logging 9.re正则表达式 10.shelve 11.xml 处理 12.yaml 处理 13.configpareser 14.subprocess 一.模块介绍 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能

python之路 正则表达式,模块导入的方法,hashlib加密

一.正则表达式re python中re模块提供了正则表达式相关操作 字符: . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 次数: * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 模式 描述 ^ 匹配字符串的开头 $ 匹配字符串的末尾. . 匹配任意字符,除了换行符,当re.DO

【python之路25】模块

一.time模块 1.time.sleep(5)   #等待5秒钟 #!usr/bin/env python # -*- coding:utf-8 -*- import time print('start to sleep.....') time.sleep(5) #等待5秒 print('wake up.....') #!usr/bin/env python # -*- coding:utf-8 -*- import time print(time.clock()) #返回处理器时间,3.3已