python ssh clinet

业务需要, 封装了一个ssh 客户端;

import paramiko
host = "192.168.11.1"
port = 22
user = "1"
pw = "1"
class SshClient:
def __init__(self) -> None:
self.ssh_client = paramiko.SSHClient()
self.ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.ssh_client.connect(hostname=host, port=port, username=user, password=pw)
self.ftp_client = self.ssh_client.open_sftp()
def ssh_exec(self, cmd):
_, stdout, stderr = self.ssh_client.exec_command(cmd)
print(stdout.read())
print(stderr.read())
def get_ssh_exec(self, cmd):
_, stdout, _ = self.ssh_client.exec_command(cmd)
out_data = stdout.read().strip().decode("utf8")
return out_data
def ftp_get(self, remote_file, local_file):
self.ftp_client.get(remote_file, local_file)
def ftp_put(self, local_file, remote_file):
self.ftp_client.put(local_file, remote_file)
def __del__(self):
self.ssh_client.close()
self.ftp_client.close()
# 调用展示某目录下的文件
cam_files = SshClient().get_ssh_exec(f"ls /root/")
# 下载某文件
vf = "/root/a.txt"
filename = "a.new.txt"
SshClient().ftp_get(vf, f"/tmp/{filename}")
posted @   干炸小黄鱼  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示