comando bash para emular repetidamente a KeyPress en un Process
-
22-09-2019 - |
Pregunta
losnmap La herramienta tiene una característica de este tipo, cuando realiza un escaneo [#nmap -a -t4 localhost] y presiona "Enter", muestra la información de estado de estado "Tiempo: aproximadamente 6.17% hecho"
Pregunta: ¿Cómo puedo obligar a este tecla a suceder repetidamente sin tocar un teclado en Bourne Shell?
PD: Solo trato de encontrar una solución al trabajo para un error en la función PROC_OPEN de PHP, cuando se devuelve un proceso de un proceso solo después de cerrar la tubería Stdout, y la emulación PTY de PHP no funciona en FBSD.
Pregunta cerrada. Problema resuelto con la utilidad "esperar"
#!/usr/local/bin/expect
spawn /usr/local/bin/nmap -A -T4 -p 21-100 localhost
expect arting {sleep 3; send \r}
while {1} {
expect eof {
send_user "finished\n";
exit;
} "done;" {
sleep 3;
send \r;
continue;
}
}
Solución
Probablemente más fácil de usar expect
.
Otros consejos
Tal vez el programa final 'Sí Man' haga lo que necesita: el programa se llama 'Sí' y genera repetidamente la misma línea de entrada una y otra vez.
yes ok | recalcitrant.php
Esto enviará 'OK' más Newline al recalcitrante PHP con frecuencia. Está limitado por la velocidad a la que el programa de recepción lee sus entradas. Está disponible en las utilidades de GNU y en la mayoría de las otras plataformas basadas en UNIX.
Sin embargo, si necesita inteligencia en el procesamiento, entonces el TCL 'basado en TCL'suponer'
Nota, puede deshacerse del bucle infinito:
spawn /usr/local/bin/nmap -A -T4 -p 21-100 localhost
expect arting {sleep 3; send \r}
expect {
"done;" {
sleep 3
send \r
exp_continue
}
eof
}
puts "finished"
¿Estás seguro de que necesitas el sleep
¿s? Por lo general, se pueden evitar usando -regexp
emparejando con el expect
dominio.
Consejo de esperanza útil: mientras se desarrolla, use exp_internal 1
Para ver muy bien cómo sus patrones coinciden con la salida del comando.