Estoy implementando un pequeño servidor telnet en Ruby. El problema al que me enfrento actualmente es que quiero agregar compatibilidad con readline para poder tener compatibilidad con la finalización de pestañas y el historial de línea de comandos. He consultado la biblioteca Readline, pero parece que solo funcionará a través de stdin. ¿Hay alguna forma de hacer esto en Ruby (noté la solución para Python)?Servidor de Telnet de edición de línea Ruby
5
A
Respuesta
1
Puede hacer esto conectando una tubería a readline. Aquí hay un ejemplo usando el ciclo while
de la documentación de readline que acaba de enviar command 1
, command2
, command 3
para readline.
require 'readline'
rd, wr = IO.pipe
(1..3).each do |i|
wr.puts "command #{i}"
end
wr.close
Readline.input = rd
while buf = Readline.readline('', true)
p Readline::HISTORY.to_a
print("-> ", buf, "\n")
end
Salida:
["command 1"]
-> command 1
["command 1", "command 2"]
-> command 2
["command 1", "command 2", "command 3"]
-> command 3
Cuestiones relacionadas
- 1. Servidor Telnet
- 2. Telnet al servidor de correo de google
- 3. Dependencias de Ruby gem en el servidor fuera de línea
- 4. Múltiples conexiones de red simultáneas - servidor Telnet, Python
- 5. Edición en línea de archivos gettext?
- 6. Edición de texto en línea en SVG
- 7. Telnet dentro de un script de shell
- 8. conexión de cliente telnet deja de recibir datos, el servidor todavía está enviando
- 9. usando telnet para transferir un archivo desde/al servidor
- 10. Automatización de Telnet con PowerShell
- 11. Una línea de servidor FTP
- 12. dejar que telnet ejecute un solo comando en una línea
- 13. esquema de extracción para el servidor sql edición compacta
- 14. convertir Ubuntu 10.04 edición de escritorio a Ubuntu 10.04 servidor
- 15. Tutorial en línea de metaprogramación de Ruby
- 16. Normalización de terminaciones de línea en Ruby
- 17. Telnet Comando IAC que responde
- 18. ¿Cómo implementa workflowy la edición en línea?
- 19. ¿Cómo enviar un retorno de carro a través de telnet?
- 20. ¿Es posible enviar "solicitudes" de LDAP a través de telnet?
- 21. Edición línea específica en el archivo de texto en Python
- 22. UITextView (edición): detectar que ocurrió el siguiente evento de línea
- 23. La conexión de socket a un servidor basado en telnet se cuelga al leer
- 24. Open source API Telnet Java
- 25. Línea de comando Python: error de edición en la línea anterior?
- 26. servidor xmpp y recomendaciones de integración de ruby on rails?
- 27. Configuración del servidor de desarrollo para Ruby
- 28. ¿Puedes hacer telnet a ssh?
- 29. telnet enviar una solicitud HTTP
- 30. Telnet Uso de applets en JavaScript
En este momento, es que ha intentado aplicar readline en el servidor? Creo que readline es algo implementado en el lado del cliente. –
Jip, ese es mi problema en este momento. Readline solo funciona con stdin (por lo tanto, solo en el lado del cliente). Quiero saber si es posible hacer que readline funcione a través de telnet para que pueda obtener autocompletado, etc. para los comandos del lado del servidor que están expuestos por mi servidor telnet. – wcmatthysen
No creo que readline funcione en algo más que stdin. ¿Esperas que los usuarios se conecten usando el cliente estándar de telnet? De hecho, no estoy seguro de si telnet admite la finalización de pestañas. Creo que la manera más sencilla sería simplemente implementar su propio cliente y agregar soporte de lectura con la finalización de pestañas allí. –