您的位置:首页 > 编程语言 > Python开发

python paramiko

2015-04-14 17:24 465 查看
 使用paramiko 上传文件到sftp服务器:

代码:

import paramiko

import types

from batchdb import *

__author__ = 'hp'

def LogSftp(files, sftp_type):

    conn = gen_db_connection()

    ip = str(get_para(conn, 'sftp', 'ip'))

    port = int(get_para(conn, 'sftp', 'port'))

    if not port:

        port = 22

    username = str(get_para(conn, 'sftp', 'username'))

    password = str(get_para(conn, 'sftp', 'password'))

    remote_path = str(get_para(conn, 'sftp', 'path'))

    return_code = True

    # if not os.path.exists(remote_path): os.mkdir(remote_path)

    if type(files) == types.ListType:

        pass

    else:

        files = [files]

    try:

        transport = paramiko.Transport((ip, port))

        transport.connect(username= username, password= password)

        sftp = paramiko.SFTPClient.from_transport(transport)

    except:

        log(conn,'sftp', 'Connect to server%s %s failed!'%(ip, port), '1' )

        return False

    try:

        sftp.chdir(remote_path)

    except:

        log(conn, 'sftp', 'chdir server-%s file path %s failed!'%(ip,remote_path), '1')

        return False

#  上传文件到服务器

    if sftp_type == 'put':

        for f in files:

            f_remote = os.path.split(f)[-1]

            #remo_file_path = remote_path + f_remote

            try:

                sftp.put(f, f_remote)

                log(conn, 'sftp', 'put log file %s to server-%s successfully!'%(f, ip),'0')

            except:

                return_code = False

                log(conn,'sftp', 'Put file %s to server-%s   failed! '%(f, ip),'1')

# 从服务器 下载文件到本地

# 注意的是这里的sftp服务上的路径为 sftp下的路径 

    elif sftp_type == 'get':

        sftp.get(f_remote_path, f_local_path)

    sftp.close()

    transport.close()

    conn.close()

    return return_code

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息