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. 多进程监控自动关机工具升级远程关闭多台server——C# works with PowerShell

    之前给单位做过一个多进程监控的自动关机工具,详见那篇blog. 这次领导又加了需求,说要等进程监控结束后,不止需要关闭主控端server,还需要关闭其他servers.于是就用到了我上篇文章所介绍的知 ...

  2. C#中一道关于多线程的基础练习题——模拟仓库存销过程

    题目:模拟生产.入库.销售(50分) 假设某企业自产.自存.自销,需要将工厂生产的各类产品不定时的运到仓库,与此同时,需要将仓库中的货物运往超市和商场中进行销售,请编写一个程序模拟此过程(主要是存取这 ...

  3. 判断Service是否在运行

    private boolean isServiceRunning() { ActivityManager manager = (ActivityManager) getSystemService(AC ...

  4. python下RSA加密解密以及跨平台问题

    Reference:  http://www.cnblogs.com/luchanghong/archive/2012/07/18/2596886.html 项目合作需要,和其他网站通信,消息内容采用 ...

  5. CentOS LDAP安装配置

    安装: Install the openldap, openldap-servers, and openldap-clients RPMs. Edit the /etc/openldap/slapd. ...

  6. OpenResty(Nginx+Lua)开发入门

    Nginx入门 本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章: nginx启动.关闭.重启 http://www.cnblogs.com/derekchen/archi ...

  7. tar -h 参数

    1.1.1 tar命令参数-h,-h参数会把软链接指向的文件也打包. [root@ob2 mytmp]# ll total 8 -rw-r--r--. 1 root root 910 Aug 12 2 ...

  8. Web API(一);Restful架构

    一.什么是RESTful REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移.REST指的是一组架构约束条件和原则.如果一个 ...

  9. 自然语言交流系统 phxnet团队 创新实训 个人博客 (二)

    因为项目用的到条件编译,遂专门记载: 众所周知在C和CPP中可以通过预处理语句来实现条件编译,但是在java中没有预处理语句,我们该如何实现条件编译呢? 这是一个简单的demo public clas ...

  10. 【转】MFC WM_CTLCOLOR 消息

    WM_CTLCOLOR消息用来完成对EDIT, STATIC, BUTTON等控件设置背景和字体颜色, 其用法如下: 1.首先在自己需要设置界面的对话框上点击右键-->建立类向导-->加入 ...