fabric 如何实现两级 ssh+切换超级用户的操作

2015-02-06 09:13:22 +08:00
 hanks315
比如:
user A on localhost--->remote1, change to superuser B--->remote C, execute command

试着在fabric里写:
sudo('ssh remote c && command', sudo_user=superuser B)
可以登入到remote C服务器里,但直接就卡在那,无法执行剩下的command

有看到资料里写使用gateway,但切换超级用户不知道怎么操作.

请问一下有什么好的实现方式? 谢谢
5147 次点击
所在节点    Python
2 条回复
saber000
2015-02-06 15:51:02 +08:00
用两个fabfile分开B和C的操作,先把对C的操作从A扔到B上,在A中操纵B执行fab命令
dongweiming
2015-02-06 23:20:40 +08:00
你可以看原作者的:

http://bitprophet.org/blog/2012/11/05/gateway-solutions/

或者这样?

# coding=utf-8

from fabric.api import run, env
from fabric.exceptions import NetworkError

via = [('user1@server1:22', '123'),
('user2@server2:22', '456'),
('user3@serve3:22', '789')]

try:
for host, passwd in via:
env.gateway = env.host_string
env.host_string = host
env.password = passwd
run('id')

except NetworkError as e:
print e

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

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

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

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

© 2021 V2EX