Files transferred over Shell protocol (FISH) is a network
protocol that uses
Secure Shell
The Secure Shell Protocol (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network. Its most notable applications are remote login and command-line execution.
SSH applications are based ...
(SSH) or
Remote Shell (RSH) to
transfer files between computers and manage remote files.
The advantage of FISH is that all it requires on the server-side is an SSH or RSH implementation,
Unix shell
A Unix shell is a command-line interpreter or shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command language and a scripting language, and is used by the operating system t ...
, and a set of standard
Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
utilities (like
ls,
cat
The cat (''Felis catus'') is a domestic species of small carnivorous mammal. It is the only domesticated species in the family Felidae and is commonly referred to as the domestic cat or house cat to distinguish it from the wild members of ...
or
dd—unlike other methods of remote access to files via a remote shell,
scp
SCP may refer to:
Organizations Political parties
* Soviet Communist Party, the leading political party in the former Soviet Union
* Syrian Communist Party
* Sudanese Communist Party
* Scottish Christian Party
Companies
* Seattle Computer Produ ...
for example, which requires ''scp'' on the server side). Optionally, there can be a special FISH server program (called ''start_fish_server'') on the server, which executes FISH commands instead of Unix shell and thus speeds up operations.
The protocol was designed by Czech Linux Kernel Hacker, Pavel Machek, in 1998 for the
Midnight Commander software tool.
File: ''Fish.c'' - via Midnight Commander Official Repository
/ref>
Protocol messages
Client sends text requests of the following form:
#FISH_COMMAND arguments...
equivalent shell commands,
which may be multi-line
Fish commands are all defined, shell equivalents may vary.
Fish commands always have priority: the server is expected to execute a fish command if it understands it. If it does not, however, it can try to execute a shell command.
When there is no special server program, Unix shell ignores the fish command as a comment and executes the equivalent shell command(s).
Server replies are multi-line, but always end with
### xyz<optional text>
line. ###
is a prefix to mark this line, xyz
is the return code.
Return codes are a superset to those used in FTP.
The codes 000 and 001 are special, their meaning depends on presence of server output before the end line.
Session initiation
The client initiates SSH or RSH connection with echo FISH:;/bin/sh
as the command executed on remote machine. This should make it possible for the server to distinguish FISH connections from normal RSH or SSH.
The first two commands sent to the server are FISH
and VER
to negotiate FISH protocol, its version and extensions.
#FISH
echo; start_fish_server; echo '### 200'
#VER 0.0.2 <...>
echo '### 000'
The server may reply to VER command with a lines like
VER 0.0.0 <...>
### 200
which indicates supported version of the FISH protocol and supported extensions.
Implementations
* Midnight Commander
* Lftp
*fish:// KDE
KDE is an international free software community that develops free and open-source software. As a central development hub, it provides tools and resources that allow collaborative work on this kind of software. Well-known products include the ...
kioslave (with konqueror
Konqueror is a free and open-source web browser and file manager that provides web access and file-viewer functionality for file systems (such as local files, files on a remote FTP server and files in a disk image). It forms a core part of ...
, Krusader or Dolphin
A dolphin is an aquatic mammal within the infraorder Cetacea. Dolphin species belong to the families Delphinidae (the oceanic dolphins), Platanistidae (the Indian river dolphins), Iniidae (the New World river dolphins), Pontoporiidae (t ...
)
* ''tramp-fish.el'' implemented it in Emacs TRAMP (but migh
have been thrown away
if nobody needed it); Emacs TRAMP in overall has similar goals to FISH: remote access to files through a remote Unix shell.
See also
* SSHFS
* SSH File Transfer Protocol
In computing, the SSH File Transfer Protocol (also known as Secure File Transfer Protocol or SFTP) is a network protocol that provides file access, file transfer, and file management over any reliable data stream. It was designed by the Internet ...
References
External links
README.fish from Midnight Commander
{{DEFAULTSORT:Files Transferred Over Shell Protocol
Network file transfer protocols