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工具配置才可以 ...
随机推荐
- socket编程——一个简单的例子
从一个简单的使用TCP例子开始socket编程,其基本步骤如下: server client ++++ ...
- 如何在sublime中使用sass
搞了好久,终于把sass搞定了. 最开始,我是想使用koala来实现对sass的实时编译的,但是每当我保存的时候,总是弹出erro错误,即无法编译生成css文件,百度了半天,问了好久,这个问题还是没能 ...
- iOS开发QQ空间半透明效果的实现
//1.首先我们可以确定的是cell的半透明, /* white The grayscale value of the color object, specified as a value from ...
- radio的选中设置以及取值。
前台:<input type=" id="tg" name="state"/> <a style="cursor:poin ...
- JS+CSS简单实现DIV遮罩层显示隐藏
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- POJ 2234 Matches Game(取火柴博弈1)
传送门 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
- 使用Angular构建单页面应用(SPA)
什么是SPA?看下图就是SPA: 下面说正经的,个人理解SPA就是整个应用只有一个页面,所有的交互都在一个页面完成,不需要在页面之间跳转. 单页面的好处是更快的响应速度,更流畅的用户体验,甚至和桌面应 ...
- Java实现二分查找算法
Java程序员总该玩点基本的算法. 1.前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序 2.原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中 ...
- 一个简单的IM系统(Demo附源码)-- ESFramework 4.0 快速上手(08)
前面的文章已经介绍完了基于ESFramework/ESPlus进行二次开发的所有要点,现在,我们可以开始小试牛刀了. 本文将介绍使用ESFramework的Rapid引擎开发的两个最简单的Demo,E ...
- Business Intelligence(BI) 商务智能
商业智能技术正是一种能够帮助企业迅速地完成信息采集.分析的先进技术.它以数据仓库(Data Warehousing).在线分析处理(OLAP).数据挖掘(Data Mining)3种技术的整合为基础, ...