用Croc跨平台、跨内外网实现文件上传服务器

原文地址: 用Croc跨平台、跨内外网实现文件上传服务器 • 威远博客,威远工作室,Ease

croc是golang开发的跨平台文件传送工具。不仅如此,还实现了跨内外网的文件/文本传输。

之前的文章就提到可以将此实现:跨平台的文件上传服务器。这里的服务器还可以是内网服务器。

服务器脚本server.sh

#!/bin/bash

while true; do

      croc_pass=$(cat ./croc_pass.txt)

      #echo $croc_pass

      croc --overwrite --yes $croc_pass

      sleep 5s

done

这里是将croc_pass.txt中的内容作为croc的传输密码。若客户端上传修改内容的croc_pass.txt文件,即实现了由客户端来动态修改。

服务器在接收到一个文件后,即等待下一次发送。若没有需要传输的文件,会显示超时。

而客户端就是常规的使用:croc send –code 123123 文件名

对比其它上传方案,如FTP、SCP,最大的特点在于可以对内网服务器进行传输。存在的问题是不支持命令。

或许通过croc的文本传送功能,也能实现类似命令效果。

进一步发现

在发送文本的指令中:

发送端:croc send –code 123123 –text “这是什么what”

接收端:croc –yes –overwrite 123123 | awk ‘{print $0}’

意即可以将接收端获取的文本信息赋值给变量

croc两种传送内容:文件、文本。当传送文件时,变量不能获取到内容。

这里利用此特点来判断是否为传送的文本。当传送为文本时,当作指令来执行。

下面代码仅是执行了指令,并没有返回给客户端。这需要客户端也开个服务器来接收发过来的反馈信息。

这样,一个交互就完成了。

修改服务端代码

#!/bin/bash

while true; do

      croc_pass=$(cat ./croc_pass.txt)

      echo $croc_pass

      info=`croc --overwrite --yes $croc_pass`

      if [ "$info" != "" ]; then

         echo "指令:" $info

         ret=`$info`

         echo $ret

      fi

      sleep 5s

done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值