如何使用Python Fabric在远程服务器上存在的文件上进行更改/编辑



我有一个.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')

不要忘记:

  1. dev_servermyuser替换为远程服务器IP和用户名
  2. 将上述代码放在名为fabfile.py的文件中,然后从命令行fab executeTask
  3. 运行

上面的代码是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)

最新更新