零配置命令行局域网传文件/剪贴板 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Contextualist
V2EX    分享创造

零配置命令行局域网传文件/剪贴板

  •  
  •   Contextualist
    Contextualist 2019 年 7 月 24 日 3046 次点击
    这是一个创建于 2414 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这个脚本的应用场景很简单:

    以类似 cp 的体验,将文件 /剪贴板复制给局域网内的另一个人

    比如 A 想给 B 一个文件夹的数据,B 想把它放在本地的项目中测试,那么:

    # A: ~/archive $ lcp data/001/ B.local # B:(网络名 B.local (太长了? lcp 也支持自定义别名哒)) ~/project/data $ ls ~/project/data $ lcp -d 001-A ~/project/data $ ls 001-A 

    接收者可决定将文件放哪里和 /或重命名,有那么点儿 AirDrop 的意味。

    为什么写这个?一方面,有时候我们对分享只是一次性的轻量需求,借助一个中途的共享空间显得又些多余。另一方面,这跟 scp 的应用场景稍有区别,我是希望这两者互补的。scp 更适合“自己传给自己”,毕竟发送和接收的的用户都应该是属于你的,而且 scp 的使用者一人指定了文件的起点和终点。

    那么,请试一下:(在努力适配 *nix,有兼容性问题请提出)

    # 默认是不启用剪贴板集成的。要使用请在安装前将环境变量 `LCP_CLIPBOARD=1` 写进你的 shell profile。 bash <(curl -Ls https://lcp.now.sh/get) 

    这背后其实没什么技术含量,就是 V 站经常见到的传文件技巧: tar czf - | nc $host $port 然后 nc -l $host $port | tar xz。我在命令行传文件给别人总找不到什么干净利落的方法(我们实验室是在每台机子上建所有人的用户然后互相 scp 的……),看到这个很是喜欢,又觉得写个 alias 不够,就干脆封装个交互舒服一点的 Bash 脚本,然后顺手做了剪贴板。当然,如果各位有更好的方法请无情打脸,我就当写 Bash 练个手吧。

    因为是个简单的实现,没有任何加密与鉴权处理,请务必仅在信任的局域网中使用

    项目: https://github.com/Contextualist/lcp

    第一次认真写 Bash,请多提意见!

    9 条回复    2019-07-25 08:20:24 +08:00
    silaszhz
        1
    silaszhz  
       2019 年 7 月 24 日
    python -m SimpleHTTPServer 3000 多方便
    leoleoasd
        2
    leoleoasd  
       2019 年 7 月 24 日
    scp 多方便
    LittleWhiteMouse
        3
    LittleWhiteMouse  
       2019 年 7 月 24 日
    Ditto
    shuizhengqi
        4
    shuizhengqi  
       2019 年 7 月 24 日
    sftp,ftp,rsync 不好使吗
    Contextualist
        5
    Contextualist  
    OP
       2019 年 7 月 24 日
    @tidaizhe
    一两个文件还 OK,文件夹就有些费劲。而且感觉这个下载的话比较浏览器友好吧,命令行就麻烦

    @leoleoasd @LittleWhiteMouse @shuizhengqi
    emmm …… 这些工具在传文件给别人时基本要两步:A 把文件放在 B 有读权限的地方,然后 B 从那个地方把文件复制出来。lcp 就是为了解决掉这个中间步骤,A、B 谁先谁后无所谓,而且 A 只管要发什么文件,B 只管要接收到什么地方。
    leoleoasd
        6
    leoleoasd  
       2019 年 7 月 24 日
    @Contextualist #5 python3 -m http.server
    leoleoasd
        7
    leoleoasd  
       2019 年 7 月 24 日
    @Contextualist #5 发送者只管发傻文件 接受者只管下到哪里
    zjiecode
        8
    zjiecode  
       2019 年 7 月 24 日
    我一直用的
    npx http-server
    Contextualist
        9
    Contextualist  
    OP
       2019 年 7 月 25 日
    @leoleoasd @mrjiejiejie
    用 HTTP 文件 server,要么发的人需要整理(移动 /打包)文件,要么收的人就要满地找文件了,还有就是对文件夹传输不友好。如果我的例子用 HTTP server 重写,大概就是这个样子了:

    # A:
    ~/archive $ tar czf 1.tar.gz -C data 001 && python3 -m http.server
    (同理上面后半部分可换 npx http-server )

    # B:
    ~/project/data $ curl A.local:8000/1.tar.gz | tar xz && mv 001 001-A
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5950 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 06:32 PVG 14:32 LAX 22:32 JFK 01:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86