Python 模块功能paramiko SSH 远程执行及远程下载
模块 paramiko
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。
1、下载安装
# pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto # 下载安装 pycrypto
wget http://files.cnblogs.com/files/wupeiqi/pycrypto-2.6.1.tar.gz
tar -xvf pycrypto-2.6.1.tar.gz
cd pycrypto-2.6.1
python setup.py build
python setup.py install # 进入python环境,导入Crypto检查是否安装成功 # 下载安装 paramiko
wget http://files.cnblogs.com/files/wupeiqi/paramiko-1.10.1.tar.gz
tar -xvf paramiko-1.10.1.tar.gz
cd paramiko-1.10.1
python setup.py build
python setup.py install
代码远程下载模板
def remote_scp(host_ip,remote_path,local_path,username,password):
t = paramiko.Transport((host_ip,22))
t.connect(username=username, password=password) # 登录远程服务器
sftp = paramiko.SFTPClient.from_transport(t) # sftp传输协议
src = remote_path
des = local_path
sftp.get(src,des)
t.close()
远程执行命令 通过用户名密码
#!/usr/bin/env python
#coding:utf-8 import paramiko ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('ip address', 22, 'user', 'passwd')
stdin, stdout, stderr = ssh.exec_command('df')
print stdout.read()
ssh.close();
执行命令
远程执行命令 通过秘钥
import paramiko private_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(private_key_path) ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('主机名 ', 端口, '用户名', key) stdin, stdout, stderr = ssh.exec_command('df')
print stdout.read()
ssh.close()
秘钥执行命令
上传下载
import os,sys
import paramiko t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='wupeiqi',password='')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test.py','/tmp/test.py')
t.close() import os,sys
import paramiko t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='wupeiqi',password='')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test.py','/tmp/test2.py')
t.close()
上传或者下载文件 - 通过用户名和密码
import paramiko pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path) t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='wupeiqi',pkey=key) sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test3.py','/tmp/test3.py') t.close() import paramiko pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path) t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='wupeiqi',pkey=key) sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test3.py','/tmp/test4.py') t.close()
上传或下载文件 - 通过密钥
实战:
公司发布代码更新服务器 远程部署 代码编写
#!/usr/bin/env python
#_*_ coding:utf-8 _*_
__author__ = 'yiyezi'
#导入模块
import os
import sys
import paramiko
import time
import re
#相应目录变量
bak_cmd = 'tar zcvf /backup/web.tar.gz'
wget_dir = '/update'
download = 'http://192.168.1.19/'
app_dir = '/application/data'
app_data = '/application/data/*'
bak_time = time.strftime('%Y_%m_%d_%H:%M:%S')
bak = bak_cmd + bak_time #ssh远程连接
def ssh(ip,port,username,passwd,cmd):
paramiko.util.log_to_file('/tmp/test')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, port, username, passwd)
stdin, stdout, stderr = ssh.exec_command(cmd)
print stdout.read()
ssh.close();
#部署
def app(apps):
appname = re.split('\d',apps)
if '.war' in apps:
de_cmd = "cd %s; %s %s;wget %s%s;rm -rf %s;unzip %s -d %s;/bin/sh /scripts/reboot.sh;" % (app_dir,bak,app_data,download,apps,appname[0],apps,appname[0])
print (de_cmd)
elif 'tar.gz' in apps:
de_cmd = "cd %s;%s %s;wget %s%s;rm -rf %s;tar zxvf *.tar.gz;sh /scripts/restart.sh;" %(app_dir,bak,app_data,download,apps,appname[0])
else:
print ("请输入正确的包!")
sys.exit()
ssh("192.168.1.19",22,'root','',de_cmd)
print ('==========================END========================================') def web(apps):
appname = re.split('-\d',apps)
if '.war' in apps:
de_cmd = "cd %s; %s %s;wget %s%s;rm -rf %s;unzip %s -d %s;/bin/sh /scripts/reboot.sh;" % (app_dir,bak,app_data,download,apps,appname[0],apps,appname[0])
print (de_cmd) elif 'tar.gz' in apps:
de_cmd = "cd %s;%s %s;wget %s%s;rm -rf %s;tar zxvf *.tar.gz;sh /scripts/restart.sh;" %(app_dir,bak,app_data,download,apps,appname[0]) else:
print ("请输入正确的包!")
sys.exit()
ssh("192.168.1.11",22,'root','',de_cmd)
print ('==========================END========================================') IP = ["192.168.1.11","192.168.1.19"] def information():
msg = '''
\33[35m----------------------select server update---------------------\033[0m
+ 服务器编号 IP 应用
+ 1 %s web
+ 2 %s app
\33[35m---------------------------------------------------------------\033[0m
'''% (IP[0],IP[1])
print(msg) if __name__ == '__main__':
information()
while True:
num = raw_input("\033[34m请输入你要更新的服务器编号 例如 1 >>\033[0m")
if num == '':
print('\033[32m----------------------------------Update scripts start,please wait....................\033[0m')
time.sleep(5) web("web-2020.tar.gz")
print('\033[32m----------------------------------update Success!--------------------------------------\033[0m')
break
elif num == '':
print('\033[32m----------------------------------Update scripts start,please wait....................\033[0m')
time.sleep(5)
app("web.war")
print('\033[32m----------------------------------update Success!--------------------------------------\033[0m')
break
elif len(num) == 0:
os.system("echo -e '\07'")
print("\033[5;31m输入有误!请重新输入\033[0m")
else:
os.system("echo -e '\07'")
print("\033[5;31m请输入正确的编号\033[0m")
Python 模块功能paramiko SSH 远程执行及远程下载的更多相关文章
- python模块之paramiko
46.python模块之paramiko SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- python模块之 paramiko
paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能.这是一个第三方的软件包,使用之前需要安装. 1 基于用户名和密码的 sshclient 方式登录 # 建立一个s ...
- python模块之 paramiko(转载)
paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能.这是一个第三方的软件包,使用之前需要安装. 1 基于用户名和密码的 sshclient 方式登录 # 建立一个s ...
- 26 Python模块之paramiko
paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能.这是一个第三方的软件包,使用之前需要安装. 1. 基于用户名和密码的sshclient方式登录 #创建一个ssh ...
- 【python】用python脚本Paramiko实现远程执行命令、下载、推送/上传文件功能
Paramiko: paramiko模块,基于SSH用于连接远程服务器并执行相关操作. SSHClient: 用于连接远程服务器并执行基本命令 SFTPClient: 用于连接远程服务器并执行上传下载 ...
- Python模块:paramiko
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实. 1.下载安装 Wi ...
- Python模块学习 - Paramiko
简介 ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography). 有了Paramiko以后,我们就可以在Py ...
- Python模块 - paramiko
paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能.这是一个第三方的软件包,使用之前需要安装. 1 基于用户名和密码的 sshclient 方式登录 # 建立一个s ...
- 架构师成长之路5.2-Saltstack远程执行
点击架构师成长之路 架构师成长之路5.2-Saltstack远程执行 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FUNC工具配置才可以 ...
随机推荐
- Eight
Eight 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043/http://acm.split.hdu.edu.cn/showproblem.ph ...
- Failed to read candidate component class包冲突解决方法
该类问题出现错误有两个可能,第一JAR包错误,第二就是我们的System library版本不正确导致的问题.
- Java中泛型 类型擦除
转自:Java中泛型是类型擦除的 Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类 ...
- hdu_5889_Barricade(最小割+最短路)
题目链接:hdu_5889_Barricade 题意: 有n个点,m条边,每个边的长度都为1,每个边有一个消耗w,如果要阻断这条路,那么就会消耗w,现在让你阻断点1到点n的所有最短路,问你最小的消耗是 ...
- git clone 出现 RPC failed 错误的解决方案
今天使用git clone一个大型项目的时候出现了如下错误:
- P2P直连?经服务器中转?
当同一个系统的两个客户端A.B相互发送消息给对方时,如果它们之间存在P2P通道,那么消息传送的路径就有两种:直接经P2P通道传送.或者经服务器中转.如下图所示: 通常就一般应用而言,如果P2P通道能够 ...
- 用Bash脚本将Linux普通用户添加为系统管理员
将Linux普通用户添加为系统管理员在Gnome或KDE这样强大与完善的桌面环境下是非常简单的事情,一般来说在用户设置的对话框里就直接有相应选项.不过,出于简洁与高效的风格,自己目前并未使用这些高端但 ...
- Chapter 15_1 require函数
Lua提供了一个名为require的高层函数来加载模块,但这个函数只假设了关于模块的基本概念. 对于require而言,一个模块就是一段定义了一些值(函数或者包含函数的table)的代码. 为了加载一 ...
- 【TestDirector】常见问题分析
1.IE7无法访问TD 问题原因:兼容性问题 解决方法:步骤一.以系统管理员身份登陆TD: 步骤二.找到TD服务器中TDBIN目录(缺省情况下是C:\Inetpub\TDBIN目录),用编辑器打开st ...
- 修改textField的placeholder的字体和颜色
textField.placeholder = @"username is in here!"; [textField setValue:[UIColor redColor] fo ...