基于 paramiko 的使用,将其做简单封装,便于使用
# -*- coding: utf-8 -*-
import paramiko
class SSHClient(object):
def __init__(self, hostname, username,port,private_key):#我这是私钥登录,密码的话就写password
self.hostname = hostname
self.username = username
self.port = port
#self.password = password
self.priveate = private_id
self.ssh = None
self._connect()
def __del__(self):
self.ssh.close()
def _connect(self):
self.ssh = paramiko.SSHClient()
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#self.ssh.connect(hostname=self.hostname, username=self.username, password=self.password)
self.ssh.connect(hostname=host,port=int(port),username=username,pkey=private_key)
def execute_command(self, command):
stdin, stdout, stderr = self.ssh.exec_command(command)
stdout = stdout.read().decode("utf-8")#这个得看你的服务器,有可能是gbk
stderr = stderr.read().decode("utf-8")
return stdout, stderr
# 使用示例
def main():
cmd = "pwd"
private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
client = SSHClient(hostname, username,port,private_key)
stdout, stderr = client.execute_command(cmd)
print(stdout, stderr)
if __name__ == '__main__':
main()
这个玩意还是root用户登录的比较舒服一点,普通用户还是涉及切换用户,后边给补上