windows实时获取Ubuntu服务器图片【初级】

windows实时获取Ubuntu服务器图片【初级】

前言:

这个方法太不优雅了,如果大家有什么其他的路子的话,一定要告知一声哈~

之前由于mujoco渲染的问题,一直只能使用远程控制软件,必须在桌面启动程序。
现在在新的版本中,终于可以离线渲染图片了。
但是用VSCODE和pycharm这类远程IDE,是不能调用pygame等实时渲染的;
但有时候我们又需要,实时看一些当前仿真环境生成的图,到底成啥样了;
因此我就想着能不能建立一个通道,实现图片等文件的传递,毕竟我们拥有一个稳定的局域网通信;
上午九点开始设计的方案,就有点离谱:

1.远程脚本产生图片,存入远程服务器本地;
2.远程脚本通过subprocess启动本地脚本;
3.本地脚本通过subprocess获取服务器图片;
4.本地脚本通过pygame渲染图片;

这关键的一步被我忽略了,如何在本地脚本中获取服务器的图片?
那仍然得通过ssh通信才行;
这个通信时间还是无法忽略的。

其次,在Ubuntu中远程调用Windows下的python脚本,我一直无法实现。
最多实现ssh登录Windows,但是接下来所有的command都无法正确执行,各种报错,还找不到答案,这条路就放弃了。

最终还是选择了SCP传输文件

最终选择了scp传输文件,这个指令非常简单,之前在命令行经常使用。
但是有两个点需要注意:

正版Windows10安装ssh server

  1. 你的Windows下需要装ssh server:
    如果你的Windows10一切正常,那么就可以直接在这个教程里安装好:
    win10下添加ssh服务

其他的安装freeSSHD

  1. 如果你的Windows是db的,那就会有这样的错误:
    错误:0x80070424
  2. 这时候你需要安装freesshd
    进入download,下载freeSSHd.exe,然后安装到任意位置;
  3. 设置user,login定义你的账户名称;
  4. 选Password stored as SHA1 hash,设置好你的密码;
  5. user can shell, sftp, tunneling,都选上;
  6. 设置ssh,选择listen address,选择你的IP地址。其他的不用动;
  7. 这时候就能把Windows设置成类似于Ubuntu一样的服务器了。
  8. 要在SFTP中设置home路径,设置好了之后,文件传输就在当前目录下。

如果ssh server 无法启动,报错Permission不够什么的:

使用ssh远程登录出现Permission denied, please try again.

就要在Windows下点击此电脑,然后点击管理, 然后服务与应用程序,然后服务,然后找freeSSHDserver,重启一下这个服务。
这时候,就能点开run ssh server 了:

在这里插入图片描述

在Ubuntu测试ssh连接Windows:

类似于控制Ubuntu,直接:

ssh youruser@192.168.23.23

输入密码就差不多了。

sshpass免去单独输入密码

当然为了免去每次输入密码,可以在Ubuntu下安装下面的包:sshpass

sudo apt-get install sshpass

完了之后,远程的命令就如下格式:

sshpass -p 'your password' ssh user@192.168.23.23

python脚本中scp传输文件到Windows下

通道打开,就能通过scp传递文件到Windows下了,这时候我们把Ubuntu当成客户端,Windows当成服务器,因而是将文件上传到Windows服务器中。
在命令行中我们上传文件的教程如下:
scp 服务器之间远程复制
免输入密码的命令行如下:

sshpass -p 'your password' scp -r ssh_img.jpg lyl@192.168.23.23:

这里有一个非常诡异的问题,我无法理解,也搜不到解决方案的bug,就是上传的文件夹只能是C盘,无法切换到其他盘,就算你写了其他盘的路径,要么不报错,会在C盘初始目录,创建一个空文件。
要么就直接报错:

scp: Failed to open file /d:/.
lost connection

我意识到这个问题可能只是在freesshd中出现,因此看了一下。
果然找到了原因:要在SFTP中设置文件传输的home目录,设置好了之后,在IP地址后写什么乱七八糟的了。
在这里插入图片描述

在python脚本中执行命令行的语句:

import os
sync_cmd = "sshpass -p 'your password' scp -r ssh_img.jpg lyl@192.168.23.23:"
# 下面是将字符串在命令行中执行的意思
os.system(sync_cmd)

基本上0.3秒一张图,直接在Windows下的文件夹中,直接看到图片的刷新;

效果图

在这里插入图片描述

总结:

这种方法太不优雅了,虽然勉强能用。
如果大家有什么其他的好方法,一定要指条路哈~

联系方式:

ps: 欢迎做强化的同学加群一起学习:

深度强化学习-DRL:799378128

欢迎关注知乎帐号:未入门的炼丹学徒

CSDN帐号:https://blog.csdn.net/hehedadaq

极简spinup+HER+PER代码实现:https://github.com/kaixindelele/DRLib

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hehedadaq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值