又做了一个工具 MoeTransfer,更方便地在两台没有公网的服务器之间传输文本

2019-11-09 06:57:09 +08:00
 KasuganoSoras

受到论坛里另一位大佬的启发 /t/616027,加上自己的骚想法,我做了一个这个玩意。

我的想法就是,服务器可以不需要保存数据,A 端传输给 B 端后数据立即销毁,不在服务器上储存。

纯粹是为了练手做的吧,传输文件的话效率很低,我自己测试大约只有 100KB/s 的速度。

项目地址: https://github.com/kasuganosoras/MoeTransfer

客户端使用方法

第一步是将项目 clone 到本地:

git clone https://github.com/kasuganosoras/MoeTransfer/ /usr/local/MoeTransfer/

接着为客户端设置可执行权限

chmod -R 755 /usr/local/MoeTransfer/*.sh

(可选)编辑 bashrc,增加快捷命令

alias mg='/usr/local/MoeTransfer/moeget.sh' # 接收端
alias ms='/usr/local/MoeTransfer/moesend.sh' # 从标准输入读取并发送数据
alias msf='/usr/local/MoeTransfer/moesendfile.sh' # 发送文件

然后就可以自由使用了,比如要在 A 服务器发送 test.sh 到 B 服务器:

例如 B 服务器 IP 是 12.34.56.78 ,则发送的命令就是:

msf 12.34.56.78 test.sh

服务器搭建

可以自己搭建传输服务器,源码在仓库里,具体使用方法可以看 README

感谢阅读

3560 次点击
所在节点    分享创造
10 条回复
4ier
2019-11-09 07:15:56 +08:00
没看懂三个 sh 和 server 之间怎么交互的
KasuganoSoras
2019-11-09 07:32:34 +08:00
@4ier #1 moeget.sh 是接收端,在 A 服务器运行,它会跟中转服务器建立一个长连接,此时去 B 服务器运行 moesend.sh ,它会把你的数据发给中转服务器,然后中转服务器再发回给 A 服务器,就完成了数据传输。交互是用 curl 来进行的。
0TSH60F7J2rVkg8t
2019-11-09 07:41:44 +08:00
@KasuganoSoras 楼主这是没有公网 IP 的机器之间通过公网中转服务器传输数据的意思吧?主贴标题有歧义啊,没公网访问权限,哪里连得上中转服务器呢
love
2019-11-09 08:19:12 +08:00
为啥发送的时候还要指定一个 Ip 呢,太不方便了,直接像剪贴复制那样不指定实现不了吗
momocraft
2019-11-09 08:27:28 +08:00
以前用过个叫 piping-server 的
wdv2ly
2019-11-09 08:29:58 +08:00
没有公网 IP 的服务器,输入的 ip 难道是内网 ip 吗?
dtsdao
2019-11-09 11:18:42 +08:00
@KasuganoSoras #2
不懂有何实际意义,不如用 frp 转发个 ssh/ftp
而且 php 效率不大行啊
KasuganoSoras
2019-11-09 14:50:03 +08:00
@ahhui #3 先写标题再写内容的坏处( 怕标题太长所以删了又删

@love #4 原本我的想法是,B 服务器运行接收端,获得一个随机 ID,然后 A 服务器直接输入这个 ID 发送,但是后来考虑到这样可能存在安全问题(比如别人可以一个一个 ID 试,然后就可以往你机器发数据了),而使用 IP 地址的话,相比起 ID 就安全很多了。

@wdv2ly #6 输入的是出口 IP

@dtsdao #7 纯个人研究学习文件传输……我原本想做个好玩点的功能,就是可以两边实时同步,A 写一点内容 B 那边就显示,但是后来发现貌似是因为服务器的 buffer 还是什么限制了,两边不能同步,只有服务器 close 了连接之后客户端才能显示出收到的内容。
0TSH60F7J2rVkg8t
2019-11-09 15:20:13 +08:00
@KasuganoSoras [只有服务器 close 了连接之后客户端才能显示出收到的内容] 这肯定是你的实现有问题啊,感觉是有缓冲里的数据没读取完
54xavier
2019-11-09 15:57:32 +08:00
[大师球] 捕捉,不明觉厉!!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/617800

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX