Выполнение SFTP-операций через sudo на удаленной машине с Paramiko - PullRequest
1 голос
/ 11 февраля 2020

Как использовать Paramiko и sudo для запуска chmod 775?

Фрагмент кода:

    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())    
    r_pass = getpass.getpass(prompt='Remote password? ')   
    ssh_client.connect(r_ip, username=r_name, password=r_pass)
    ftp = ssh_client.open_sftp()
    for fn in files:
        print("sending {} of {}".format(count, len(files)))
        ftp.put(fn, posixpath.join(r_path_mark, fn))
        ftp.chmod(r_path_mark+fn, 0o775)   

Самая последняя команда ftp.chmod приводит к " разрешение отклонено".

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Спасибо всем, кто ответил. Я сделал обзор всех отзывов. Все хорошо, но для нашего решения это не сработало. Спасибо также @ cricket_007. Мой TL предложил мне также использовать Ansible.

Я все заработал. Хитрость заключалась в том, чтобы вызвать другой сценарий, в котором вызываемый сценарий находится локально на удаленной машине, и поэтому вещи sudo не являются проблемой.

Поток выглядит следующим образом:

  • Сервер приложений ( скрипт 'A' вызывается пользователем)
  • Сервер приложений (скрипт A выполняет свою процедуру и затем с помощью subprocess.call вызывает скрипт 'B', также находящийся на том же сервере приложений)
  • App сервер (скрипт 'B' имеет некоторый волшебный открытый исходный код, который я не написал .. но он вызывает скрипт 'C', находящийся на удаленном сервере)
  • Удаленный сервер (скрипт 'C' возможность запускать все как sudo su - локально. Никакого специального кодирования не требуется, поскольку оно локально для машины <<, и это была моя первоначальная проблема для начала) </li>

Все хорошо << Только что проверил конец завершить развертывание сегодня утром. </p>

0 голосов
/ 11 февраля 2020

Не существует стандартного способа запуска SFTP через sudo - Хотя это не невозможно, оно включает в себя несколько хаков.

Для справки моя статья об использовании su / sudo с WinSCP SFTP-клиентом:
Как сменить пользователя после входа в систему (например, su root)? .


В качестве альтернативы, вы можете запустить chmod команду оболочки поверх sudo, что уже в других вопросах:


Хотя в общем случае вам не следует использовать sudo этот способ для автоматизации команд.
Для альтернатив см.
Разрешение автоматического выполнения команды c как root на Linux с использованием S SH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...