有没有办法一次使用fabric run()和sudo()?

时间:2013-11-05 09:52:06

标签: python linux ssh sudo fabric

我正在尝试在python 2.7中自动化测试(在Linux ubuntu 12.04上的eclipse中)。 该测试检查另一台PC上的配置,因此我使用fabric进行ssh连接。

我需要执行一个脚本:

run("cd somepath && ./execute_script.sh")

问题是我的脚本需要运行sudo,但是将命令更改为:

sudo("cd somepath && ./execute_script.sh")

不起作用,因为“cd”不能与sudo结合使用。 我也不能将命令分成两部分,因为这会产生2个炮弹,第二个会忘记我在第一个炮弹中的路径。

如果我这样做:

run("cd somepath && sudo ./execute_script.sh")

由于您必须一次输入密码,因此测试无法完全自动完成。

有没有办法使用某种类型的合并run()和sudo()?

1 个答案:

答案 0 :(得分:2)

怎么样:

from fabric.api import cd,sudo
with cd('somepath'):
    sudo('./execute_script.sh')