天上的魔管
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)这样的平台,我们现在可以利用软件作为服务的特性来构建软件,这种服务是打包和分发的,就像普通的开源软件一样。
贡献
目前还没有任何测试,但它有很好的文档和代码 是为了阅读而写的。分叉并发送拉取请求。查看问题 看看你怎么能帮上大忙。
贡献者
- 杰夫·林赛progrium@gmail.com>;
许可证
麻省理工学院