python连接服务器文件_Python--paramiko库:连接远程服务器操作文件

import paramiko

from loggingutils.mylogger import logger as log

class SSHConnection(object):

def __init__(self, host, port, username, password):

self._host = host

self._port = port

self._username = username

self._password = password

self._transport = None

self._sftp = None

self._client = None

self._connect()

def _connect(self):

transport = paramiko.Transport((self._host, self._port))

transport.connect(username=self._username, password=self._password)

self._transport = transport

# 下载

def download(self, remotepath, localpath):

if self._sftp is None:

self._sftp = paramiko.SFTPClient.from_transport(self._transport)

self._sftp.get(remotepath, localpath)

# 上传

def put(self, localpath, remotepath):

if self._sftp is None:

self._sftp = paramiko.SFTPClient.from_transport(self._transport)

self._sftp.put(localpath, remotepath)

# 执行命令

def exec_command(self, command):

if self._client is None:

self._client = paramiko.SSHClient()

self._client._transport = self._transport

stdin, stdout, stderr = self._client.exec_command(command)

data = stdout.read()

if len(data) > 0:

log.info(data.decode('utf-8'))

return data.decode('utf-8')

err = stderr.read()

if len(err) > 0:

log.error(err.decode('utf-8'))

return err

def close(self):

if self._transport:

self._transport.close()

if self._client:

self._client.close()

if __name__ == "__main__":

hostname = 'xxxxxxxxxxxx'

port = 22

username = 'xxxxx'

password = 'xxxxxxxx'

command = 'ls'

conn = SSHConnection(hostname, port, username, password)

localpath = 'E:/1.log'

remotepath = '/logs/laravel.log'

print('-----------downlaod start--------------')

conn.download(remotepath, localpath)

print('-----------download end----------------')

print('-----------put begin-------------------')

conn.put(localpath, remotepath)

print('-----------put end---------------------')

conn.exec_command(command)

print('--------------------------------')

conn.exec_command('pwd')

print('--------------------------------')

conn.exec_command('ls -l')

conn.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值