本地主机上的Netcat“连接被拒绝”

我想从一个PHP文件启动一个netcat连接的值,但它死亡:

 localhost [127.0.0.1] 2000 (?) : Connection refused 

我不知道为什么,但它运作良好,如果我ssh它作为Apache用户(万维网数据)。 这就是我所做的:

  1. 开始一个无限循环,服务一个有点延迟的date:

     $ (while true; do nc -l -p 2000 -c "sleep 5; date"; done)& 
  2. 检查是否工作:

     $ su www-data $ nc localhost 2000 Fri Oct 16 21:33:20 COT 2009 
  3. 创build/var/www/test.php如下:

     <?php exec('nc localhost 2000>>/var/www/dates.txt 2>>/var/www/errors.txt &'); ?> 
  4. 在浏览器上运行它:

     http://myserver.com/test.php 
  5. 最后看看这两个txt的,date是空的(没有像#2中的响应),错误有“连接被拒绝”的错误。

该服务器是一个运行Ubuntu Server 9.04 DRBD和Heartbeat的LAMP集群。

让我疯狂的是,这个test.php在我的笔记本电脑(Ubuntu桌面9.04上的LAMP)中效果很好,服务器似乎已经打开并监听端口:

 $ netstat -ntpl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:4743 0.0.0.0:* LISTEN 2326/openhpid tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3364/mysqld tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 9510/nc tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3470/apache2 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2320/sshd tcp 0 0 127.0.0.1:3551 0.0.0.0:* LISTEN 2354/apcupsd tcp6 0 0 :::22 :::* LISTEN 2320/sshd 

这是我真正想要存档: 图(我没有enogh点插入图像呢,哈哈)

  • 当服务器请求时,将重量值从卡车秤发送到服务器
  • 将原始文本(epson转义文本格式)发送到打印机的串行端口

所以在客户端电脑不断运行两个监听netcat连接,一个用于获取重量,另一个用于打印原始文本。

检查本地接口是否启动。

 ip link 

应该告诉你。 本地接口可能不可用,但是可能的。

你想看到像这样的东西:

 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 

另外,看看IP路由。 看看那里是否有绝对的疯狂。

这个命令在端口号和redirect之间需要一个空格。

 nc localhost 2000 >>/var/www/dates.txt 2>>/var/www/errors.txt 

顺便说一句,确保有一个更有效率和安全的方式来实现你要进入的方向。

那么,毕竟这是一个权限问题…固定编辑/ etc / sudoers与visudo添加:

 www-data ALL = NOPASSWD: /bin/nc