Home > Backend Development > PHP Tutorial > shell - PHP 与 Linux 主机之间安全通信

shell - PHP 与 Linux 主机之间安全通信

WBOY
Release: 2016-06-06 20:43:36
Original
1290 people have browsed it

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

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

以下是php客户端:

<code class="lang-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);
}
</code>
Copy after login
Copy after login

以下是 shell 服务端:

<code class="lang-shell">#!/bin/bash
killall 'nc' >/dev/null 2>&1
nc -l -u 40030 | while read Line
do
    echo $Line
done
</code>
Copy after login
Copy after login

可是为什么不输出呢?

回复内容:

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

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

以下是php客户端:

<code class="lang-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);
}
</code>
Copy after login
Copy after login

以下是 shell 服务端:

<code class="lang-shell">#!/bin/bash
killall 'nc' >/dev/null 2>&1
nc -l -u 40030 | while read Line
do
    echo $Line
done
</code>
Copy after login
Copy after login

可是为什么不输出呢?

因为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掉了。

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

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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template