fabric能获取run的结果吗?

2013-08-22 18:35:20 +08:00
 pythonee
发现很多东西需要依赖远程命令的结果做相应的操作,但是fabric没有返回远程结果的样子,google搜了一下,没有什么好的办法。所以也想看看各位有没有好的变通方法。

deploy包含T1, T2, T3三个人物,他们是有顺序依赖的,也即是T1必须先启动,然后才能T2,最后T3

T1,T2,T3都是daemon式的程序,如果重定向输出的话,那么就只能通过检测端口或输出来判断是否已经启动成功,比如我想检测web server是否成功,就需要fabric run('netstat -tpln |grep 8080')来判断,可是fabric没有获取执行结果的功能啊。如果不用重定向的话,fabric就会停在T1处
7477 次点击
所在节点    Python
11 条回复
ipconfiger
2013-08-22 18:41:19 +08:00
可以获取结果啊,就是重定向
dreampuf
2013-08-22 19:35:58 +08:00
手工判断吧,还只是 on roadmap
https://github.com/fabric/fabric/issues/452

run调用的结果就是stdout
ry_wang
2013-08-23 08:13:42 +08:00
pythonee
2013-08-23 09:10:19 +08:00
@dreampuf 这还是不好使,手工判断需要传参给脚本。

这么说吧,我们用fabric判断远程每个端口已经打开
pythonee
2013-08-23 09:10:30 +08:00
@pythonee 某个
dreampuf
2013-08-23 11:56:08 +08:00
@pythonee 。。。手工判断不是真让你手工输入判断。。。是让你写code去检查

ret = run("netstat -tlnp | grep 80")
if ret:
BLAHBLAHBLAH
pythonee
2013-08-24 10:48:06 +08:00
@dreampuf 关键是这个ret你是永远拿不到的啊,问题就是这个啊,如果我能获取结果,那我就不问了呀
dreampuf
2013-08-24 21:57:49 +08:00
@pythonee 为什么拿不到?
pythonee
2013-08-25 01:03:57 +08:00
@dreampuf fabric不支持run返回结果吧
dreampuf
2013-08-25 11:52:11 +08:00
@pythonee 为什么你不自己试一下?

(g)$:~/fortest$ fab -u XX test:hosts=XXX
[tucao.in] Executing task 'test'
WARNING: IPython History requires SQLite, your history will not be saved
WARNING: IPython History requires SQLite, your history will not be saved
--Return--
None
> ~/fabfile.py(6)test()
5 def test():
----> 6 import ipdb; ipdb.set_trace()
7

ipdb> ret = run("ls")
[tucao.in] run: ls
[tucao.in] out: hub net_status.sh nginx.conf opt sslkey tmp www youtube-dl
[tucao.in] out:

ipdb> ret
'hub net_status.sh nginx.conf opt sslkey tmp www\tyoutube-dl'
ipdb>
Exiting Debugger.
Disconnecting from XXX... done.
pythonee
2013-08-25 13:00:27 +08:00
@dreampuf 咦,我是跑了一次,然后特别在程序里用 print 来看看有没有,结果发现不能获得结果才发问的,一定是我打开的方式不对,或是版本不对,回头我测试一下

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

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

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

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

© 2021 V2EX