最近在测试服务器那块,看了下Paramiko模块,一直都是用FileZilla工具,想了想,持续集成,更新代码可以用Parmmiko完成,还是不错的
Paramiko是用python语言写的一个模块,远程连接到Linux服务器,查看上面的日志状态,批量配置远程服务器,文件上传,文件下载等
初始化一些参数:
host = "120.24.239.214"
port = 22
timeout = 30
user = "root"
password = "******"
import paramiko
def sftp_exec_command(command):
try:
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(host, 22, user, password)
std_in, std_out, std_err = ssh_client.exec_command(command)
for line in std_out:
print line.strip("\n")
ssh_client.close()
except Exception, e:
print e
if __name__ == '__main__':
sftp_exec_command("ls -l")
import paramiko
def sftp_upload_file(server_path, local_path):
try:
t = paramiko.Transport((host, 22))
t.connect(username=user, password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(local_path, server_path)
t.close()
except Exception, e:
print e
if __name__ == '__main__':
sftp_upload_file("/root/bug.txt", "D:/bug.txt")
import paramiko
def sftp_down_file(server_path, local_path):
try:
t = paramiko.Transport((host, 22))
t.connect(username=user, password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get(server_path, local_path)
t.close()
except Exception, e:
print e
if __name__ == '__main__':
sftp_down_file("/root/test.txt", "D:/text.txt")
ftp.cwd(pathname)
ftp.dir()
ftp.nlst()
ftp.mkd(pathname)
ftp.pwd()
ftp.rmd(dirname)
ftp.delete(filename)
ftp.rename(fromname, toname)
ftp.storbinaly("STOR filename.txt",file_handel,bufsize)
ftp.retrbinary("RETR filename.txt",file_handel,bufsize)
from ftplib import FTP, all_errors
import paramiko
import sys, os
import getpass
def ftp_main():
try:
f = FTP("ftp.ibiblio.org")
print f.getwelcome()
f.login()
print f.pwd()
f.quit()
except Exception, e:
print all_errors, e
def ftp_down_file():
try:
f = FTP("ftp.kernel.org")
f.login()
f.cwd("/pub/linux/kernel/v1.0")
fd = open("patch8.gz", "wb")
f.retrbinary("RETE patch8.gz", fd.write)
fd.close()
f.quit()
except Exception, e:
print all_errors, e
def ftp_up_file():
try:
host2, username, local_path, server_path = sys.argv[1:]
password2 = getpass.getpass("Enter passworf for %s on %s:" % (username, host2))
f = FTP(host2)
f.login(user=username, passwd=password2)
f.cwd(server_path)
fd = open(local_path, "rb")
f.storbinary("STOR %s" % os.path.basename(local_path), fd)
fd.close()
f.quit()
except Exception, e:
print all_errors, e
# 建立一个sshclient对象
ssh = paramiko.SSHClient()
# 允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 调用connect方法连接服务器
ssh.connect(hostname='192.168.2.129', port=22, username='super', password='super')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df -hl')
# 结果放到stdout中,如果有错误将放到stderr中
print(stdout.read().decode())
# 关闭连接
ssh.close()
2 基于用户名和密码的 transport 方式登录
方法1是传统的连接服务器、执行命令、关闭的一个操作,有时候需要登录上服务器执行多个操作,比如执行命令、上传/下载文件,方法1则无法实现,可以通过如下方式来操作
# 实例化一个transport对象
trans = paramiko.Transport(('192.168.2.129', 22))
# 建立连接
trans.connect(username='super', password='super')
# 将sshclient的对象的transport指定为以上的trans
ssh = paramiko.SSHClient()
ssh._transport = trans
# 执行命令,和传统方法一样
stdin, stdout, stderr = ssh.exec_command('df -hl')
print(stdout.read().decode())
# 关闭连接
trans.close()
# 指定本地的RSA私钥文件,如果建立密钥对时设置的有密码,password为设定的密码,如无不用指定password参数
pkey = paramiko.RSAKey.from_private_key_file('/home/super/.ssh/id_rsa', password='12345')
# 建立连接
ssh = paramiko.SSHClient()
ssh.connect(hostname='192.168.2.129',
port=22,
username='super',
pkey=pkey)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df -hl')
# 结果放到stdout中,如果有错误将放到stderr中
print(stdout.read().decode())
# 关闭连接
ssh.close()
# 指定本地的RSA私钥文件,如果建立密钥对时设置的有密码,password为设定的密码,如无不用指定password参数
pkey = paramiko.RSAKey.from_private_key_file('/home/super/.ssh/id_rsa', password='12345')
# 建立连接
trans = paramiko.Transport(('192.168.2.129', 22))
trans.connect(username='super', pkey=pkey)
# 将sshclient的对象的transport指定为以上的trans
ssh = paramiko.SSHClient()
ssh._transport = trans
# 执行命令,和传统方法一样
stdin, stdout, stderr = ssh.exec_command('df -hl')
print(stdout.read().decode())
# 关闭连接
trans.close()
# 实例化一个trans对象# 实例化一个transport对象
trans = paramiko.Transport(('192.168.2.129', 22))
# 建立连接
trans.connect(username='super', password='super')
# 实例化一个 sftp对象,指定连接的通道
sftp = paramiko.SFTPClient.from_transport(trans)
# 发送文件
sftp.put(localpath='/tmp/11.txt', remotepath='/tmp/22.txt')
# 下载文件
# sftp.get(remotepath, localpath)
trans.close()
import paramiko
import os
import select
import sys
trans = paramiko.Transport(('192.168.2.129', 22))
trans.start_client()
default_key_file = os.path.join(os.environ['HOME'], '.ssh', 'id_rsa')
prikey = paramiko.RSAKey.from_private_key_file(default_key_file)
trans.auth_publickey(username='super', key=prikey)
trans.auth_password(username='super', password='super')
channel = trans.open_session()
channel.get_pty()
channel.invoke_shell()
while True:
readlist, writelist, errlist = select.select([channel, sys.stdin,], [], [])
if sys.stdin in readlist:
input_cmd = sys.stdin.read(1)
channel.sendall(input_cmd)
if channel in readlist:
result = channel.recv(1024)
if len(result) == 0:
print("\r\n**** EOF **** \r\n")
break
sys.stdout.write(result.decode())
sys.stdout.flush()
channel.close()
trans.close()
import paramiko
import os
import select
import sys
import tty
import termios
实现一个xshell登录系统的效果,登录到系统就不断输入命令同时返回结果
支持自动补全,直接调用服务器终端
trans = paramiko.Transport(('192.168.2.129', 22))
trans.start_client()
default_key_file = os.path.join(os.environ['HOME'], '.ssh', 'id_rsa')
prikey = paramiko.RSAKey.from_private_key_file(default_key_file)
trans.auth_publickey(username='super', key=prikey)
trans.auth_password(username='super', password='super')
channel = trans.open_session()
channel.get_pty()
channel.invoke_shell()
oldtty = termios.tcgetattr(sys.stdin)
try:
tty.setraw(sys.stdin)
channel.settimeout(0)
while True:
readlist, writelist, errlist = select.select([channel, sys.stdin,], [], [])
if sys.stdin in readlist:
input_cmd = sys.stdin.read(1)
channel.sendall(input_cmd)
if channel in readlist:
result = channel.recv(1024)
if len(result) == 0:
print("\r\n**** EOF **** \r\n")
break
sys.stdout.write(result.decode())
sys.stdout.flush()
finally:
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty)
channel.close()
trans.close()
原文链接:
http://blog.csdn.net/songfreeman/article/details/50920767
paramiko是SSHv2协议的Python实现,提供了客户端与服务器功能。虽然它利用Python C扩展进行低级加密,但paramiko本身是一个围绕SSH网络概念的纯Python接口。
par...
来自:
y472360651的专栏
paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。1 基于用户名和密码的 sshclient 方式登录# 建立一个ss...
来自:
蓝精灵
使用db2 data studio链接服务器的数据库的时候显示如下错误:SQL4499N
Ensure that the data server has been started.
Check th...
来自:
全名工作狂的小城堡
paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
举个常见的例子,现有这样的需求:需要使用windows客户端,远程连接到Linux...
来自:
sdd220的博客
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是),是由...
来自:
harvey2008的专栏
MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka。这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求。下面我列出这些MQ之间的对比数据和资料。
第一...
来自:
Sam哥哥聊技术
paramiko的起源和发展首先来看谁创造了paramiko,是一个名叫Jeff Forcier创建了paramiko项目项目主页http://www.paramiko.org/大家可以去看上面有很多...
来自:
qq_42294208的博客
import paramiko, os,zipfileclass preExecute(): def __init__(self, __hostip, __username, __password):...
来自:
从来年少爱做梦,一心只想往前飞
使用paramiko模块有两种连接方式,一种是通过paramiko.SSHClient()函数,利用它来远程执行命令,相关文章SSH客户端 (通过密码连接远程linux主机);另外一种是通过...
来自:
SouthWind0的博客
如果我们想要远程拷贝服务器上面的文件,或者对远程服务器进行相关操作的话,使用paramiko可以很好的解决以上问题。它仅需要在本地上安装相应的软件(python、PyCrypto、ecds...
来自:
liao392781的博客
近期有使用Python通过SSH连接服务器进行维护的需求,通过搜索发现使用paramiko库的居多,因此决定使用该库。经过短时间的使用后发现paramiko没有如Ruby的net/ssh一般很方便使用...
来自:
猫的菜园子
paramiko是使用Python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式远程连接服务器。本文简要介绍了paramiko远程机器命令的执行、交互模式登陆和文件上传下载等方法。...
来自:
Y2701310012的专栏
paramkio是个python库实现了ssh协议,利用这个库可以实现ssh远程链接并执行远程命令。
安装中可以使用 pip install paramiko,安装后使用时会提示importerro...
来自:
wtq1993的博客
ansible功能简介
ansible是基于Python paramiko开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言的自动化运维工具,可以用来自动化部署应用、...
来自:
piaotiejun的专栏
这是一个非交互示例…它发送cd tmp,ls然后退出。
import sys
sys.stderr = open(‘/dev/null’) # Silence silly warnin...
来自:
weixin_43134051的博客
paramiko是SSHv2协议的Python实现,提供了客户端与服务器功能。虽然它利用Python C扩展进行低级加密,但paramiko本身是一个围绕SSH网络概念的纯Python接口。
par...
来自:
y472360651的专栏
经常使用paramiko工具对几百台设备进行管理。主要是每天到上边取文件过来,作为备份。今天发现程序运行了10个小时还没有结束,就上去看一个究竟。查看日志,发现在取一台服务器上的文件时卡在那里了。自己...
来自:
jakieyoung的专栏
时至今日,能够轻松自在的坐在这里跟大家分享一下我安装paramiko模块的经历,我感到非常幸福。。。因为实习公司网络的原因,安装过程中所需要的所有文件都是我用手机流量下载的,而且办公室的手机信号还不太...
来自:
PARKZHOU的博客
Windows下有很多非常好的SSH客户端,比如Putty。在python的世界里,你可以使用原始套接字和一些加密函数创建自己的SSH客户端或服务端,但如果有现成的模块,为什么还要自己实现呢。使用Pa...
来自:
Just Do IT的行者之路
RuntimeoutError
错误提示:ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org',
port=443):...
来自:
lycorisradiata_1的专栏
1. 前言
隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别、文本翻译、序列预测、中文分词等多个领域。虽然近年来,由于RNN等深度学习方法的发展,HMM模型...
来自:
tostq的专栏
Axure RP 8.0 注册码仅供个人学习交流使用(建议购买正版授权)8.1.0.3366亲测可用
Licensee:University of Science and Technology o...
来自:
前端大白兔的博客
最近在论坛中看到了很多实用html5开发视频播放,音乐播放的功能,大部分都在寻找答案。因此我就在这里做一个demo,供大家相互学习。html5开发越来越流行了,而对于视频这一块也是必不可少的一部分。如...
来自:
xmt1139057136的专栏
翻译: selfimprE-mail: lgg860911@yahoo.com.cnBlog: http://blog.csdn.net/lgg201转载请声明出处: http://blog.csd...
来自:
goosman-lei
上篇文章讲述了机器学习决策树的原理,以及如何选择最优特征作为分类特征。本篇文章将在此基础上进行介绍。主要内容包括:决策树构建、决策树可视化、使用决策树进行分类预测、决策树的存储和读取、sklearn实...
来自:
Jack-Cui
大早晨的调着调着程序,视线没离开一会,就发现jlink自动断开连接了,然后重新拔插jlink、重启都不行,才发现小灯已经不亮了,原来是固件损坏了,果断想办法修复这位大爷。以前修复过这个问题,但当时系统...
来自:
紫藤的专栏
人脸识别之特征脸方法(Eigenface)zouxy09@qq.comhttp://blog.csdn.net/zouxy09 因为需要,花了一点时间写了下经典的基于特征脸(EigenFa...
来自:
zouxy09的专栏
Assimp是目前比较全的3D格式解析库了,熟悉3D游戏开发的同行都知道,3D的格式非常混乱,各种3D格式在不同场合都有他们特定的应用,游戏引擎只能够解析少部分3D格式,更多实用的格式来自游戏公司自定...
来自:
开发游戏,辉煌全中国
问题场景描述整个项目通过Maven构建,大致结构如下:
核心Spring框架一个module spring-boot-base
service和dao一个module server-core
提供系统...
来自:
开发随笔
0、前提安装elasticsearch的最新版本,目前是2.3.4版本。
elsticsearch新增扮演的角色是:rally分析结果会存储到elasticsearch。1、运行esrally 高级...
来自:
铭毅天下
一、为什么选择RocketMQ
我们来看看官方回答:
“我们研究发现,对于ActiveMQ而言,随着越来越多的使用queues和topics,其IO成为了瓶颈。某些情况下,消费者缓慢(消费能力不足)还...
来自:
jayjjb的专栏