美洲杯外围下注_美洲杯投注导航_[所有网址]

美洲杯外围下注_美洲杯投注导航_[所有网址]是该公司为打造信誉第一,2014最新体验金,美洲杯外围下注_美洲杯投注导航_[所有网址]这里的所有老虎机游戏及真人百家乐游戏都具有欧洲风格,致力成为最具传播力和互动性的娱乐城网站。

Python Paramiko模块的使用实际案例

2019-06-12 16:36 来源:未知

正文商量的要紧是Python Paramiko模块的行使的实例,具体如下。

Python Paramiko模块的利用实际案例,pythonparamiko

本文商量的机若是Python Paramiko模块的运用的实例,具体如下。

Windows下有诸多相当好的SSH客户端,举个例子Putty。在python的社会风气里,你能够运用原始套接字和局地加密函数成立和睦的SSH客户端或服务端,但万1有现有的模块,为何还要和煦完毕呢。使用Paramiko库中的PyCrypto能够让您轻轻巧松利用SSH二协议。

Paramiko的装置方式网络有成都百货上千这么的帖子,这里就不描述了。这里根本讲怎么运用它。Paramiko达成SSH二不外乎从多少个角度完成:SSH客户端与服务端。

第三让大家理清以下多少个名词:

  • SSHClient:包装了Channel、Transport、SFTPClient
  • Channel:是一种类Socket,一种安全的SSH传输通道;
  • Transport:是壹种加密的对话(可是如此三个对象的Session并未有创建),并且创办了3个加密的tunnels,这些tunnels叫做Channel;
  • Session:是client与Server保持几次三番的指标,用connect()/start_client()/start_server()开头对话。

具体请参照他事他说加以考察Paramiko的库文书档案:

下边给出多少个常用的行使案例:

python paramiko模块学习分享,pythonparamiko

paramiko是用python语言写的1个模块,坚守SSH贰协议,扶助以加密和表明的不2秘技,举办长距离服务器的一而再。paramiko帮助Linux, Solaris, BSD, MacOS X, Windows等平台经过SSH从3个阳台连接到其它一个平台。利用该模块,能够一本万利的张开ssh连接和sftp协议举行sftp文件传输。

第二让大家理清以下多少个名词:

SSHClient:包装了Channel、Transport、SFTPClient
Channel:是一系列Socket,壹种安全的SSH传输通道;
Transport:是1种加密的对话(可是那样3个对象的Session并未有创设),并且成立了八个加密的tunnels,那几个tunnels叫做Channel;
Session:是client与Server保持三番五次的靶子,用connect()/start_client()/start_server()开端会话.

paramiko 参考 

下载安装

pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto

pip3 install pycrypto
pip3 install paramiko 

具人体模型块使用 

SSHClient:

远程连接分为两种:(一)基于用户名密码连接 (2)基于公钥秘钥连接

经过是用paramiko远程操作,其实本质也分为两种:(一)只用SSHClient (二)自身创立2个transport 

依赖用户名密码连接 

import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='host', port=22, username='root', password='123')
# 执行命令  stdout命令结果,stderr错误
stdin, stdout, stderr = ssh.exec_command('ls')
# 获取命令结果 
result = stdout.read()
# 关闭连接
ssh.close()

SSHClient 封装 Transport

import paramiko

transport = paramiko.Transport(('hostname', 22))
transport.connect(username='root', password='123')

ssh = paramiko.SSHClient()
ssh._transport = transport

stdin, stdout, stderr = ssh.exec_command('df')
print(stdout.read())

transport.close()

据说公钥秘钥连接

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='host', port=22, username='root', key=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
# 关闭连接
ssh.close()

SSHClient 封装Transport

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
transport = paramiko.Transport(('hostname', 22))
transport.connect(username='wupeiqi', pkey=private_key)
ssh = paramiko.SSHClient()
ssh._transport = transport
stdin, stdout, stderr = ssh.exec_command('df')
transport.close()

SFTPClient:

用于连接远程服务器并开始展览上传下载功能。

听他们讲用户名密码上传下载

import paramiko

transport = paramiko.Transport(('hostname',22))
transport.connect(username='root',password='123')

sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 将remove_path 下载到本地 local_path
sftp.get('remove_path', 'local_path')

transport.close()

依赖公钥秘钥上传下载

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')

transport = paramiko.Transport(('hostname', 22))
transport.connect(username='root', pkey=private_key )

sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 将remove_path 下载到本地 local_path
sftp.get('remove_path', 'local_path')

transport.close()

德姆o: 完毕长途命令实行和文件上传

import paramiko

class SSHConnection(object):

  def __init__(self, host='192.168.12.68', port=22, username='locojoy',pwd='123321QQ!'):
    self.host = host
    self.port = port
    self.username = username
    self.pwd = pwd
    self.__k = None

  def run(self):
    self.connect() # 连接远程服务器
    self.upload('db.py','/tmp/1.py') # 将本地的db.py文件上传到远端服务器的/tmp/目录下并改名为1.py
    self.cmd('df') # 执行df 命令
    self.close()  # 关闭连接

  def connect(self):
    transport = paramiko.Transport((self.host, self.port))
    transport.connect(username=self.username, password=self.pwd)
    self.__transport = transport

  def close(self):
    self.__transport.close()

  def upload(self,local_path,target_path):
    sftp = paramiko.SFTPClient.from_transport(self.__transport)
    sftp.put(local_path,target_path)

  def cmd(self, command):
    ssh = paramiko.SSHClient()
    ssh._transport = self.__transport
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command(command)
    # 获取命令结果
    result = stdout.read()
    print(result)
    return result

obj = SSHConnection()
obj.run()

以上正是本文的全部内容,希望对大家的就学抱有援助,也期望我们多多援助帮客之家。

paramiko模块学习分享,pythonparamiko paramiko是用python语言写的三个模块,服从SSH二协议,扶助以加密和表达的主意,举办远程服务器的连接...

Windows下有多数1贰分好的SSH客户端,例如Putty。在python的社会风气里,你能够应用原始套接字和有些加密函数创立和煦的SSH客户端或服务端,但只要有现有的模块,为啥还要协和实现吗。使用Paramiko库中的PyCrypto能够让您轻轻便松利用SSH二协议。

SSH客户端实现方案壹,施行长途命令

本条方案一直利用SSHClient对象的exec_command()在服务端实施命令,下边是有血有肉代码:

  #实例化SSHClient
  client = paramiko.SSHClient()
  #自动添加策略,保存服务器的主机名和密钥信息
  client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  #连接SSH服务端,以用户名和密码进行认证
  client.connect(ip,username=user,password=passwd)
  #打开一个Channel并执行命令
  stdin,stdout,stderr = client.exec_command(command)
  #打印执行结果
  print stdout.readlines()
  #关闭SSHClient
  client.close()

Paramiko的装置方式网络有为数相当的多如此的帖子,这里就不描述了。这里最重要讲怎样选择它。Paramiko完结SSH②不外乎从四个角度完结:SSH客户端与服务端。

SSH客户端实现方案二,试行远程命令

以此方案是将SSHClient创设连接的靶子得到二个Transport对象,以Transport对象的exec_command()在服务端实施命令,下边是切实可行代码:

#实例化SSHClient
client = paramiko.SSHClient()
#自动添加策略,保存服务器的主机名和密钥信息
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接SSH服务端,以用户名和密码进行认证
client.connect(ip,username=user,password=passwd)
#实例化Transport,并建立会话Session
ssh_session = client.get_transport().open_session()
if ssh_session.active:
  ssh_session.exec_command(command)
  print ssh_session.recv(1024)
client.close()

首先让大家理清以下多少个名词:

SSH服务端的落到实处

贯彻SSH服务端必须继续ServerInterface,并落到实处里面相应的点子。具体代码如下:

import socket
import sys
import threading
import paramiko

host_key = paramiko.RSAKey(filename='private_key.key')

class Server(paramiko.ServerInterface):
  def __init__(self):
  #执行start_server()方法首先会触发Event,如果返回成功,is_active返回True
    self.event = threading.Event()

  #当is_active返回True,进入到认证阶段
  def check_auth_password(self, username, password):
    if (username == 'root') and (password == '123456'):
      return paramiko.AUTH_SUCCESSFUL
    return paramiko.AUTH_FAILED

  #当认证成功,client会请求打开一个Channel
  def check_channel_request(self, kind, chanid):
    if kind == 'session':
      return paramiko.OPEN_SUCCEEDED
#命令行接收ip与port
server = sys.argv[1]
ssh_port = int(sys.argv[2])

#建立socket
try:
  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  #TCP socket
  sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  sock.bind((server, ssh_port))  
  sock.listen(100)  
  print '[ ] Listening for connection ...'
  client, addr = sock.accept()
except Exception, e:
  print '[-] Listen failed: '   str(e)
  sys.exit(1)
print '[ ] Got a connection!'

try:
  #用sock.accept()返回的socket实例化Transport
  bhSession = paramiko.Transport(client)
  #添加一个RSA密钥加密会话
  bhSession.add_server_key(host_key)
  server = Server()
  try:
  #启动SSH服务端
    bhSession.start_server(server=server)
  except paramiko.SSHException, x:
    print '[-] SSH negotiation failed'
  chan = bhSession.accept(20) 
  print '[ ] Authenticated!'
  print chan.recv(1024)
  chan.send("Welcome to my ssh")
  while True:
    try:
      command = raw_input("Enter command:").strip("n") 
      if command != 'exit':
        chan.send(command)
        print chan.recv(1024)   'n'
      else:
        chan.send('exit')
        print 'exiting'
        bhSession.close()
        raise Exception('exit')
    except KeyboardInterrupt:
      bhSession.close()
except Exception, e:
  print '[-] Caught exception: '   str(e)
  try:
    bhSession.close()
  except:
    pass
  sys.exit(1)
  • SSHClient:包装了Channel、Transport、SFTPClient
  • Channel:是一种类Socket,一种安全的SSH传输通道;
  • Transport:是1种加密的对话(然则那样一个对象的Session并未有创设),并且创立了四个加密的tunnels,那些tunnels叫做Channel;
  • Session:是client与Server保持几次三番的靶子,用connect()/start_client()/start_server()初叶对话。

选拔SFTP上传文件

import paramiko
#获取Transport实例
tran = paramiko.Transport(("host_ip",22))
#连接SSH服务端
tran.connect(username = "username", password = "password")
#获取SFTP实例
sftp = paramiko.SFTPClient.from_transport(tran)
#设置上传的本地/远程文件路径
localpath="/root/Desktop/python/NewNC.py"
remotepath="/tmp/NewNC.py"
#执行上传动作
sftp.put(localpath,remotepath)

tran.close()
TAG标签:
版权声明:本文由美洲杯外围下注发布于系统,转载请注明出处:Python Paramiko模块的使用实际案例