Python中的SSH、SFTP和FTP操作详解
import paramiko
from paramiko.ssh_exception import AuthenticationException, SSHException
# 创建SSH和SFTP对象
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sftp = paramiko.Transport((hostname, port))
try:
# 连接SFTP服务器
sftp.connect(username=username, password=password)
sftp = sftp.open_sftp_client()
# 连接SSH服务器
ssh.connect(hostname=hostname, port=port, username=username, password=password)
# 执行远程命令
stdin, stdout, stderr = ssh.exec_command('ls -l')
print(stdout.read().decode())
# 上传文件到远端服务器
remote_file = sftp.put(local_file_path, remote_file_path)
# 关闭SFTP和SSH连接
sftp.close()
ssh.close()
except AuthenticationException:
print("Authentication failed, please verify your credentials.")
except SSHException as e:
print(f"SSH error occurred: {e}")
except Exception as e:
print(f"Error: {e}")
finally:
# 如果连接被打开,关闭连接
if sftp._channel:
sftp.close()
if ssh:
ssh.close()
这段代码展示了如何使用Paramiko库创建SSH和SFTP连接,执行远程命令,以及上传文件到远端服务器。同时,它还包括了异常处理,以确保即使在遇到认证错误或其他问题时,连接也能被正确关闭。
评论已关闭