草庐IT

python - 直接在 Python 中调用 Fabric

我想用一些功能扩展Fabric,并想以编程方式调用Fabric。我想到的是在https://github.com/fabric/fabric/blob/master/fabric/main.py中调用main()方法。,但我无法将任何参数直接传递给该函数,因为它会在函数内读取它的参数。有没有想过以编程方式设置命令行参数和调用main()? 最佳答案 您可以使用Fabric库中的execute方法来调用任务。http://docs.fabfile.org/en/1.8/api/core/tasks.html?highlight=exe

python - 有没有使用 fabric 将 django 站点置于维护模式?

我目前正在使用MaintenanceModeMiddleware将我的站点置于维护模式,但这需要您在远程服务器上的settings.py文件中进行更改。我想使用fabric远程将站点置于维护模式。有没有办法做到这一点?或者有更好的方法吗?谢谢。[更新]感谢大家的反馈,最后这就是我所做的,对我来说效果很好,http://garthhumphreys.com/2011/06/11/painless-django-maintenance-mode-with-fabric/-我确实喜欢取消注释行的想法,但是如果我在生产服务器上这样做,我的设置会在我推出新版本后被覆盖,所以最后从服务器级别将站点

python - 如何在 Python Fabric `env.hosts` 的函数中正确设置 `fabfile.py`?

当我运行这个fabfile.py...fromfabric.apiimportenv,run,local,cddefsetenv(foo):env.hosts=['myhost']defmycmd(foo):setenv(foo)print(env.hosts)run('ls')使用此命令fabmycmd:bar。我得到这个输出...['myhost']Nohostsfound.Pleasespecify(single)hoststringforconnection:什么,什么?!我不明白?我已经设置了env.hosts并且它似乎在mycmd函数“内部”有效,但由于某些原因run命令没

python - 通过 Python/Fabric 从命令行更改 Unix 密码

我想要一种使用fabric在远程Ubuntu10.4盒子上更新我的密码的方法.我希望我的fabfile.py看起来像这样:defupdate_password(old_pw,new_pw):#Connectsoversshwithapublickeyauthenticationrun("some_passwd_cmd--old%s--new%s"%(old_pw,new_pd))不幸的是,我所知道的唯一允许更改密码的命令是passwd,在Ubuntu10.4上似乎没有任何方法可以传递新(或旧)密码,因为passwd的参数。在Ubuntu10.4上可以使用什么命令通过fabric更改用户

python - Fabric env.hosts 并以相同的方法运行 => 找不到主机

为什么:fromfabric.apiimportenv,rundefupdate():env.hosts=['apycat']run('cd/var/www/menu;svnup')当我fabupdate时不起作用,同时:fromfabric.apiimportenv,runenv.hosts=['apycat']defupdate():run('cd/var/www/menu;svnup')是吗?在文档中没有找到任何关于此的内容。 最佳答案 在fab命令已经为fab任务创建主机列表后指定主机列表将不起作用。因此,对于第一个示例,您

python - 如何设置 Pycharm 以在 Windows 上调试 Fabric fabfile?

是否可以设置Pycharm单步执行Fabricfabfile.py?这似乎可以通过运行/调试配置编辑器来实现,但我似乎无法正确设置。编辑器要求运行脚本,我已经尝试了fab-script.py文件,它只是为我提供了fab帮助选项。似乎我很接近,但还不完全。 最佳答案 这是我最终设置它的方式,以防它对其他人有用。与大多数类似的事情一样,一旦你知道魔法设置,就很容易了。所有这些指令都是通过PyCharm进行的,但其中一些指令可以通过其他方式完成。但是,由于这是关于在PyCharm中进行调试的,所以这就是我在说明中使用的内容。另外,我正在使

python - 如何使用 fabric 2 运行本地命令?

我想使用Fabric并在本地运行命令,而无需建立任何额外的连接。如何在fabric2中执行此操作?...documentation似乎想念任何例子。 最佳答案 在Fabric2中删除local命令的设计决定使这变得更加困难,但我能够通过使用Invoke中的Context而不是来模拟它连接:fromfabricimportConnectionfrominvoke.contextimportContext@taskdefhostname(c):c.run('hostname')@taskdeftest(c):conn=Connectio

python - Fabric env.roledefs 未按预期运行

关于fabricwebsite,给出这个例子:fromfabric.apiimportenvenv.roledefs={'web':{'hosts':['www1','www2','www3'],'foo':'bar'},'dns':{'hosts':['ns1','ns2'],'foo':'baz'}}据我从文档中得知,当在主机“www1”、“www2”、“www3”上执行时,此设置应该为envdict键“foo”提供值“bar”。我无法得到这种行为,尽管结构确实正确地确定了主机。示例fabfile:env.foo='WRONG'@task()defset_role():env.ro

python - 无法通过 Fabric 在服务器上激活 virtualenv

我正在尝试通过Fabric在我的登台服务器上运行一些Django管理命令。问题是Fabric似乎无法激活virtualenv,因此在执行命令时无法使用系统python/libs。在服务器上,Django应用程序使用virtualenv运行(不,我还没有使用virtualenvwrapper...)使用Fabric(1.0.1)从我的盒子运行时,命令可能看起来像这样:fabfile方法:defcollectstatic():require('settings',provided_by=[production,staging])withsettings(warn_only=True):ru

python - 一起运行 Fabric 和 Python 脚本

我看到大多数FabricAPI都与函数一起使用。文件示例(sample.py):fromfabric.apiimport*print"Hello"defdeploy():withsettings(hosts_string="Remote",user="ubuntu",key_filename="/home/ubuntu/key.pem"):put('/home/localuser/sample.sh','/home/ubuntu/')run('bash/home/ubuntu/sample.sh')我运行命令执行fabdeploy是否可以在Main方法中运行Fabric。所以当我将它作