如何使用python fabric对远程服务器上存在的文件进行更改/编辑?

时间:2019-03-07 12:51:45

标签: python automated-tests fabric

我在远程服务器上存在一个.yml文件,我想使用python结构对其进行更改。如果可以与其他python库一起完成,请随时共享。 谢谢

2 个答案:

答案 0 :(得分:0)

您正在尝试在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. 用远程服务器IP和用户名替换dev_servermyuser
  2. 将上面的代码放入名为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

答案 1 :(得分:0)

如果您只需要更改端口号,可以像这样使用sed

def change_port(filename):
    with cd('/location'):
         run('sed -i "s/old_port_number/new_port_number/g" ' +filename)