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"

您确定需要 sleeps?通常可以通过使用 -regexpexpect 命令。

有用的期望提示:开发时,使用 exp_internal 1 言语查看您的模式如何匹配命令输出。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top