远程执行命令: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远程执行 ...
随机推荐
- JAVA-JSP动作元素之forward
相关资料:<21天学通Java Web开发> 结果总结:1.用来转移用户的请求,使得用户请求的页面从一个页面跳转到另一个页面.2.跳转为服务器端跳转,所以用户的地址栏不会发生任何变化.3. ...
- iOS开关按钮UISwitch控件
开关按钮UISwitch 在ViewController.h里面 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #import <UIKit/UIKit ...
- 略过ftp利用samba共享
开发阶段每次通过ftp上传代码到服务器是件麻烦事,而且有时候一些小错误直接通过ftp在服务器上修改后,容易忘记在本地保存. 于是想到了网络共享,windows上直接挂载网络硬盘,这样就可以略过ftp了 ...
- centos6.4或者6.5使用yum的elrepo源升级内核
本文转自:http://www.511yj.com/centos-yum-kernel.html 今天想在centos6.5安装docker,在网上查了说centos6.5需要64位的,内核需要升级到 ...
- Linux 下 ps 命令
简述 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,动态的显示进程信息 ...
- C语言 · 高精度乘法
算法提高 高精度乘法 时间限制:1.0s 内存限制:256.0MB 问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一 ...
- Entity Framework应用:Loading Entities
Entity Framework允许控制对象之间的关系,在使用EF的过程中,很多时候我们会进行查询的操作,当我们进行查询的时候,哪些数据会被加载到内存中呢?所有的数据都需要吗?在一些场合可能有意义,例 ...
- 【转】苹果App Store新规:6月1日后所有应用必须支持IPv6-only网络
在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.为确保现有的应用是兼容的,我们需要注意下面几点. 不建议使用底层的网 ...
- 关于Unity中的删除、显示和隐藏节点
一.删除节点和组件 1.删除一个节点,以及节点上面所有的组件全部删除了//删除一个节点的时候,节点上面所有的组件也会被删除:MonoBehaviour.Destroy(this.gameObject) ...
- android Menu 笔记
菜单是应用中常见的用户组件.本文介绍如何在布局文件和代码中添加menu,submenu以及在代码中添加的方法. 参考链接 https://developer.android.com/guide/top ...