文章目录
- 使用Python通过SSH自动化Linux主机管理
- 代码
- 执行ls结果:
- 文件传输:
使用Python通过SSH自动化Linux主机管理
在系统管理与自动化运维中,SSH(Secure Shell)是一个常用的协议,用于安全地访问远程计算机。Python提供了一个名为paramiko的库,它使得通过SSH进行远程操作变得简单。本文将展示如何使用paramiko库实现远程Linux主机的命令执行和文件上传。
实现python编写代码远程登录linux主机,执行一条命令ls
实现python编写代码远程给linux主机上传一个文件
代码
import paramiko
def ssh_connect_and_execute_command(host, username, password, command):
"""
连接到SSH服务器并执行命令。
参数:
- host: 远程主机的IP地址
- username: SSH登录用户名
- password: SSH登录密码
- command: 要执行的命令
返回:
- 命令的输出结果
"""
# 创建 SSH 客户端并连接
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, username=username, password=password)
# 执行命令
stdin, stdout, stderr = client.exec_command(command)
# 获取命令输出和错误信息
output = stdout.read().decode()
error = stderr.read().decode()
# 打印输出和错误信息
print(output)
if error:
print(f"Error: {error}")
# 关闭连接
client.close()
return output
def ssh_connect_and_upload_file(host, username, password, local_path, remote_path):
"""
连接到SSH服务器并上传文件。
参数:
- local_path: 本地文件的路径
- remote_path: 远程文件的目标路径
"""
# 创建 SSH 客户端并连接
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, username=username, password=password)
# 上传文件
sftp = client.open_sftp()
sftp.put(local_path, remote_path)
# 关闭SFTP会话
sftp.close()
# 关闭SSH连接
client.close()
# 使用示例
if __name__ == "__main__":
# Linux 主机信息
host = "192.168.204.133"
username = "luruijie"
password = "********"
# 执行命令
command = "ls"
print("Executing command:", command)
output = ssh_connect_and_execute_command(host, username, password, command)
print("Command output:", output)
# 上传文件
local_path = "test_remote.txt"
remote_path = "/home/luruijie/文档/test_remote.txt"
print("Uploading file from", local_path, "to", remote_path)
ssh_connect_and_upload_file(host, username, password, local_path, remote_path)
执行ls结果:
Linux终端中验证
文件传输:
安全注意事项
- 出于安全考虑,不建议在脚本中硬编码密码。考虑使用环境变量或配置文件来存储敏感信息。
- 使用密钥认证代替密码认证可以提高安全性。