首页 > 编程语言 > 详细

Python 自动化paramiko操作linux使用shell命令,以及文件上传下载linux与windows之间的实现

时间:2019-03-16 00:45:19      阅读:26      评论:0      收藏:0      [点我收藏+]

标签:shell   else   exception   denied   之间   clas   word   windows   ftpclient   

# coding=utf8
import paramiko

"""
    /*
    python -m pip install paramiko
    python version 3.7
    author Chen,Date:2019.2.10
    */
"""
class SSH(object):

    def __init__(self,host,port,user,pwd):
        self.host=host
        self.port=port
        self.user=user
        self.pwd=pwd

    # """其实这样写不是最好办法,解决多行根本是paramiko执行机制,
    # 每次执行完ssh.exec_command()函数会自动回到session初始化root路径,多行建议以;分号隔开"""
    def ssh_connect(self,**shell):
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(self.host,self.port,self.user,self.pwd)
        self.ssh=ssh
        for key in shell:
            stdin, stdout, stderr = self.ssh.exec_command(shell[key])
            res,err = stdout.read(),stderr.read()
            result = res if res else err
            print(result.decode("utf-8"))
        self.ssh.close()

    # """
    # /*
    # 注意点:remote_path 和 local_path ,
    # 路径必须为带文件名全路径只到目录路径会报:
    # [Errno 13] Permission denied,若路径怕出错可以在最前面加r
    # */
    # """
    def sftp_get_from_linux(self,remote_path,local_path):
        try:
            transport = paramiko.Transport((self.host ,self.port))
            transport.connect(username=self.user,password=self.pwd)
            sftp=paramiko.SFTPClient.from_transport(transport)
            sftp.get(remotepath=remote_path,localpath=local_path)
            transport.close()
        except Exception as e:
            print(e)
        else:
            print("下载ok")
    def sftp_put_to_linux(self,local_path,remote_path):
        try:
            transport = paramiko.Transport((self.host ,self.port))
            transport.connect(username=self.user,password=self.pwd)
            sftp=paramiko.SFTPClient.from_transport(transport)
            sftp.put(localpath=local_path,remotepath=remote_path)
            transport.close()
        except Exception as e:
            print(e)
        else:
            print("上传ok")

 

Python 自动化paramiko操作linux使用shell命令,以及文件上传下载linux与windows之间的实现

标签:shell   else   exception   denied   之间   clas   word   windows   ftpclient   

原文:https://www.cnblogs.com/SunshineKimi/p/10540201.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号