我正在尝试编写一个脚本来创建一个fabfile,保存它然后再运行它。到目前为止,这是我的代码:
#!/usr/bin/python
bakery_internalip = "10.10.15.203"
print "[....] Preparing commands to run within fabfile.py"
fabfile = open("sfab.py", "w")
fabfile.write("from fabric.api import run, sudo, task\n\n@task\ndef myinstall():\n\tsudo('yum install httpd')")
fabfile.close
print "Running Fab Commands"
import subprocess
subprocess.call(['fab', '-f', 'sfab.py', '-u ec2-user', '-i', 'id_rsa', '-H', bakery_internalip, 'myinstall'])
我的fabfile的内容如下:
[root@ip-10-10-20-82 bakery]# cat sfab.py
from fabric.api import run, sudo, task
@task
def myinstall():
sudo('yum install httpd')
我的脚本在运行时出现以下错误:
Fatal error: Fabfile didn't contain any commands!
但是,如果我在文件上运行dos2unix然后运行以下命令,它可以正常工作:
fab -f sfab.py -H localhost myinstall
答案 0 :(得分:2)
简单错字fabfile.close should be fabfile.close()
没有关闭就会给你:
Running Fab Commands
Fatal error: Fabfile didn't contain any commands!
Aborting
with open("sfab.py", "w") as fabfile:
fabfile.write("from fabric.api import run, sudo, task\n\n@task\ndef myinstall():\n\tsudo('yum install httpd')")
如上所述使用with
打开文件,它会自动关闭它们并避免这些简单错误。
答案 1 :(得分:0)
我假设您在Windows上运行它。
使用open(path, "w")
时,Python使用操作系统的原生换行组合。
使用\n
专门使用open(path, "wb")
。
有关详细信息,请参阅open()。