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脚本。

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

  1. ssh远程调用之shell脚本远程调用应用程序

    1.引子 前几天有一个需求是这样的:本机的shell脚本,通过远程调用另一台机子上的shell脚本,来完成对远程机子上分发的Java程序的执行和其他操作.看上去挺容易,实际上也不难. 第一步:用scp ...

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

    // 用法:Runtime.getRuntime().exec("命令"); String shpath="/test/test.sh"; //程序路径 Pro ...

  3. 在PHP中调用php_ssh实现远程登陆linux服务器并执行shell脚本。

    这个功能主要用于在web端利用程序对远程服务器进行操作,通过PHP_ssh执行shell脚本来实现. 首先要安装php_ssh2组件,linux中centos7下有ssh2源,直接安装.window下 ...

  4. Java SSH远程执行Shell脚本实现(转)

    前言 此程序需要ganymed-ssh2-build210.jar包(下载地址:http://www.ganymed.ethz.ch/ssh2/) 为了调试方便,可以将\ganymed-ssh2-bu ...

  5. JAVA远程执行Shell脚本类

    1.java远程执行shell脚本类 package com.test.common.utility; import java.io.IOException; import java.io.Input ...

  6. loadrunner调用plink,远程linux执行shell命令

    loadrunner调用plink,远程linux执行shell命令   脚本: Action() {   char* cmd; cmd = lr_eval_string("C:\\\&qu ...

  7. Java实践 — SSH远程执行Shell脚本(转)

    原文地址:http://www.open-open.com/lib/view/open1384351384024.html 1. SSH简介         SSH是Secure Shell的缩写,一 ...

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

    pom.xml jar 包支持 <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch& ...

  9. Java实践 — SSH远程执行Shell脚本

    1. SSH简介         SSH是Secure Shell的缩写,一种建立在应用层和传输层基础上的安全协议.SSH在连接和传送过程中会加密所有数据,可以用来在不同系统或者服务器之间进行安全连接 ...

随机推荐

  1. javaScript基础-01 javascript语法结构

    一.基础 字符集 JavaScript程序是用Unicode字符集编写的. .区分大小写 .空格.换行符和格式控制符 .Unicode转义序列 .标准化 二.类型.值和变量 JavaScript的数据 ...

  2. SAP 修改MIRO变式

    转自:http://blog.vsharing.com/SAP100/A799545.html

  3. 阿里云短信服务(JAVA)

    一,前言 ​ 短信验证码想必大家都不陌生,在很多网站,APP中都有使用到.比如登录,注册,身份校验等场景.不过通常情况下,短信服务都是外包给第三方公司的,接下来向大家分享如何使用阿里的短信服务. 二, ...

  4. 定时清理docker私服镜像

    定时清理docker私服镜像 使用CI构建docker镜像进行发布极大促进了大家的版本发布效率,于是镜像仓库也就急速膨胀.为了缓解磁盘压力,我们需要设置一些清理策略. 对于不同docker镜像的清理策 ...

  5. linux_密钥

    使用密钥文件.       这里假设主机A(192.168.100.3)用来获到主机B(192.168.100.4)的文件.   在主机A上执行如下命令来生成配对密钥: ssh-keygen -t r ...

  6. count(*) count(1) count(column)的区别

    count(1)中的1并不是指第一个column: count(*)和count(1)一样,包括对值为NULL的统计: count(column)不包括对值为NULL的统计,这里的column指的不是 ...

  7. 《Java 8 in Action》Chapter 5:使用流

    流让你从外部迭代转向内部迭代,for循环显示迭代不用再写了,流内部管理对集合数据的迭代.这种处理数据的方式很有用,因为你让Stream API管理如何处理数据.这样Stream API就可以在背后进行 ...

  8. Ubuntu 18.04 下载地址

    http://mirrors.163.com/ubuntu-releases/18.04/

  9. centos7不能连接外网

    1.  首先保证虚拟机是NAT模式 2.  打开cmd窗口,输入ipconfig,查看vmnet8的ipv4地址是多少,DNS也需要记下,后面会用到 注意:vmnet8的ip要与虚拟机的网关IP在同一 ...

  10. Liunx学习总结(九)--防火墙

    防火墙的作用 防火墙作为一个边界防御工具,其监控流量要么允许它.要么屏蔽它. 多年来,防火墙的功能不断增强,现在大多数防火墙不仅可以阻止已知的一些威胁.执行高级访问控制列表策略,还可以深入检查流量中的 ...