В этой статье не процитировать какие - либо источники . ( декабрь 2009 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
Файлы, передаваемые по протоколу Shell ( FISH ) - это сетевой протокол, который использует Secure Shell (SSH) или Remote Shell (RSH) для передачи файлов между компьютерами и управления удаленными файлами.
Преимущество FISH заключается в том, что все, что ему требуется на стороне сервера, - это реализация SSH или RSH, оболочка Unix и набор стандартных утилит Unix (например, ls , cat или dd - в отличие от других методов удаленного доступа к файлам через удаленный компьютер). shell, например scp , который требует scp на стороне сервера). По желанию, на сервере может быть специальная программа FISH-сервера (называемая start_fish_server ), которая выполняет команды FISH вместо оболочки Unix и, таким образом, ускоряет операции.
Протокол был разработан Павлом Мачеком в 1998 году для программного инструмента Midnight Commander .
Сообщения протокола [ править ]
Клиент отправляет текстовые запросы следующего вида:
#FISH_COMMAND аргументы ...эквивалентные команды оболочки,который может быть многострочным
Все команды Fish определены, эквиваленты оболочки могут отличаться. Команды Fish всегда имеют приоритет: ожидается, что сервер выполнит команду Fish, если он ее поймет. Однако если этого не происходит, он может попытаться выполнить команду оболочки. Когда нет специальной серверной программы, оболочка Unix игнорирует команду fish как комментарий и выполняет эквивалентную команду (-ы) оболочки.
Ответы сервера многострочные, но всегда заканчиваются на
### xyz <необязательный текст>
линия. ###
это префикс для обозначения этой строки, xyz
это код возврата. Коды возврата - это расширенный набор кодов, используемых в FTP . Коды 000 и 001 являются специальными, их значение зависит от наличия вывода сервера в конечной строке.
Инициирование сеанса [ править ]
Клиент инициирует соединение SSH или RSH с echo FISH:;/bin/sh
помощью команды, выполняемой на удаленном компьютере. Это должно позволить серверу отличать FISH-соединения от обычных RSH или SSH.
Первые две команды, отправленные на сервер, - это FISH
и VER
для согласования протокола FISH, его версии и расширений.
#РЫБЫэхо; start_fish_server; echo '### 200'
#VER 0.0.2 <feature1> <feature2> <...>эхо '### 000'
Сервер может ответить на команду VER такими строками, как
VER 0.0.0 <feature2> <...>### 200
который указывает поддерживаемую версию протокола FISH и поддерживаемые расширения.
Реализации [ править ]
- Полуночный командир
- Lftp
- fish: // KDE kioslave (с Konqueror , Krusader или Dolphin )
- tramp-fish.el реализовал его в Emacs TRAMP (но, возможно , его выбросили, если бы он никому не понадобился); Emacs TRAMP в целом преследует те же цели, что и FISH: удаленный доступ к файлам через удаленную оболочку Unix.