【RPC】前传

news2024/11/26 18:45:06

前传

本地程序用的go语言,想把main.go程序当中一些计算工作放到服务器上进行,而只需要把结果给我即可。由于平台上暂时不能运行Go代码,所以写的是python文件。

1、主要是使用ssh依赖进行连接,但是大概率是需要手动添加的,自动添加一直在报错。里面的go.mod也是要重新生成的,主要还是不太熟。
sshl
连接就需要账号密码和地址,配置好之后进行连接。test.py里面只有一个变量a,并且数值是固定的,只是需要输出而已,里面的username和pwd还有Ip是自己的信息。

package main

import (
	"fmt"
	"log"
	"net"
	"time"
	"golang.org/x/crypto/ssh"
)

// 连接的配置
type ClientConfig struct {
	Host       string      //ip
	Port       int64       // 端口
	Username   string      //用户名
	Password   string      //密码
	Client     *ssh.Client //ssh client
	LastResult string      //最近一次运行的结果
}

func (cliConf *ClientConfig) createClient(host string, port int64, username, password string) {
	var (
		client *ssh.Client
		err    error
	)
	cliConf.Host = host
	cliConf.Port = port
	cliConf.Username = username
	cliConf.Password = password
	cliConf.Port = port
	//一般传入四个参数:user,[]ssh.AuthMethod{ssh.Password(password)}, HostKeyCallback,超时时间,
	config := ssh.ClientConfig{
		User: cliConf.Username,
		Auth: []ssh.AuthMethod{ssh.Password(password)},
		HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
			return nil
		},
		Timeout: 10 * time.Second,
	}
	addr := fmt.Sprintf("%s:%d", cliConf.Host, cliConf.Port)
	//获取client
	if client, err = ssh.Dial("tcp", addr, &config); err != nil {
		log.Fatalln("error occurred:", err)
	}
	cliConf.Client = client
}
func (cliConf *ClientConfig) RunShell(shell string) string {
	var (
		session *ssh.Session
		err     error
	)
	//获取session,这个session是用来远程执行操作的
	if session, err = cliConf.Client.NewSession(); err != nil {
		log.Fatalln("error occurred:", err)
	}
	//执行shell
	if output, err := session.CombinedOutput(shell); err != nil {
		log.Fatalln("error occurred:", err)
	} else {
		cliConf.LastResult = string(output)
	}
	return cliConf.LastResult
}
func main() {
	cliConf := new(ClientConfig)
	cliConf.createClient("ip", 22, "username", "pwd")
	fmt.Println(cliConf.RunShell("cd gotest;python test.py"))
}

服务器里面的代码是放在gotest文件夹里面的,而每一次运行都需要cd gotest,没有办法记录,每次执行一条命令都会创建一条session,而一条session默认只能执行一条命令,并且两条命令不可以分开写。也就是:

fmt.Println(cliConf.RunShell("cd gotest;python test.py"))

这一行代码,不可以写成

cliConf.RunShell("cd gotest")
fmt.Println(cliConf.RunShell("python test.py"))

下图是一个运行结果:
结果
但是我将来肯定需要往里面放数据,所以写test2.py文件:
test2.py
相应的修改main.go文件里面的runshell语句为:

fmt.Println(cliConf.RunShell("cd gotest;python test.py"))

但是没有办法进行输入,且一直会报错
在这里插入图片描述
后面朋友说可以通过命令行写参数,所以把test2.py和main.go里面都进行了修改

fmt.Println(cliConf.RunShell("cd gotest;python test.py 2 3"))

在这里插入图片描述
结果也是可以正确输出的
在这里插入图片描述
但是可以看到仅仅是一个加法,花费的时间是很长的,数据来回的传输是很耗时的。
看到go有内置的RPC,是一个进行远程控制的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1188616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

android手机平板拓展电脑屏幕

有这么两个软件 spacedesk_driver_Win_10_64_v1065_BETA.msi 安装在电脑上 spacedeskv0.91.1_chinese.apk 安装在android设备上 同一个局域网投屏就好了。 局域网无限投屏是很吃带宽的。 建议usb共享网络,不占用带宽、延迟低。 下载地址: https:/…

OpenCV实现手势虚拟拖拽

前言: Hello大家好,我是Dream。 今天来学习一下如何使用OpenCV实现手势虚拟拖拽,欢迎大家一起前来探讨学习~ 一、主要步骤及库的功能介绍 1.主要步骤 要实现本次实验,主要步骤如下: 导入OpenCV库。通过OpenCV读取摄…

使用Drupal管理小型项目?试试Docker快速部署Drupal结合内网穿透实现远程访问

🎬 鸽芷咕:个人主页 🔥个人专栏:《Linux深造日志》《C干货基地》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal…

四川思维跳动商务信息咨询有限公司可信吗?

在今天的数字化时代,抖音带货已成为一种全新的商业模式。许多公司都在通过这种形式进行产品推广和销售,其中,四川思维跳动商务信息咨询有限公司以其专业的服务和良好的信誉,在抖音带货领域赢得了广泛赞誉。 四川思维跳动商务信息…

抖店怎么做才会快速起店?跟着这个思路来,一周搞定!

大家好,我是电商糖果 有不少朋友,自己开了一家抖店。 因为不懂运营,店铺一直没有流量,也不出单。 糖果做抖店三年多了,不敢自吹有多么优秀,但是做店还是有一套自己的方法的。 按照糖果这个思路做店&…

echarts 图表 地图实例

效果&#xff1a; 代码实现&#xff1a; draw(data) {var option {tooltip: {trigger: item,icon: query,// triggerOn: click,formatter: function (e, t, n) {let string ;string <div style"padding:10px"><span style"padding-right:10px"…

Microsoft SDKs 有文件重定义导致编译失败的处理

一个32位的mfc项目&#xff0c;之前采用vs2019编译&#xff0c;现在换了电脑(系统是win10)&#xff0c;采用vs2022编译时&#xff0c;提示如下错误&#xff1a; 1>------ 已启动生成: 项目: aAnsys, 配置: Debug Win32 ------ 1>cl : 命令行 warning D9035: “Gm”选项…

【ubuntu】ubuntu系统查看服务命令

查看正在运行的服务 sudo service --status-all [] 代表服务是在启动运行的状态 [-] 代表服务是在关闭停止的状态

使用Go语言抓取酒店价格数据的技术实现

目录 一、引言 二、准备工作 三、抓取数据 四、数据处理与存储 五、数据分析与可视化 六、结论与展望 一、引言 随着互联网的快速发展&#xff0c;酒店预订已经成为人们出行的重要环节。在选择酒店时&#xff0c;价格是消费者考虑的重要因素之一。因此&#xff0c;抓取酒…

opencv读取图片的方式影响图像绘制的颜色

圆圈的颜色设置不变&#xff0c;仅仅更改imread读取图片的方式 #frame cv2.imread(img_path,2)##flag2,单通道&#xff0c;原深度 **frame cv2.imread(img_path)##flag2,单通道&#xff0c;原深度** #cv2.circle(frame, (int(lmx), int(lmy)), 8, (0, 0, 125), 3) ### open…

优思学院|推行精益六西格玛困难重重?7大原因分析助你避坑

六西格玛&#xff0c;是一种让企业在绩效管理的舞台上跳得更高更远的方法。它不仅仅是一套原则和技术&#xff0c;更是一种对完美的执着追求。 在这个舞台上&#xff0c;企业的流程管理得以严格、集中&#xff0c;质量得以高效提升。优思学院总结出六西格玛的核心是&#xff1…

互联网金融风控常见知识点

1.怎么做互联网金融风控 首先风险不是都是坏的&#xff0c;风险是有价值的。也就是风险的VaR值(Value at Risk) 对于互联网信贷风控&#xff0c;是要把风险和收益做到更合理的平衡&#xff0c;在控制风险水平的情况下使得收益更高。 所以&#xff0c;做风控的不是一味地追求耕…

VS Code + VUE 代码自动格式化配置

插件列表 ESLintVetur setting.json { "[vue]": { "editor.defaultFormatter": "octref.vetur" }, "[javascript]": { "editor.defaultFormatter": "vscode.typescript-language-features" }, …

抖音双11进入决赛圈,爆款王炸单品竟是.....

今年&#xff0c;抖音将双11战线拉长&#xff0c;给足品牌和消费者时间备战&#xff0c;第一轮抢跑期战绩亮眼&#xff0c;多项双11销售增长记录被刷新&#xff0c;引爆全域流量。最后几天&#xff0c;抖音商城全面进入终局厮杀阶段&#xff0c;爆发期下半程对比抢跑期增速放缓…

Scala爬虫实战:采集网易云音乐热门歌单数据

导言 网易云音乐是一个备受欢迎的音乐平台&#xff0c;汇集了丰富的音乐资源和热门歌单。这些歌单涵盖了各种音乐风格和主题&#xff0c;为音乐爱好者提供了一个探索和分享音乐的平台。然而&#xff0c;有时我们可能需要从网易云音乐上获取歌单数据&#xff0c;以进行音乐推荐…

后端面试问题(学习版)

JAVA相关 JAVA语言概述 1. 一个".java"源文件中是否可以包含多个类&#xff1f;有什么限制&#xff1f; 可以。 一个源文件可以声明多个类&#xff0c;但是最多只能有一个类使用public进行声明 且要求声明public的类的类名与源文件相同。 2. Java的优势&#xff…

Python中的del用法

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 python中的del用法比较特殊&#xff0c;新手学习往往产生误解&#xff0c;弄清del的用法&#xff0c;可以帮助深入理解python的内存方面的问题。 python的del不同于C的fre…

Jmeter 基本使用以及性能测试基本流程使用总结

使用场景 需要对一部分接口做性能测试&#xff0c;并检验修改后的效果下载安装 搜索 Apache JMeter - Download Apache JMeter 或直接到官网 https://jmeter.apache.org/download_jmeter.cgi?cm_mc_uid15063477198714828218851&cm_mc_sid_502000001483277541下载 选择 zi…

TSINGSEE青犀车辆违停AI算法在园区道路管控场景中的应用方案

一、背景与需求 园区作为企业办公、生产制造的重要场所&#xff0c;主要道路车辆违停等违规行为会对园区的安全造成隐患&#xff0c;并且在上下班高峰期内&#xff0c;由于发现不及时&#xff0c;车辆违停行为会造成出入口拥堵现象&#xff0c;这也成为园区管理的棘手问题。 …

23届有必要从cobol转Java嘛?

23届有必要从cobol转Java嘛&#xff1f; 题主说我是一名23届科班毕业生&#xff0c;目前在一家做对日开发的公司&#xff0c;用的是上古语言cobol&#xff0c;目前工作挺稳定的&#xff0c;也比较轻松&#xff0c;之前自学过Java&#xff0c;现在打算年后换工作&#xff0c;一来…