Recientemente me he enfrentado a una tarea bastante extraña, un resultado es la necesidad de usar tonos DTMF (también llamados tonos táctiles) para controlar un terminal de computadora que no sea X Linux. . La computadora tiene un módem al que se puede acceder a través de ALSA, y por lo tanto el programa sox "rec", que es a lo que estoy leyendo la entrada. La computadora en cuestión está completamente aislada, sin Ethernet ni otras interfaces de red. La implementación del algoritmo de Goertzel que estoy usando funciona muy bien, al igual que el motor de síntesis de voz eSpeak, que es la única fuente de salida; se supone que esto funciona con cualquier teléfono Touch Tone. Lee de nuevo tanto las entradas (las entradas son dígitos octales, un byte ASCII a la vez) como lo que sea que el shell dash
retroalimenta: el aviso, la salida de los comandos, etc., usando mnemónicos ASCII para los caracteres de control.Insertar pulsaciones de teclas en la consola Linux desde Python
El método actual que estoy utilizando para interactuar con dash
y los programas iniciados a través de él es el módulo pexpect
. Sin embargo, necesito que pueda, a petición, leer todo el contenido de la línea en la que se coloca el cursor, y no recuerdo pexpect
pudiendo hacer esto (si es así, no puedo decirlo). La única otra solución en la que puedo pensar es usar de alguna manera Python para controlar, o actuar como, el teclado y los controladores de la consola.
¿Es esta, de hecho, la única manera de hacerlo (y si es así, incluso es posible con Python?), ¿O hay otra forma de tener acceso directo a los contenidos de la consola?
Edit: A través de la suerte, recientemente descubrí que la versión SVN de PExpect tiene pexpect.screen. Sin embargo, no tiene ninguna forma de ejecutar un programa debajo de él. Tendré que vigilar su desarrollo.
Ok, pero ¿cómo puedo ejecutar un shell (como 'dash') dentro de él? – mmirate
Más precisamente, ¿cómo lo hago sin volver a implementar 'readline'? – mmirate
Bueno, si 'readline' es todo lo que está usando' sh', entonces hay [enlaces de python] (http://docs.python.org/library/readline.html) para readline. – Anish