天上的魔管

skypipe的Python项目详细描述


Skypipe是一个神奇的命令行工具,允许您轻松地在终端会话之间传输数据,而不管会话是在同一台计算机上,还是在数千台计算机上,甚至是在防火墙之后。它给你在天空中命名管道,让你神奇地在任何地方管道数据anywhere

安装

目前,您需要python 2.6、zeromq2.0+和编译扩展的能力。 然后使用pip安装:

$ pip install skypipe

设置

Skypipe的魔力需要一个免费的Dotcloud帐户。如果你没有 第一,你可以很容易地免费创建一个。你第一次使用天管的时候, 将要求您提供凭据。

使用Skypipe

Skypipe将命名管道和Netcat结合起来,在一个更简单的工具中为您提供更强大的功能。下面是一个使用Skypipe的简单示例,就像使用命名管道在Shell上对文件进行gzip一样:

$ skypipe | gzip -9 -c > out.gz

您的Skypipe已准备好从另一个shell进程接收一些数据:

$ cat file | skypipe

但是,未链接的命名管道,这将在连接到Internet的所有计算机上工作。而且您不必像使用netcat那样指定主机地址或设置“侦听模式”。事实上,与netcat不同,netcat是点对点的,您可以使用skypipe进行日志聚合。在这里我们将使用命名为Skypipes。在多个主机上运行此命令:

$ tail -f /var/log/somefile | skypipe logs

然后在一台机器上运行:

$ skypipe logs > /var/log/aggregate

或者也可以向多个主机广播。有了以上功能,您可以通过笔记本电脑运行此功能来“收听”,即使是在NAT之后:

$ skypipe logs

与netcat不同的是,您可以临时将数据存储在“管道”中,直到将其拉出。实际上,您可以在管道中保留几个“文件”。在一台计算机上,将一些文件加载到其中一个命名的Skypipe:

$ cat file_a | skypipe files
$ cat file_b | skypipe files

现在从其他地方把它们拔出来,顺序是:

$ skypipe files > new_file_a
$ skypipe files > new_file_b

最后,可以像go中的channel原语一样使用skypipe来协调shell脚本。作为一个简单的例子,这里我们使用Skypipe来等待另一个脚本触发的事件:

#!/bin/bash
echo "I'm going to wait until triggered"
skypipe trigger
echo "I was triggered!"

触发只是通过管道发送一个EOF,导致监听的Skypipe终止。我们可以用一个简单的习语来做到这一点:

$ echo | skypipe trigger

带有服务的软件

这种空中私有管道的诀窍在于,当您第一次使用Skypipe时,它将在后台向DotCloud部署一个非常简单的消息服务器。无论您身在何处,Skypipe都将使用您的帐户透明地查找和使用此服务器。

这一切都可以不用考虑它,因为这台服务器是自动管理的,在dotcloud上免费运行。它可能也不存在!

这代表了一种创建工具的新范式,这种工具可以透明地利用云来创建神奇的体验。它不完全是软件即服务,而是软件服务。没有人在使用共享的中心服务。该软件以您的名义部署自己的服务供您使用。

多亏了像dotcloud(和heroku)这样的平台,我们现在可以利用软件作为服务的特性来构建软件,这种服务是打包和分发的,就像普通的开源软件一样。

贡献

目前还没有任何测试,但它有很好的文档和代码 是为了阅读而写的。分叉并发送拉取请求。查看问题 看看你怎么能帮上大忙。

贡献者

许可证

麻省理工学院

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
字符串Java字母替换无效   java Spring Roo JPA MS SQL Server无法打开JPA EntityManager组织。冬眠例外GenericJDBCException:无法打开连接   在scala中使用JavaWS对大型数据文件进行java流式处理   Java编译器是否将字节和短字符识别为文本?   java无法查找符号错误,空指针   mongodb在Java中重用数据库连接   java将多个StringArray从字符串文件获取到活动中   java是一个变量,它只保存最后一次鼠标单击的坐标   c#尺寸有限;添加、删除和洗牌   java如何在Android中显示来自资产文件夹的文本文件中的文本   Android应用程序中的java Tensorflow Lite自定义对象检测模型错误   java如何在foreachloop中使用scanner将来自命令行的输入存储到数组中   java如何定义一个好的存储库接口   Android中的java解析动态json对象