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脚本。
rpyc + plumbum 实现远程调用执行shell脚本的更多相关文章
- ssh远程调用之shell脚本远程调用应用程序
1.引子 前几天有一个需求是这样的:本机的shell脚本,通过远程调用另一台机子上的shell脚本,来完成对远程机子上分发的Java程序的执行和其他操作.看上去挺容易,实际上也不难. 第一步:用scp ...
- 怎样在java代码中调用执行shell脚本
// 用法:Runtime.getRuntime().exec("命令"); String shpath="/test/test.sh"; //程序路径 Pro ...
- 在PHP中调用php_ssh实现远程登陆linux服务器并执行shell脚本。
这个功能主要用于在web端利用程序对远程服务器进行操作,通过PHP_ssh执行shell脚本来实现. 首先要安装php_ssh2组件,linux中centos7下有ssh2源,直接安装.window下 ...
- Java SSH远程执行Shell脚本实现(转)
前言 此程序需要ganymed-ssh2-build210.jar包(下载地址:http://www.ganymed.ethz.ch/ssh2/) 为了调试方便,可以将\ganymed-ssh2-bu ...
- JAVA远程执行Shell脚本类
1.java远程执行shell脚本类 package com.test.common.utility; import java.io.IOException; import java.io.Input ...
- loadrunner调用plink,远程linux执行shell命令
loadrunner调用plink,远程linux执行shell命令 脚本: Action() { char* cmd; cmd = lr_eval_string("C:\\\&qu ...
- Java实践 — SSH远程执行Shell脚本(转)
原文地址:http://www.open-open.com/lib/view/open1384351384024.html 1. SSH简介 SSH是Secure Shell的缩写,一 ...
- Java 连接远程Linux 服务器执行 shell 脚本查看 CPU、内存、硬盘信息
pom.xml jar 包支持 <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch& ...
- Java实践 — SSH远程执行Shell脚本
1. SSH简介 SSH是Secure Shell的缩写,一种建立在应用层和传输层基础上的安全协议.SSH在连接和传送过程中会加密所有数据,可以用来在不同系统或者服务器之间进行安全连接 ...
随机推荐
- HelloDjango 第 07 篇:创作后台开启,请开始你的表演!
作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在此之前我们完成了 django 博客首页视图的编写,我们希望首页展示发布的博客文章列 ...
- 号外!号外!呼叫所有.NET桌面和移动开发人员!
8月7日微软在官方博客发起了一次关于.NET桌面和移动开发的调查问卷,直到今天看博客才知道.这次调查的重点是关于.NET桌面开发技术的跨平台,于是我喜大普奔,奔走相告,希望有这方面需求的朋友们都能去参 ...
- 1.2模板templates
一.模板使用 1. 配置模板目录 如果命令行创建的项目,需要手动配置模板文件目录,如果是Pycharm创建的项目,则无需配置 在项目根目录下创建模板目录,比如叫 templates,后续开发模板文件会 ...
- 前端项目优化 -Web 开发常用优化方案、Vue & React 项目优化
github github-myBlob 从输入URL到页面加载完成的整个过程 首先做 DNS 查询,如果这一步做了智能 DNS 解析的话,会提供访问速度最快的 IP 地址回来 接下来是 TCP 握手 ...
- 使用re.split 按标点+空格的一种分割办法
import re import string t1 = re.split("["+string.punctuation+" ]","(555) 12 ...
- 003——Netty之Buffer、Channel以及多路复用器Selector
Buffer 1.缓冲区类型 2.缓冲区定义 (1)Buffer是一个对象,其中包含写入与读出的数据.是新IO与原IO的重要区别.任何情况下访问NIO中的数据都需要通过缓存区进行操作. (2)Buff ...
- webpack4 前端框架基础配置实例-解决css分离图片路径问题
1.安装nodejs 2. 需要全局和项目安装webpack和webpack-dev-server npm install webpack webpack-dev-server -g npm inst ...
- P3195 [HNOI2008]玩具装箱TOY 斜率优化dp
传送门:https://www.luogu.org/problem/P3195 题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任 ...
- Vue+springboot管理系统
About 此项目是vue+element-ui 快速开发的物资管理系统,后台用的java springBoot 所有数据都是从服务器实时获取的数据,具有登陆,注册,对数据进行管理,打印数据等功能 说 ...
- function template
/* function template programmer:qpz */ #include <iostream> using namespace std; template <c ...