paramiko模块用于通过 ssh 登录到远程客户端主机并执行命令,常见用法如下:

[root@localhost ~]$ yum install -y python-paramiko

通过用户名密码登录远程客户端主机并执行命令:

#!/usr/bin/env python
#-*- coding:utf-8 -*- import paramiko ssh = paramiko.SSHClient() # 创建一个ssh客户端对象
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 设置以什么方式连接远程客户端,这里配置自动协商
ssh.connect(hostname='192.168.216.130', port=22, username='root', password='root') # 通过账号密码连接远程客户端
stdin, stdout, stderr = ssh.exec_command('date') # 远程执行命令,结果会返回标准输入、标准输出、标准错误输出
print stdout.read() # 查看执行结果
ssh.close() # 关闭连接
[root@localhost ~]$ python 1.py
Fri Feb  8 23:56:11 CST 2019

通过密钥登录远程客户端主机并执行命令:

#!/usr/bin/env python
#-*- coding:utf-8 -*- import paramiko ssh = paramiko.SSHClient() # Create a new SSHClient
key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa') # Create a key object by reading a private key file
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # Set the policy to use when connecting to a server
ssh.connect(hostname='192.168.216.130', username='root', pkey=key) # Connect to an SSH server and authenticate to it
stdin, stdout, stderr = ssh.exec_command('date') # Execute a command on the SSH server
print stdout.read()
ssh.close()
[root@localhost ~]$ python 1.py
Fri Feb  8 23:56:11 CST 2019

通过密钥登录远程客户端主机并上传下载文件:

#!/usr/bin/env python
#-*- coding:utf-8 -*- import paramiko t = paramiko.Transport(('192.168.216.130', 22)) # Create a Transport object
key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
t.connect(username='root', pkey=key)
sftp = paramiko.SFTPClient.from_transport(t) # Create an SFTP client channel from an open Transport
sftp.get('/etc/passwd', '/tmp/passwd') # 下载文件,把远程客户端的/etc/passwd下载到本地/tmp/passwd
sftp.put('/etc/passwd', '/tmp/passwd') # 上传文件,把本地/etc/passwd上传到远程客户端的/tmp/passwd
t.close()

paramiko 结合多线程批量执行命令:

#!/usr/bin/env python
#-*- coding:utf-8 -*- import sys
import paramiko
import threading def ssh(ip, cmd):
ssh = paramiko.SSHClient()
key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect(hostname=ip, username='root', pkey=key, timeout=5)
except:
print('Connect Timeout!')
sys.exit(1)
stdin, stdout, stderr = ssh.exec_command(cmd)
stdout = stdout.read()[:-1]
stderr = stderr.read()[:-1]
if stdout:
print('%s: %s' % (ip, stdout))
ssh.close()
else:
print('%s: %s' % (ip, stderr))
ssh.close() if __name__ == '__main__':
ipList = ['192.168.216.130', '192.168.216.131', '192.168.216.132', '192.168.216.133'] try:
cmd = sys.argv[1]
except:
print('%s follow a command' % __file__)
sys.exit(1) for ip in ipList:
t = threading.Thread(target=ssh, args=(ip, cmd))
t.start()
[root@localhost ~]$ python 1.py date
192.168.216.131: Fri Feb 8 23:56:11 CST 2019
192.168.216.132: Fri Feb 8 23:56:11 CST 2019
192.168.216.133: Fri Feb 8 23:56:11 CST 2019
192.168.216.130: Fri Feb 8 23:56:11 CST 2019

远程执行命令:paramiko的更多相关文章

  1. 使用paramiko远程执行命令、下发文件

    写部署脚本时,难免涉及到一些远程执行命令或者传输文件. 之前一直使用sh库,调用sh.ssh远程执行一些命令,sh.scp传输文件,但是实际使用中还是比较麻烦的,光是模拟用户登陆这一点,还需要单独定义 ...

  2. 【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件

    本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传.下载 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. ...

  3. Python Paramiko实现sftp文件上传下载以及远程执行命令

    一.简介 Paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令.文件传输等功能. 安装模块 默认Python没有自带,需要手动安装: pip3 install par ...

  4. python之实现批量远程执行命令(堡垒机)

    python远程批量执行 我并不是一个专业的开发,我一直在学习linux运维,对于python也是接触不久,所以代码写的并不是很规范简洁. 前段时间一个同学找我一起做一个自动化运维平台,我对pytho ...

  5. 利用scp 远程上传下载文件/文件夹和ssh远程执行命令

    利用scp传输文件 1.从服务器下载文件scp username@servername:/path/filename /tmp/local_destination例如scp codinglog@192 ...

  6. CentOS下利用sshpass不用手动输入密码远程执行命令

       在测试的时候要同时操作多台机器,每次都要挨个去执行几乎相同的命令或者修改一些设置,这样很影响工作效率也很烦,所以就想写一个脚本,远程自动去做这些操作.远程执行命令很简单,但是不能在执行命令加上命 ...

  7. ssh密钥登录及远程执行命令

    以192.168.1.104作为客户机 以192.168.1.103作为服务器 使用密钥登录 创建密钥对 在SSH客户机创建用户秘钥对 ssh-keygen -t rsa 之后全回车即可 将会在~/. ...

  8. 一键帮你复制多个文件到多个机器——PowerShell小脚本(内附PS远程执行命令问题解析)

    作为一个后台程序猿,经常需要把一堆程序集(DLL)或者应用程序(EXE)复制到多个服务器上,实现程序的代码逻辑更新,用以测试新的功能或改动逻辑.这里给大家介绍一个自己实现的PowerShell脚本,方 ...

  9. 19 Zabbix 利用Scripts栏目对Hosts远程执行命令

    点击返回:自学Zabbix之路 19 Zabbix 利用Scripts栏目对Hosts远程执行命令 在Monitoring板块中,有Host出现的地方,单击Host按钮后,都可以执行对Host远程执行 ...

随机推荐

  1. C#中一道关于多线程的编程题

    题目的意思是这样的:让两个线程A和B将自己的ID轮番写入一个文件中,每个线程重复十次写入后执行一个回调函数,说“I'm OK”,就这样.我是一名QA,不是开发,出于兴趣报考了公司的C#课程考试,多线程 ...

  2. JavaScript高级 面向对象(7)--深拷贝与浅拷贝

    说明(2017.3.31): 1. 画图: var car = {name:"法拉利"}; var p = {name: "张三", age: "19 ...

  3. 【Unity笔记】获得鼠标点击屏幕的位置,并转成世界坐标

    Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

  4. C语言 · 明明的随机数

    算法训练 明明的随机数   时间限制:1.0s   内存限制:256.0MB      问题描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的 ...

  5. CMake使用入门

    一.开胃菜 hello目录下的文件结构: ├── CMakeLists.txt ├── hello.c ├── hello.h └── main.c C代码见下节. 最简单的cmake配置文件: pr ...

  6. 用CSS创建打印页面

    用CSS创建打印页面,不必为打印而专门建立一个HTML文件,可以节省一些体力,其前提是按“WEB标准”用CSS+DIV布局HTML页面. 第一.在HTML页面加入为打印机设置的CSS文件 <li ...

  7. SecureCRT工具

    技巧收集: 文本文件内容 复制该行内容yy,p粘贴 2+yy复制两行 dd 删除该行 文件内容搜索 非编辑状态/+查找内容 查找指定行 :+行号

  8. Android多线程任务的优化1:AsyncTask的缺陷 (转至 http://www.linuxidc.com/Linux/2011-09/43150.htm)

    导语:在开发Android应用的过程中,我们需要时刻注意保障应用的稳定性和界面响应性,因为不稳定或者响应速度慢的应用将会给用户带来非常差的交互体验.在越来越讲究用户体验的大环境下,用户也许会因为应用的 ...

  9. razor使用注意点........

    使用三元运算符时记得加括号.... 如: @Convert.ToInt32(Request.QueryString["type"])==0?true:false :这是错误的写法 ...

  10. luasql在Fedora20下的安装与使用示例

    主要参考:http://www.boll.me/archives/614 luasql安装, 在终端通过yum命令安装: yum -y install lua-sql 接下来写个测试的lua脚本文件( ...