温馨提示×

centos python如何远程调用

小樊
42
2026-10-12 04:07:21
栏目: 编程语言

在 CentOS 上实现 Python 远程调用,常见有几种方式,按使用场景从简单到专业给你梳理一下:


一、SSH 远程执行(最常用、最简单)

1️⃣ 使用 paramiko(Python SSH 库)

适合:脚本自动远程执行命令

安装

pip install paramiko

示例

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect('192.168.1.100', username='root', password='password')

stdin, stdout, stderr = ssh.exec_command('python3 test.py')
print(stdout.read().decode())

ssh.close()

✅ 优点:无需额外服务
❌ 缺点:只能执行命令,不是函数级调用


2️⃣ 使用 fabric(基于 paramiko)

适合:批量服务器操作

pip install fabric
from fabric import Connection

c = Connection('root@192.168.1.100')
result = c.run('python3 test.py', hide=True)
print(result.stdout)

二、RPC 远程函数调用(函数级别)

3️⃣ xmlrpc(Python 内置)

适合:简单内部服务

服务端(CentOS)

from xmlrpc.server import SimpleXMLRPCServer

def add(a, b):
    return a + b

server = SimpleXMLRPCServer(("0.0.0.0", 8000))
server.register_function(add, "add")
server.serve_forever()

客户端

import xmlrpc.client
s = xmlrpc.client.ServerProxy("http://192.168.1.100:8000")
print(s.add(1, 2))

⚠️ 注意防火墙:

firewall-cmd --add-port=8000/tcp --permanent
firewall-cmd --reload

4️⃣ grpc(生产级推荐)

适合:高性能、跨语言

pip install grpcio grpcio-tools

需要定义 .proto 文件(稍复杂,但最规范)


三、HTTP API 调用(最通用)

5️⃣ Flask / FastAPI 暴露接口

适合:Web 服务、跨语言

CentOS 服务端

pip install fastapi uvicorn
from fastapi import FastAPI

app = FastAPI()

@app.get("/add")
def add(a: int, b: int):
    return {"result": a + b}
uvicorn main:app --host 0.0.0.0 --port 8000

远程调用

import requests
r = requests.get("http://192.168.1.100:8000/add?a=1&b=2")
print(r.json())

✅ 最灵活
✅ 可被任意语言调用


四、消息队列(异步远程调用)

6️⃣ RabbitMQ / Redis

适合:任务队列、分布式系统

pip install celery redis

五、如何选择?

场景 推荐方式
执行命令 paramiko / fabric
简单函数调用 xmlrpc
Web / 跨语言 FastAPI
高性能服务 gRPC
异步任务 Celery

如果你能说清楚:

  • 是 命令级 还是 函数级
  • 是否 跨语言
  • 是否 生产环境

我可以直接给你一套完整方案(含防火墙、systemd 服务)。

0 踩