Как внести изменения / редактировать файл, присутствующий на удаленном сервере, используя Python Fabric? - PullRequest
1 голос
/ 07 марта 2019

У меня есть файл .yml, присутствующий на удаленном сервере, я хочу внести в него изменения, используя Python Fabric.Если это можно сделать с другими библиотеками Python, не стесняйтесь поделиться.Спасибо

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Если вам просто нужно изменить номер порта, вы можете использовать sed вот так

def change_port(filename):
    with cd('/location'):
         run('sed -i "s/old_port_number/new_port_number/g" ' +filename)
0 голосов
/ 07 марта 2019

Вы пытаетесь отредактировать строку в середине файла, которая невозможна. Что вы можете сделать, это сделать копию удаленного файла на локальном компьютере с нужными значениями, которые вы хотите изменить, и затем отправить его обратно на удаленный сервер.

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_server и myuser IP-адресом удаленного сервера и именем пользователя на нем
  2. поместите приведенный выше код в файл с именем fabfile.py, и вы запустите из командной строки fab executeTask

Код выше fabric 2.4 совместим

EDIT: Из-за проблем с разрешениями вы можете сделать следующее:

@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

...