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

php中文网
发布: 2016-06-06 20:43:36
原创
1527人浏览过

想实现的功能是这样:
客户端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 服务端:

立即学习PHP免费学习笔记(深入)”;

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

可是为什么不输出呢?

Phidata
Phidata

Phidata是一个开源框架,可以快速构建和部署AI智能体应用

Phidata 173
查看详情 Phidata

回复内容:

想实现的功能是这样:
客户端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 服务端:

立即学习PHP免费学习笔记(深入)”;

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

可是为什么不输出呢?

因为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,这样消息界限就没了啊。

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号