Я следующий fabfile:Использование ткани для выполнения команд в ограниченной оболочки
from fabric.api import *
env.hosts = ['samplehost']
env.user = 'foo'
env.password = 'bar'
env.shell = ''
def exec_ls():
run('ls')
run('ls -l')
и я получаю следующий результат:
[samplehost] Executing task 'exec_ls'
[samplehost] run: ls
[samplehost] out: sample.txt
[samplehost] run: ls -l
[samplehost] out: rbash: ls -l: command not found
Fatal error: run() encountered an error (return code 127) while executing 'ls -l'
Aborting.
Disconnecting from samplehost... done.
шелл для пользователя «Foo» является '/бен/rbash.
Похоже, что если я выполняю команду с параметрами, она рассматривается как одна команда (в то время как «ls» без параметров работает отлично).
Обратите внимание: я положил пустую оболочку, потому что в противном случае Ткань пытается использовать '/ bin/bash', и это запрещено его оболочкой.
Можно ли использовать ткань в ограниченной оболочке?
Указание '' rbash -l -c'', решило проблему. Невозможно поместить ''/bin/rbash'', поскольку ограниченная оболочка запрещает использовать абсолютный путь. – alexyz78