我有一个.yml文件中存在一个.yml文件,我想使用Python Fabric对其进行更改。如果可以与其他Python库一起完成,请随时分享。谢谢
您正在尝试在文件中间编辑IMO中的一行,这是不可能的。您可以做的是在本地计算机上使用远程文件的副本,并使用要更改的所需值,然后将其发送回远程服务器。
from fabric import Connection as connection, task
@task
def executeTask(ctx):
with connection(host=dev_server, user=myuser) as c:
c.put('PATH_TO_YOUR_YML_FILE_LOCALLY', 'PATH_TO_YOUR_REMOTE_YML_FILE')
不要忘记:
- 将
dev_server
和myuser
替换为远程服务器IP和用户名 - 将上述代码放在名为
fabfile.py
的文件中,然后从命令行fab executeTask
运行
上面的代码是fabric 2.4
兼容
编辑:由于权限问题,您可以执行以下操作:
@task
def executeTask(ctx):
with connection(host=dev_server, user=myuser) as c:
c.put("PATH_TO_YOUR_YML_FILE_LOCALLY") # implicit to remote $HOME
c.sudo("mv YOUR_FILE_NAME YOUR_DESIRED_LOCATION") # again implicitly with a CWD of $HOME
c.sudo("chown root:root YOUR_REMOTE_FILE")
参考:https://github.com/fabric/fabric/issues/1750#issuecomment-406043571
如果您只需要更改端口号,则可以像这样使用 sed
def change_port(filename):
with cd('/location'):
run('sed -i "s/old_port_number/new_port_number/g" ' +filename)