一个简单的终端搭建局域网 HTTP server 的脚本

2017-12-07 09:27:04 +08:00
 douglas1997

场景描述:

1. MacOS 在已共享 WiFi 网络的时候无法使用 AirDrop,导致传单个文件很稀烂
2. 局域网的 IP 地址变化多端,可能是自己获得的公网 IP,也可能是内网 IP,手动输入很麻烦
3. 这个脚本非常简单,只是最近想到用二维码的方法,就分享一下

效果如下:

大家可以自己试用。

gist code

4118 次点击
所在节点    分享创造
29 条回复
amu
2017-12-07 09:30:51 +08:00
??? python -m SimpleHTTPServer
douglas1997
2017-12-07 09:31:24 +08:00
@amu 不显示 IP,还要自己输入,很麻烦
BOYPT
2017-12-07 09:44:52 +08:00
os.system("qrencode "+httpip + " &") (滑稽)
wwqgtxx
2017-12-07 09:53:10 +08:00
干嘛不发布到 pypi 呢
douglas1997
2017-12-07 09:57:03 +08:00
@wwqgtxx 哈哈哈太简单了,并且这个是有依赖项的。最近在搞其他的工程,这个就是顺手写的,就放到 gist 上吧。
douglas1997
2017-12-07 09:57:47 +08:00
@BOYPT Mac 共享 WiFi 的时候那个 IP 地址我输的时候内心真是 bi le gou le。
bashbot
2017-12-07 10:32:03 +08:00
??? python -m SimpleHTTPServer

这个 python 自带的呀,为啥要这么麻烦?
这个只能下载文件,给一个增加了上传文件功能的
https://raw.githubusercontent.com/colbot/python3learning/master/HttpServer/httpServer.py
bashbot
2017-12-07 10:35:35 +08:00
把楼主的场景描述阅读了三遍,终于 get 到楼主的点了:

**手动输 IP 太麻烦,采用二维码传递 URL 信息**

我电脑常年多个网络工作,楼主这个代码能生成多个二维码么,还是怎么处理。
falcon05
2017-12-07 10:45:13 +08:00
这个终端二维码可以的😄
douglas1997
2017-12-07 10:47:29 +08:00
@bashbot 你的代码写的很漂亮,之前我有用过一个 python2.7 的,但是对于 http 库不熟。感谢分享代码,已 merge。
amu
2017-12-07 10:47:38 +08:00
@douglas1997 其实我准确的使用场景为

alias myip="ifconfig |grep inet |grep 192| awk '{print $2}'"
alias sharefile="myip && python -m SimpleHTTPServer 8001"

二维码感觉很鸡肋,PC 之间无法使用
lululau
2017-12-07 10:49:51 +08:00
两台电脑之间通过二维码之别信息也很麻烦吧。。。
如果都用 Mac 的话,可以用 Bonjour Hostname 互相访问:

http://zhangsandeMacbook.local:8080/
lululau
2017-12-07 10:52:24 +08:00
获取 Bonjour LocalHostName:

scutil --get LocalHostName

后面再加上 .local 就可以了
douglas1997
2017-12-07 10:55:05 +08:00
@lululau 嗯好主意,之前还没注意到。我这边主要连公网服务器工作,局域网用的特别少。现在正好 iOS11 也有相机直接扫描出二维码的功能。
douglas1997
2017-12-07 10:58:44 +08:00
@amu 额,看来你都没看我的帖子 hh。都行吧,我觉得场景很多,PC 端我一般用 smb。
douglas1997
2017-12-07 11:00:16 +08:00
@bashbot 这个是一个库,qrencode。别人写的,自己写的有问题,效果比较差。好像也是 v2 的朋友写的。
wlh233
2017-12-07 11:34:59 +08:00
想法很有意思
curl ifconfig.me | awk '{printf "http://%s:8000", $1}' | qrencode -t UTF8 && python3 -m http.server
douglas1997
2017-12-07 11:35:53 +08:00
@wlh233 如何指定地址呢?我觉得指定地址也是非常重要的。
tuimaochang
2017-12-07 11:50:44 +08:00
哎呦握草,你他娘的简直是个天才……(请自己脑补李云龙脸)
jadec0der
2017-12-07 11:53:42 +08:00
不错不错,其实蛮有用的,我常年 python -m SimpleHTTPServer 8000 然后还要 ifconfig 看 ip

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

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

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

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

© 2021 V2EX