一、任务要求
要使用Python编写代码来远程给Linux主机上传一个文件,可以使用paramiko
库,这是一个实现了SSHv2协议的Python库,它支持SSH连接(包括客户端和服务端),并且提供SFTP(SSH File Transfer Protocol)功能来上传和下载文件。
实现python编写代码远程登录linux主机,执行一条命令ls
实现python编写代码远程给linux主机上传一个文件
二、相关代码
连接虚拟机并执行ls操作:
import paramiko
# 设置SSH连接信息
hostname = '192.168.*.*'
port = 22
username = 'zhou'
password = '*' # 或者使用私钥进行身份验证
# 创建SSH客户端对象
ssh = paramiko.SSHClient()
# 自动添加主机名和主机密钥到本地HostKeys对象,并保存,只在第一次连接时有用
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接到SSH服务器
ssh.connect(hostname=hostname, port=port, username=username, password=password)
# 执行ls命令
stdin, stdout, stderr = ssh.exec_command('ls -l')
# 打印输出
print(stdout.read().decode())
print(stderr.read().decode())
# 关闭连接
ssh.close()
连接虚拟机并给主机上传一个文件:
(确保目录在远程Linux主机上存在,并且您有权限在该目录下写入文件)
import paramiko
def upload_file(local_file, remote_file, port, hostname, username, password):
# 创建SSH客户端
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动添加主机名和主机密钥到本地HostKeys对象,并保存
# 连接到SSH服务器
ssh.connect(hostname=hostname, port=port, username=username, password=password)
# 创建一个SFTP客户端对象
sftp = ssh.open_sftp()
# 上传文件
sftp.put(local_file, remote_file)
# 关闭SFTP和SSH连接
sftp.close()
ssh.close()
# 使用示例
if __name__ == "__main__":
# Linux 主机信息
hostname = '192.168.*.*' # Linux主机IP地址
username = 'zhou' # SSH用户名
password = '******' # SSH密码
port = 22
# 上传文件
local_file = r"D:\Desktop\蛋糕系统\代码\1.txt" # 本地文件路径
remote_file = "/home/zhou/ccc/1.txt" # 远程Linux主机上的目标路径
upload_file(local_file, remote_file, port, hostname, username, password)