python3使用paramiko模块构建Server类,实现ssh发送无交互指令、sftp上传下载,与之前的一版相比,channel发送指令可以支持交互指令,优化了部分代码。
类代码
"""
@author: Phoenix
"""
import paramiko
from time import sleep
class Server(object):
def __init__(self, ip='', port=22, username='', password='', timeout=30):
"""
通过IP, 端口,用户名,密码,超时时间,初始化一个远程主机
:param str ip:
:param int port: default value is 22
:param str username:
:param str password:
:param int timeout: default value is 30.
"""
self._ip = ip
self._port = port
self._username = username
self._password = password
self._timeout = timeout
self._transport = None
self._channel = None
self._ssh = None
self._sftp = None
self._prompt = None
self._try_times = 2
def connect(self):
"""
:return: result
"""
_result = ''
while True:
try:
self._transport = paramiko.Transport((self._ip, self._port))
self._transport.connect(username=self._username, password=self._password)
_result += '%s 创建成功' % self._ip
break
except Exception as _e:
if self._try_times != 0:
_result += '第%i次连接 %s 异常,原因:%s\n' % (3 - self._try_times, self._ip, _e)
_result += '进行重试\n'
self._try_times -= 1