场景描述:
1. MacOS 在已共享 WiFi 网络的时候无法使用 AirDrop,导致传单个文件很稀烂
2. 局域网的 IP 地址变化多端,可能是自己获得的公网 IP,也可能是内网 IP,手动输入很麻烦
3. 这个脚本非常简单,只是最近想到用二维码的方法,就分享一下
效果如下:
大家可以自己试用。
1
amu 2017-12-07 09:30:51 +08:00
??? python -m SimpleHTTPServer
|
2
douglas1997 OP @amu 不显示 IP,还要自己输入,很麻烦
|
3
BOYPT 2017-12-07 09:44:52 +08:00
os.system("qrencode "+httpip + " &") (滑稽)
|
4
wwqgtxx 2017-12-07 09:53:10 +08:00
干嘛不发布到 pypi 呢
|
5
douglas1997 OP @wwqgtxx 哈哈哈太简单了,并且这个是有依赖项的。最近在搞其他的工程,这个就是顺手写的,就放到 gist 上吧。
|
6
douglas1997 OP @BOYPT Mac 共享 WiFi 的时候那个 IP 地址我输的时候内心真是 bi le gou le。
|
7
bashbot 2017-12-07 10:32:03 +08:00
??? python -m SimpleHTTPServer
这个 python 自带的呀,为啥要这么麻烦? 这个只能下载文件,给一个增加了上传文件功能的 https://raw.githubusercontent.com/colbot/python3learning/master/HttpServer/httpServer.py |
8
bashbot 2017-12-07 10:35:35 +08:00
把楼主的场景描述阅读了三遍,终于 get 到楼主的点了:
**手动输 IP 太麻烦,采用二维码传递 URL 信息** 我电脑常年多个网络工作,楼主这个代码能生成多个二维码么,还是怎么处理。 |
9
falcon05 2017-12-07 10:45:13 +08:00 via iPhone
这个终端二维码可以的😄
|
10
douglas1997 OP @bashbot 你的代码写的很漂亮,之前我有用过一个 python2.7 的,但是对于 http 库不熟。感谢分享代码,已 merge。
|
11
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 之间无法使用 |
12
lululau 2017-12-07 10:49:51 +08:00
两台电脑之间通过二维码之别信息也很麻烦吧。。。
如果都用 Mac 的话,可以用 Bonjour Hostname 互相访问: http://zhangsandeMacbook.local:8080/ |
13
lululau 2017-12-07 10:52:24 +08:00
获取 Bonjour LocalHostName:
scutil --get LocalHostName 后面再加上 .local 就可以了 |
14
douglas1997 OP @lululau 嗯好主意,之前还没注意到。我这边主要连公网服务器工作,局域网用的特别少。现在正好 iOS11 也有相机直接扫描出二维码的功能。
|
15
douglas1997 OP @amu 额,看来你都没看我的帖子 hh。都行吧,我觉得场景很多,PC 端我一般用 smb。
|
16
douglas1997 OP @bashbot 这个是一个库,qrencode。别人写的,自己写的有问题,效果比较差。好像也是 v2 的朋友写的。
|
17
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 |
18
douglas1997 OP @wlh233 如何指定地址呢?我觉得指定地址也是非常重要的。
|
19
tuimaochang 2017-12-07 11:50:44 +08:00
哎呦握草,你他娘的简直是个天才……(请自己脑补李云龙脸)
|
20
jadec0der 2017-12-07 11:53:42 +08:00
不错不错,其实蛮有用的,我常年 python -m SimpleHTTPServer 8000 然后还要 ifconfig 看 ip
|
22
douglas1997 OP @tuimaochang 😂哈哈哈
|
23
ifaii 2017-12-07 12:16:58 +08:00
@douglas1997 bug
~/work $ ./httpserver_fillcap.py . 8000 Traceback (most recent call last): File "./httpserver_fillcap.py", line 117, in get_wirelessip wirelessip = ni.ifaddresses(interf)[ni.AF_INET][0]['addr'] KeyError: 2 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "./httpserver_fillcap.py", line 162, in <module> wirelessip = get_wirelessip("en0") File "./httpserver_fillcap.py", line 119, in get_wirelessip wirelessip = get_ip_address() File "./httpserver_fillcap.py", line 124, in get_ip_address s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) NameError: name 'socket' is not defined |
24
douglas1997 OP @ifaii sorry,I will fix it ASAP.
|
25
loading 2017-12-07 12:43:26 +08:00 via Android
很好,找个时间试着写个 golang 的。
|
26
douglas1997 OP @ifaii Fixed.
|
27
douglas1997 OP @loading 大佬回帖了= = 谢谢~
|
28
hu6360567 2017-12-07 13:28:40 +08:00 via iPhone
支持 range 吗?
|
29
douglas1997 OP @hu6360567 不支持,不过根据这个[repo]( https://github.com/smgoller/rangehttpserver)应该是非常容易拓展的。
|