bash命令反复模仿键盘
-
22-09-2019 - |
题
这nmap 工具具有这样的功能 - 当您执行扫描[#NMAP -A -T4 localhost]时,请按“ Enter” - 它显示一种状态信息“定时:完成的6.17%”
问题 - 我如何强迫此键击球反复发生,而无需触摸伯恩·壳(Bourne Shell)中的键盘?
PS:仅仅试图在PHP的Proc_open函数中找到一个错误的工作,只有在关闭Stdout管道后才返回过程时,PHP的PTY仿真在FBSD上不起作用。
问题关闭。使用“期望”实用程序解决的问题
#!/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;
}
}
解决方案
可能最容易使用 expect
.
其他提示
也许最终的“是的人”程序将执行您需要的事情 - 该程序称为“是”,并反复生成相同的输入线。
yes ok | recalcitrant.php
这将经常将“确定”加上新线发送到recalcitrant php。它是由接收程序读取其输入的速度限制的。它可以在GNU实用程序以及大多数基于UNIX的平台上使用。
但是,如果您在处理中需要任何智能,则基于TCL'预计'
注意,您可以摆脱无限循环:
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"
您确定需要 sleep
s?通常可以通过使用 -regexp
与 expect
命令。
有用的期望提示:开发时,使用 exp_internal 1
言语查看您的模式如何匹配命令输出。
不隶属于 StackOverflow