rpyc + plumbum 实现远程调用执行shell脚本

rpyc可以很方便实现远程方法调用, 而plumbum则可以实现在python中类似shell的方式编码:

具体实现代码如下:

Server.py

import rpyc
from rpyc.utils.server import ThreadedServer
from plumbum import local
from plumbum.cmd import sh

class CalculatorService(rpyc.Service):
    """根据路径和脚本名执行脚本
    :param path:  路径
    :param shn:   执行脚本名
    """
    def exposed_execute(self, path, shn):
        exec=sh[shn]
        with local.cwd(local.cwd / path):
            exec()
        return

if __name__ == "__main__":
    server = ThreadedServer(service=CalculatorService, port=12105)
    server.start()

Client.py

import rpyc

class ClientService(rpyc.Service):
    def exposed_foo(self):
        return "foo"

conn = rpyc.connect("10.47.58.196", 12105)
#脚本路径
path="/data/local/test"
#脚本名
shn="echo.sh"
#远程调用执行远程shell脚本
x = conn.root.execute(path, shn)
conn.close()

将echo.sh脚本放在/data/local/test路径下,先远程启动Server.py,然后执行Client.py即可远程调用执行echo.sh脚本。

原文地址:https://www.cnblogs.com/cord/p/9226655.html

时间: 2024-10-13 10:15:52

rpyc + plumbum 实现远程调用执行shell脚本的相关文章

怎样在java代码中调用执行shell脚本

// 用法:Runtime.getRuntime().exec("命令"); String shpath="/test/test.sh"; //程序路径 Process process =null; String command1 = “chmod 777 ” + shpath; try { Runtime.getRuntime().exec(command1 ).waitFor(); } catch (IOException e1) { e1.printStack

【转】Java 连接远程Linux 服务器执行 shell 脚本查看 CPU、内存、硬盘信息

pom.xml jar 包支持 <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.53</version> </dependency> 代码: package com.spring.bean.annotation; import java.io.BufferedReader; import

JAVA远程执行Shell脚本类

1.java远程执行shell脚本类 1 package com.test.common.utility; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.UnsupportedEncodingException; 6 import java.nio.charset.Charset; 7 8 import org.apache.commons.io.IOUtils; 9 import o

Java执行shell脚本关闭远程数据库

本实例为用Java执行shell脚本启动或关闭远程Mysql数据库,需求原因:游戏服务器合服后,为了节省内存消耗,需要关闭合服后的服务器不必要的数据库(一台服务器主机存在多个MySql数据库),以提高服务器性能,但有时需要查询历史游戏玩家信息,又需要开启数据库,为了节省运维人员的人力和时间,游戏后台就提供非运维人员都可操作开关数据库的操作. 功能实现步骤: 第一:服务器后台提供参数,发送异步请求,请求方法如下 <script type="text/javascript">

Linux中执行shell脚本命令的4种方法总结

bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: cd /data/shell ./hello.sh ./的意思是说在当前的工作目录下执行hello.sh.如果不加上./,bash可能会响应找到不到hello.sh的错误信息.因为目前的工作目录(/data/shell)可能不在

Linux中执行shell脚本的4种方法总结

bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: cd /data/shell ./hello.sh ./的意思是说在当前的工作目录下执行hello.sh.如果不加上./,bash可能会响应找到不到hello.sh的错误信息.因为目前的工作目录(/data/shell)可能不在

Linux中执行shell脚本的4种方法

这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下. bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/root/bin目录中并已有执行权限(添加权限的方法:chmod +x hello.sh). 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: ./ 的意思是说在当前的工作目录下执行hello.sh.如果不加上

Linux中执行shell脚本

这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下 bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限.方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:复制代码 代码如下: cd /data/shell./hello.sh ./的意思是说在当前的工作目录下执行hello.s

运维经验分享(六)-- 深究crontab不能正确执行Shell脚本的问题(二)

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管