PHP 与 Linux 主机之间安全通信


想实现的功能是这样:
客户端PHP页面,执行某个任务,比如新建站点,通过某种方式通知 后端的 nc 监听程序,然后执行相关脚本,不如创建ftp账号、新建目录等。

但是,应该怎样才能够通过 php 发消息给 nc 呢?
求教!

以下是php客户端:


 $fp = fsockopen ("udp://127.0.0.1",40030,$errno,$errstr,30);
if(!$fp){
    echo "$errstr ($errno) <br />";
}else{
    fwrite($fp,"Hello nc");
    echo "Success";
    fclose($fp);
}

以下是 shell 服务端:


 #!/bin/bash
killall 'nc' >/dev/null 2>&1
nc -l -u 40030 | while read Line
do
    echo $Line
done

可是为什么不输出呢?

php shell nc

朕射你无罪 10 years, 10 months ago

不知道你在干什么。不过竟然你提到安全了,那么要么别用 UDP,要么自己加验证和完整性检查。特别你竟然用 nc 来处理 UDP,这样消息界限就没了啊。

彻斯鲁·梅耶 answered 10 years, 10 months ago

后端为什么用nc呢,后端也可以用PHP写啊,例如使用 workerman 这类的服务框架

八乙女梓乃 answered 10 years, 10 months ago

因为Bash的read命令是 Read a line from the standard input and split it into fields.

所以你需要输出一个换行符: fwrite($fp,"Hello nc\n");

另外为什么你不直接在PHP使用popen执行脚本,干嘛多此一举用nc?你这个nc连接close掉就close掉了。

艾斯佩利乌斯 answered 10 years, 10 months ago

Your Answer