远程执行命令:paramiko
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的更多相关文章
- 使用paramiko远程执行命令、下发文件
写部署脚本时,难免涉及到一些远程执行命令或者传输文件. 之前一直使用sh库,调用sh.ssh远程执行一些命令,sh.scp传输文件,但是实际使用中还是比较麻烦的,光是模拟用户登陆这一点,还需要单独定义 ...
- 【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件
本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传.下载 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. ...
- Python Paramiko实现sftp文件上传下载以及远程执行命令
一.简介 Paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令.文件传输等功能. 安装模块 默认Python没有自带,需要手动安装: pip3 install par ...
- python之实现批量远程执行命令(堡垒机)
python远程批量执行 我并不是一个专业的开发,我一直在学习linux运维,对于python也是接触不久,所以代码写的并不是很规范简洁. 前段时间一个同学找我一起做一个自动化运维平台,我对pytho ...
- 利用scp 远程上传下载文件/文件夹和ssh远程执行命令
利用scp传输文件 1.从服务器下载文件scp username@servername:/path/filename /tmp/local_destination例如scp codinglog@192 ...
- CentOS下利用sshpass不用手动输入密码远程执行命令
在测试的时候要同时操作多台机器,每次都要挨个去执行几乎相同的命令或者修改一些设置,这样很影响工作效率也很烦,所以就想写一个脚本,远程自动去做这些操作.远程执行命令很简单,但是不能在执行命令加上命 ...
- ssh密钥登录及远程执行命令
以192.168.1.104作为客户机 以192.168.1.103作为服务器 使用密钥登录 创建密钥对 在SSH客户机创建用户秘钥对 ssh-keygen -t rsa 之后全回车即可 将会在~/. ...
- 一键帮你复制多个文件到多个机器——PowerShell小脚本(内附PS远程执行命令问题解析)
作为一个后台程序猿,经常需要把一堆程序集(DLL)或者应用程序(EXE)复制到多个服务器上,实现程序的代码逻辑更新,用以测试新的功能或改动逻辑.这里给大家介绍一个自己实现的PowerShell脚本,方 ...
- 19 Zabbix 利用Scripts栏目对Hosts远程执行命令
点击返回:自学Zabbix之路 19 Zabbix 利用Scripts栏目对Hosts远程执行命令 在Monitoring板块中,有Host出现的地方,单击Host按钮后,都可以执行对Host远程执行 ...
随机推荐
- Web应用程序开发的标准架构
- 如何用Visual Studio 2013 (vs2013)编写C语言程序
如何用Visual Studio 2013 (vs2013)编写C语言程序 (2014-05-16 10:58:15) Visual Studio 2013是一个很强大的软件,但是刚开始用Visu ...
- Hadoop的集群和优化
Hadoop的集群和优化 Hadoop集群规模小到几个节点就可以组件一个集群,大到由几千个节点组成的超大集群. 在安装Hadoop集群时,把要安装的软件解压到集群内的所有机器上,软件的安装目录也要一致 ...
- C语言 · 学生信息(P1102)
算法训练 P1102 时间限制:1.0s 内存限制:256.0MB 定义一个学生结构体类型student,包括4个字段,姓名.性别.年龄和成绩.然后在主函数中定义一个结构体数组(长度 ...
- efm32 si446x
Linking target: example-trickle.stk3700arm-none-eabi-gcc -Xlinker -Map=example-trickle.stk3700.map - ...
- CodeIgniter(3.1.4)框架使用静态文件(js,css)
调整目录结构: 可以在控制器中这样加载视图: * 加载url辅助类. views视图中可以这样引用静态文件: 则最终的静态文件url会生成这样:
- windows server 2003中用系统自带工具调整磁盘分区大小
先在需要扩展的右边留出未分配的磁盘空间,可以通过 我的电脑 右键 管理 磁盘管理来操作 首先 进入cmd界面 然后输入Diskpart 这个时候进入DISKPART> 界面 然后你 先选择磁盘一 ...
- 02 Architecture Overview
本章提要---------------------------------------------arthiecture, and some componentconnect to oracle这一章 ...
- double类型保留2位小数
double d = 12.2289; java.text.DecimalFormat df = new java.text.DecimalFormat("#.00"); Syst ...
- 利用Spring AOP和自定义注解实现日志功能
Spring AOP的主要功能相信大家都知道,日志记录.权限校验等等. 用法就是定义一个切入点(Pointcut),定义一个通知(Advice),然后设置通知在该切入点上执行的方式(前置.后置.环绕等 ...