Ответ 1
from fabric.contrib.files import exists
def foo():
if exists('/path/to/remote/file', use_sudo=True):
#command
Я устанавливаю сертификаты на удаленном сервере и хочу проверить, существуют ли они до того, как я их перезапишу. Сервер разрешает доступ без полномочий root через открытый ключ ssh. Я могу sudo -s
корневать один раз в оболочке. Корень требуется, потому что /etc/ssl не читается кем-либо еще. Это разрабатывается в python fabric
, поэтому любая команда, которая может быть запущена в команде оболочки через sudo
, будет работать. Я не против вводить пароли в приглашениях в этом случае.
TL; DR: Мне нужна команда sh
, которая может сообщить моей программе python, существует ли удаленный файл (или каталог) при запуске как if fabric.sudo(sh_command) == True:
(или что-то подобное).
Спасибо!
from fabric.contrib.files import exists
def foo():
if exists('/path/to/remote/file', use_sudo=True):
#command
Возможно, не самый простой способ, но из головы я бы предложил
ssh [email protected] 'bash -c "if [ -e /path/to/remote/file ] ; then true ; fi"'
Запустите команду test в Linux, чтобы выяснить, существует ли каталог или нет. Вывод fabric.sudo - это многострочная строка, которая может быть проанализирована для статуса возврата.