El protocolo de archivos transferidos mediante Shell ( FISH ) es un protocolo de red que utiliza Secure Shell (SSH) o Remote Shell (RSH) para transferir archivos entre computadoras y administrar archivos remotos.
La ventaja de FISH es que todo lo que requiere en el lado del servidor es una implementación de SSH o RSH, un shell de Unix y un conjunto de utilidades estándar de Unix (como ls , cat o dd , a diferencia de otros métodos de acceso remoto a archivos a través de un shell remoto, scp por ejemplo, que requiere scp en el lado del servidor). Opcionalmente, puede haber un programa de servidor FISH especial (llamado start_fish_server ) en el servidor, que ejecuta comandos FISH en lugar del shell de Unix y, por lo tanto, acelera las operaciones.
El protocolo fue diseñado por el hacker checo de kernel de Linux, Pavel Machek, en 1998 para la herramienta de software Midnight Commander . [1]
Mensajes de protocolo
El cliente envía solicitudes de texto del siguiente formato:
Argumentos #FISH_COMMAND... comandos de shell equivalentes, que puede ser de varias líneas
Los comandos fish están todos definidos, los equivalentes del shell pueden variar. Los comandos fish siempre tienen prioridad: se espera que el servidor ejecute un comando fish si lo entiende. Sin embargo, si no lo entiende, puede intentar ejecutar un comando del shell. Cuando no hay un programa de servidor especial, el shell de Unix ignora el comando fish como comentario y ejecuta el o los comandos del shell equivalentes.
Las respuestas del servidor son de varias líneas, pero siempre terminan con
### xyz<texto opcional>
línea. ###es un prefijo para marcar esta línea, xyzes el código de retorno. Los códigos de retorno son un superconjunto de los utilizados en FTP . Los códigos 000 y 001 son especiales, su significado depende de la presencia de la salida del servidor antes de la línea final.
Inicio de sesión
El cliente inicia la conexión SSH o RSH con echo FISH:;/bin/shel comando que se ejecuta en la máquina remota. Esto debería permitir al servidor distinguir las conexiones FISH de las conexiones RSH o SSH normales.
Los dos primeros comandos enviados al servidor son FISHy VERpara negociar el protocolo FISH, su versión y extensiones.
#PEZ eco; iniciar_servidor_fish; eco '### 200'
#VER 0.0.2 <característica1> <característica2> <...> eco '### 000'
El servidor puede responder al comando VER con líneas como
VER 0.0.0 <característica2> <...> ### 200
que indica la versión compatible del protocolo FISH y las extensiones compatibles.
Implementaciones
- Comandante de medianoche [2]
- lejano2l [3]
- Lftp [4]
- fish:// KDE kioslave [5] (con konqueror , Krusader o Dolphin )
- pescado como tcl-vfs
- FISH se implementó en Emacs TRAMP hace algún tiempo, pero se eliminó el soporte [6] [7] (aunque TRAMP todavía puede usar conexiones de shell de manera similar usando el archivo de script tramp-sh.el)
Véase también
Referencias
- ^ Archivo: Fish.c - vía el repositorio oficial de Midnight Commander
- ^ https://github.com/MidnightCommander/mc/blob/master/src/vfs/fish/fish.c [ URL desnuda ]
- ^ "Característica: considere portar FISH (transferencia de archivos sobre el sistema de archivos SHell) de Midnight Commander · Número 1819 · elfmz/Far2l". GitHub .
- ^ "LFTP/SRC/Fish.cc en master · lavv17/LFTP". GitHub .
- ^ "Kio-extras/Fish/Fish.CPP en master · KDE/Kio-extras". GitHub .
- ^ commit relacionado en Emacs
- ^ "Re: El método del pescado de Tramp".
Enlaces externos
- README.fish de Midnight Commander