欢迎访问宙启技术站
智能推送

Python编写的SCP文件传输脚本示例

发布时间:2023-12-17 06:49:21

以下是一个使用Python编写的SCP文件传输脚本示例:

import paramiko
import os

def scp_file(hostname, port, username, password, local_path, remote_path):
    # 创建SSH客户端
    ssh_client = paramiko.SSHClient()
    
    # 自动添加目标主机的SSH密钥
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    try:
        # 连接到目标主机
        ssh_client.connect(hostname=hostname, port=port, username=username, password=password)
        
        # 创建SCP客户端
        scp_client = ssh_client.open_sftp()
        
        # 从本地路径上传文件到远程路径
        scp_client.put(local_path, remote_path)
        
        # 关闭SCP客户端
        scp_client.close()
    
    except paramiko.AuthenticationException:
        print("身份验证失败,请确认用户名和密码是否正确。")
    
    except paramiko.SSHException as e:
        print("SSH连接失败,请检查网络连接或目标主机的SSH服务是否开启。")
    
    finally:
        # 关闭SSH客户端
        ssh_client.close()

# 示例用法
if __name__ == '__main__':
    # 设置目标主机的信息
    hostname = 'example.com'
    port = 22
    username = 'myusername'
    password = 'mypassword'
    
    # 设置本地文件路径和远程文件路径
    local_path = 'example.txt'
    remote_path = '/home/myusername/example.txt'
    
    scp_file(hostname, port, username, password, local_path, remote_path)

该示例代码主要使用了Python的paramiko库来实现SCP文件传输功能。首先,我们需要创建一个SSH客户端,并通过connect()方法连接到目标主机。然后,我们创建一个SCP客户端,并使用put()方法将本地文件上传到远程路径。最后,我们关闭SCP客户端和SSH客户端。

在使用时,您需要根据实际情况设置目标主机的信息,包括主机名、端口号、用户名和密码。同时,您需要设置本地文件路径和远程文件路径,以指定要传输的文件。

请注意,在实际使用中,建议使用SSH密钥进行身份验证,而不是使用密码。这样可以提高安全性。

希望以上示例对您有所帮助!