【问题标题】:Python - How to set env.variables in Fabric modulePython - 如何在 Fabric 模块中设置 env.variables
【发布时间】:2018-07-09 05:17:47
【问题描述】:

我正在尝试使用 Fabric 模块在几个树莓派上并行运行命令。我已经阅读了文档,但我仍然有点困惑。

import fabric

env.hosts = [
    "pi@192.168.3.151", 
    "pi@192.168.3.123"
]

env.password = "Raspberry"

@parallel
def command(cmd):
    sudo(cmd)

command("touch /Desktop/new_filename.txt")

当我运行该代码时,我收到错误env is not defined,我应该如何在此处定义 env 以使用这些主机?在这个阶段,文档超出了我的范围。

【问题讨论】:

  • 从面料进口 *
  • @veri_pudcha_coder - 即使使用from fabric import * 我也会收到同样的错误
  • @ManojJadhav 是否没有我需要编辑的文件来设置 env.hosts 之类的?我的控制台正在输出 env 未定义所以我认为该代码不适合我,我会收到相同的错误
  • 你也可以从 api 导入环境 from fabric.api import env 可能是这个帮助。

标签: python networking raspberry-pi fabric


【解决方案1】:

以下内容应该适合您:

from fabric.context_managers import env
from fabric.decorators import task
from fabric.tasks import execute

env.hosts = [
    "pi@192.168.3.151", 
    "pi@192.168.3.123"
]

env.password = "Raspberry"

@task
def command(cmd):
    sudo(cmd)

execute('command', "touch /Desktop/new_filename.txt")

请注意我们在此处所做的两件事:(1) 导入我们需要的内容,(2) 确保使用任务/执行结构来获取对环境的运行时更改。

【讨论】:

  • 我终于开始测试了,不幸的是,这些模块对我来说似乎都不存在,即使普通的旧 fabric 导入正常
猜你喜欢
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多