信息资讯综合思念体

震惊!php还能这么玩!如何与可交互的程序进行交互


今天有幸看到一篇 shell中交互输入自动化 的文章,对于SDTIN的理解好像是又加深了一层


然后尝试用PHP来实现,果然是可以的,简直棒棒的。

祭出代码:

<?php
/**
 * 与shell程序使用管道进行交互
 */

//定义要开启的管道
$descriptorspec = array(
   0 => array("pipe", "r"),  // 标准输入,子进程从此管道中读取数据
   1 => array("pipe", "w"),  // 标准输出,子进程向此管道中写入数据
   2 => array("file", "./error-output.txt", "a") // 标准错误,写入到一个文件
);

//读入要生成的文件名
if (!isset($argv[1])) {exit('请输入秘钥文件名!');}

$key_name = $argv[1];

//参数
$params =<<<PARAM
CN
Beijing
beijing
Rea .Ltd
technology section
reatang.com
admin@reatang.com



PARAM;

//打开进程
$process = proc_open("openssl req -new -newkey rsa:2048 -nodes -keyout {$key_name}.key -out {$key_name}.csr", $descriptorspec, $pipes, __DIR__);

if (is_resource($process)) {
    
    //与进程进行交互
    fwrite($pipes[0], $params);
    fclose($pipes[0]);
    
    //交互完成
    echo stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    $return_value = proc_close($process);

    echo "command returned $return_value\n";
}


这样就自动完成了和命令的交互!OMG简直赞!还是我的基础功夫不扎实呀,之前学习给网站加证书的时候就在想如何能自动生成CSR文件,现在OK了!!


blob.png

«   2020年4月   »
12345
6789101112
13141516171819
20212223242526
27282930
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接
  • RainbowSoft Studio Z-Blog
  • 订阅本站的 RSS 2.0 新闻聚合

Powered By Z-BlogPHP 1.5.1 Zero Theme By 爱墙纸

百度资讯综合思念体对有机生命接触用人形终端界面 那就是
晋ICP备15000230号-1