Файлы, передаваемые по протоколу оболочки
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2009 г. ) |
Файлы, передаваемые по протоколу Shell ( FISH ), — это сетевой протокол , который использует Secure Shell (SSH) или Remote Shell (RSH) для передачи файлов между компьютерами и управления удаленными файлами.
Преимущество FISH заключается в том, что все, что ему требуется на стороне сервера, — это реализация SSH или RSH, оболочка Unix и набор стандартных Unix утилит (таких как ls , cat или dd — в отличие от других методов удаленного доступа к файлам через удаленный компьютер). оболочки, scp например , для которого требуется scp на стороне сервера). При желании на сервере может быть специальная программа FISH-сервера (называемая start_fish_server ), которая выполняет команды FISH вместо оболочки Unix и тем самым ускоряет операции.
Протокол был разработан чешским Linux Kernel Hacker Павлом Мачеком в 1998 году для программного инструмента Midnight Commander . [1]
Протокольные сообщения
[ редактировать ]Клиент отправляет текстовые запросы следующего вида:
#FISH_COMMAND arguments... equivalent shell commands, which may be multi-line
Все команды Fish определены, эквиваленты оболочки могут различаться. Команды рыбы всегда имеют приоритет: ожидается, что сервер выполнит команду рыбы, если он ее поймет. Однако если этого не происходит, он может попытаться выполнить команду оболочки. Если специальной серверной программы нет, оболочка Unix игнорирует команду fish как комментарий и выполняет эквивалентную команду(и) оболочки.
Ответы сервера многострочные, но всегда заканчиваются
### xyz<optional text>
линия. ###
это префикс для обозначения этой строки, xyz
это код возврата.
Коды возврата являются расширенным набором кодов, используемых в FTP .
Коды 000 и 001 специальные, их значение зависит от наличия вывода сервера перед конечной строкой.
Инициирование сеанса
[ редактировать ]Клиент инициирует соединение SSH или RSH с echo FISH:;/bin/sh
как команда, выполняемая на удаленном компьютере. Это должно позволить серверу отличать FISH-соединения от обычных RSH или SSH.
Первые две команды, отправленные на сервер: FISH
и VER
обсудить протокол FISH, его версию и расширения.
#FISH echo; start_fish_server; echo '### 200'
#VER 0.0.2 <feature1> <feature2> <...> echo '### 000'
Сервер может ответить на команду VER такими строками, как
VER 0.0.0 <feature2> <...> ### 200
который указывает поддерживаемую версию протокола FISH и поддерживаемые расширения.
Реализации
[ редактировать ]- Полуночный командир [2]
- Far2l [3]
- Лфтп [4]
- рыба:// KDE киославе [5] (с победителем , крестоносцем или дельфином )
- рыба как tcl-vfs
- FISH был реализован в Emacs TRAMP некоторое время назад, но поддержка была удалена. [6] [7] (хотя TRAMP по-прежнему может использовать соединения оболочки аналогичным образом, используя файл сценария Trump-sh.el)
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Файл: Fish.c — из официального репозитория Midnight Commander.
- ^ https://github.com/MidnightCommander/mc/blob/master/src/vfs/fish/fish.c
- ^ https://github.com/elfmz/far2l/issues/1819
- ^ https://github.com/lavv17/lftp/blob/master/src/Fish.cc
- ^ https://github.com/KDE/kio-extras/blob/master/fish/fish.cpp
- ^ связанный коммит в Emacs
- ^ https://lists.gnu.org/archive/html/tramp-devel/2010-09/msg00001.html .