[Share Experiences] 不安装任何软件实现局域网快速共享文件
Tofloor
poster avatar
Maicss
deepin
2021-01-04 02:00
Author

不安装任何软件实现局域网快速共享文件

在大多数Linux发行版中,Python都会作为系统组件预装在内,deepin也不例外,Python有一个非常好用的简单服务器功能,只需要一条命令即可创建一个简易的单线程服务器。大多数情况下,通过这种方式在局域网内传输文件,让几乎任何设备都可以接受你传送的文件,只需要在浏览器中点击下载即可。

怎么实现?

建立这个服务器很简单,只需要下边这条命令:

python3 -m http.server

在你想要分享的目录打开终端,然后输入这条命令,即可以此目录为根目录创建HTTP服务器。

此时终端中应当显示下边类似的内容:

这里我们需要记住端口号。然后在同一局域网下的其他设备上,可以在浏览器访问“http://IP:端口号”来访问这个文件夹

例如:“http://192.168.1.3:8000”,访问后显示以下内容

此时就可以点击下载了。

一般来说这个端口号是不变的,大多数情况下局域网的IP也是固定的,如果在家里,可以在路由器页面中为电脑分配一个固定的IP,这样把地址加入收藏夹中,即可快速访问,无需重复输入地址。

此时,你就可以通过python在局域网下的任何设备传输文件,而且不需要接受端下载任何软件,你也不需要安装额外的任何软件。

奔着大道至简的原则,我们需要简化这个过程。

现在我们知道的具体的流程,所以,哪个步骤可以简化?

目前,我们必须右键打开终端,然后输入命令,之后回车,然后在接受端输入地址,然后才能访问传输。

如果大家不介意上边的操作,或者不觉得麻烦,可以忽略这个。(而且如果身旁有女同学还可以露露脸

如果大家奔着能少点一下就少点一下的原则,那就继续往下看。

我们的目标是,最好只需要点一下,然后就可以用其他设备访问。

这是最终简化结果,只需要右键,点击一下即可。至于为什么我这里有两个,请往下看。

步骤一:写个脚本,化简命令

#!/bin/bash
deepin-terminal -e "python3 -m http.server" -w $1

这个脚本假如命名为"share",我们编辑好这个脚本后,把他放在/usr/bin目录下,即可在任意位置输入“share 路径”来打开服务器。

那么,就可以实现输入"share ~/Desktop"后以桌面为根目录的分享。

相对于原有的命令,是不是简洁多了。

但是还不够,傲娇的我一个命令都不想有

假设你已经完成了,那么进行下一步

步骤二:誓死不用命令行

想实现上边我截图中的效果,把东西放在右键菜单中,需要写一个类似快捷方式的东西,然后放到指定目录下。

这里的目录是:系统盘->/usr/share/deepin/dde-file-manager/oem-menuextensions

我们需要在里边新建一个扩展名为desktop的文件,例如share.desktop

然后在其中输入以下内容

[Desktop Entry]
Exec=share %U
GenericName=share
GenericName[zh_CN]=分享到局域网
MimeType=inode/directory;
Name=share
Name[zh_CN]=分享到局域网
Type=Application
X-Deepin-Vendor=user-custom

Exec那一项表示要运行的命令 %U表示当前的目录,假如说你在桌面点击右键打开,然后这个%U就是~/Desktop

这时候注销后重新登录即可使用。

一些补充:

deepin-terminal -e "python3 -m http.server" -w $1

这句命令可能有小白不太理解,因为python3 -m http.server没有图形界面,所以我们需要一个载体来控制他,deepin-terminal是深度终端,-e后边是需要运行的命令,-w是设置当前路径。

输入deepin-terminal -h可以看到完整的介绍。

这样做的好处是当你想停止时只需要按Ctrl+C或者直接关掉终端窗口即可。

另一些补充:

我右键有两个分享是因为我在之前自己做了一个程序来简化和优化这个过程。

下边是程序地址

https://gitee.com/Maicss/SendByLAN

你也可以在星火商店找到他。

spk://store/tools/sendbylan

这是他的截图

右键点击后就会出现,如果接受端是手机,那么可以直接扫描二维码访问,电脑的话,可以输入上边显示的链接。

至此就完成了

相信有比我更“热爱极简”的某癌患者

我写了一个配置脚本,只需要用运行一下sudo ./install即可

下载脚本

大家有任何问题欢迎在下边讨论~

Reply Favorite View the author
Comments
poster avatar
ieayoio
2021-01-06 18:06
很好收藏了
All Replies
2 / 2
To page
smilepipi
deepin
2021-01-30 21:55
#21
yttoeq

Deepin文件管理器的地址栏没windows那么方便,如能如windows那样地址栏直接点击后显示当前路径就更便于输入或更改路径以访问windows共享目录,另外如能增加类似windows的“运行”栏就便利了

 

ctrl+l可以凑合用

Reply View the author
smilepipi
deepin
2021-01-30 21:57
#22

好帖子MARK了。

经领导指点采用以下办法

cd /etc

touch rc.local

sudo chmod +x /etc/rc.local

sudo vim rc.local

#!/bin/bash

cd /共享文件路径

python3 -m http.server

保存退出reboot OK 

Reply View the author
mgmpk
deepin
2021-02-03 03:32
#23
Fredoong

感谢楼主分享

竟然还有誓死不用命令行的GNU/Linux用户啊

是不会用

Reply View the author
剥壳白煮蛋
deepin
2021-02-05 03:41
#24

我以前用过 chfs ,也挺好用的,编写好配置文件即可。

Reply View the author
kearney
deepin
2021-02-05 06:02
#25

传输速度咋样???

Reply View the author
oyonth
deepin
2021-02-05 16:34
#26
fhy

我是用 Golang 实现的 几行代码

 

package main

import (
        "net/http"
        "log"
)

func main() {
        log.Println("静态服务已启动:9090")
        http.Handle("/", http.FileServer(http.Dir("./")))
        http.ListenAndServe(":9090", nil)
}

怎么实现共享指定文件夹,有读写权限吗

Reply View the author
Maicss
deepin
2021-02-05 17:08
#27
kearney

传输速度咋样???

试试就知道了,不会特别快,取决于你的硬件

Reply View the author
kearney
deepin
2021-02-07 19:19
#28
Maicss

试试就知道了,不会特别快,取决于你的硬件

辣不如登录snapdrop网页直传。。这样是真的不需要安装软件(自带浏览器了嘛)。。。不过搭建ftp我也想尝试一下,emm怎么做一个wifi+蓝牙的ftp呢

Reply View the author
zijinyise
deepin
2021-02-09 17:46
#29

收藏了

Reply View the author
小小怪下士
deepin
2021-02-19 23:18
#30

share需要给775权限吗,不给他说权限不够

Reply View the author
Maicss
deepin
2021-02-19 23:52
#31
小小怪下士

share需要给775权限吗,不给他说权限不够

给可执行权限就行吧

Reply View the author
剥壳白煮蛋
deepin
2021-02-20 05:43
#32

没必要这么大道至简, 装个 chfs 也不费事, 简单好用.

Reply View the author
小小怪下士
deepin
2021-02-20 22:51
#33
Maicss

给可执行权限就行吧

enen

Reply View the author
hudieyangmao
deepin
2021-04-07 19:35
#34
smilepipi

好帖子MARK了。

经领导指点采用以下办法

cd /etc

touch rc.local

sudo chmod +x /etc/rc.local

sudo vim rc.local

#!/bin/bash

cd /共享文件路径

python3 -m http.server

保存退出reboot OK 

照这个做了为什么共享的都是根目录呢

Reply View the author
小明Hackintosh
deepin
2021-05-27 19:16
#35

建议搞个多端适配,uniapp那样。

Reply View the author
aurelion
deepin
2021-07-02 05:25
#36

哇,以前我用过,这段时间需要局域网传文件我却忘记了这个。感谢!

Reply View the author
2 / 2
To page