Есть ли способ выполнить многострочный -сценарий оболочки, перенаправив его на стандартный ввод удаленной оболочки в Fabric ? Или я всегда должен записывать его в удаленную файловую систему, затем запускать, а затем удалять? Мне нравится отправлять на стандартный ввод, так как он позволяет избежать временного файла. Если нет API-интерфейса фабрики (и кажется, что он не основан на моем исследовании ), предположительно, я могу просто использовать модуль ssh
напрямую. По сути, я бы хотел, чтобы fabric.api.run
не ограничивался 1-строчной командой -, которая передается оболочке в качестве аргумента командной строки, а вместо этого брал бы полный многострочный -скрипт и записывал его на стандартный ввод удаленной оболочки..
Чтобы уточнить, мне нужен тканевый эквивалент этой командной строки:
ssh somehost /bin/sh < /tmp/test.sh
За исключением python, исходный код сценария не будет исходить из файла в локальной файловой системе, это будет просто многострочная строка в памяти. Обратите внимание, что это единственная логическая операция, и на удаленной стороне нет временного файла, а это означает, что непредвиденные сбои и сбои не оставляют потерянных файлов. Если бы в ткани (был такой вариант, о чем я и спрашиваю ),не нужно было бы иметь временный файл с обеих сторон, и для этого потребовалась бы только одна операция ssh.