python的paramiko模块实现远程控制和传输示例


Posted in Python onOctober 13, 2017

本文介绍了python的paramiko模块实现远程控制和传输示例,分享给大家,具体如下:

1 安装

sudo pip install paramiko

2 ssh实现远程控制

#LINUX下执行shell
ssh username@ip #输入密码后就可以对远程机器进行操作
ssh username@ip command #输入密码后远程机器就执行command

ssh运行后,想退出,可以kill掉ssh进程。

3 paramiko实现ssh

import paramiko
hostname = '10.1.111.111'
username = 'root'
password = '111111'
port = 22 #整数不是字符串
paramiko.util.log_to_file('paramiko.log')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在know_hosts文件中的主机
ssh.connect(hostname=hostname,port=port,username=username,password=password)
stdin, stdout, stderr = ssh.exec_command("ls") #远程执行shell命令
print(stdout.readlines()) #输出回显结果
ssh.close()

exec_command命令,以分号;分隔表示先后执行两个命令;可以传入多个参数; exec_command为单个会话,执行完成之后会回到登录时的缺省目录,如下:

a='~/Videos'
b='aaa'
ssh.exec_command('cd %s;mkdir %s'%(a,b)) #aaa在a目录下
ssh.exec_command('mkdir aaa') #aaa在缺省目录下

远端执行命令时如果有交互,可以这样用 stdin.write(“”)来完成。

注意:

(1)sudo后要加-S,表示从stdin接收密码;

(2)stdin.write(‘password\n')最后要加\n作为命令的结束,否则服务器一直等待;

(3) flush()写入的缓冲( flush() any buffer you're writing to )

stdin, stdout, stderr = ssh.exec_command('sudo -S ls')
stdin.write('password\n')
stdin.flush()

可以利用多进程或线程可以批量执行命令:

import paramiko
import threading

def ssh_cmd(ip,port,username,passwd,cmd):
  ssh = paramiko.SSHClient()
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  ssh.connect(ip,port,username,passwd)
  for m in cmd:
    stdin, stdout, stderr = ssh.exec_command(m)
    print(stdout.readlines()) 
  ssh.close()

if __name__=='__main__':
  cmd = ['ls','ifconfig']   
  a=threading.Thread(target=ssh_cmd,args=(ip,port,username,passwd,cmd))
  a.start() 
  a.join()

4 远程传输文件

scp从本地服务器复制到远程服务器

scp local_file remote_username@remote_ip:remote_file

指定了用户名,命令执行后需要输入用户密码;如果不指定用户名,命令执行后需要输入用户名和密码; 从远处复制文件到本地

scp remote_username@remote_ip:remote_file local_file

5 paramiko实现远程传输文件

新建一个SFTPClient对象,该对象复用之前的SSH连接,因此,我们使用sftp传输文件时,不需要再次进行用户认证。实现文件

上传:

sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())
#sftp = ssh.open_sftp() #两者选其一即可
sftp.put('bbb.c','aaa.c') #文件上传并重命名
sftp.close()

或者以下实现文件上传和下载:

import paramiko
t=paramiko.Transport((hostname,port))
t.connect(username=username,password=password)
sftp = paramiko.SFTPClient.from_transport(t) 
sftp.put('bbb.c','aaa.c') #文件上传并重命名
sftp.get('m.py', 'mm.py')#文件下载并重命名
t.close()

官方文档

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python制作CSDN免积分下载器
Mar 10 Python
python函数中return后的语句一定不会执行吗?
Jul 06 Python
Django数据库操作的实例(增删改查)
Sep 04 Python
使用Python更换外网IP的方法
Jul 09 Python
numpy给array增加维度np.newaxis的实例
Nov 01 Python
Python 数据库操作 SQLAlchemy的示例代码
Feb 18 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
python实现扫雷游戏
Mar 03 Python
pandas之分组groupby()的使用整理与总结
Jun 18 Python
django 获取字段最大值,最新的记录操作
Aug 09 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 Python
基于python(urlparse)模板的使用方法总结
Oct 13 #Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 #Python
Python中的浮点数原理与运算分析
Oct 12 #Python
python中获得当前目录和上级目录的实现方法
Oct 12 #Python
Python实现的十进制小数与二进制小数相互转换功能
Oct 12 #Python
Python调用C# Com dll组件实战教程
Oct 12 #Python
python 实现一个贴吧图片爬虫的示例
Oct 12 #Python
You might like
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
JavaScript 的方法重载效果
2009/08/07 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
ztree获取当前选中节点子节点id集合的方法
2015/02/12 Javascript
JavaScript Split()方法
2015/12/18 Javascript
jQuery实现验证年龄简单思路
2016/02/24 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
vue如何截取字符串
2019/05/06 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
Python实现的科学计算器功能示例
2017/08/04 Python
Python set常用操作函数集锦
2017/11/15 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
Python urllib.request对象案例解析
2020/05/11 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
大学自我评价
2014/02/12 职场文书
《掌声》教学反思
2014/02/23 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
实习指导老师意见
2015/06/04 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
用Python创建简易网站图文教程
2021/06/11 Python
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL