I am trying to get a value from a netcat
connection started at a php file, but it dies with:
localhost [127.0.0.1] 2000 (?) : Connection refused
I don't know why, but it works well if I ssh it as apache user (www-data). This is what I've done:
Start an endless loop serving a date with a little delay:
$ (while true; do nc -l -p 2000 -c "sleep 5; date"; done)&
Check if is working:
$ su www-data $ nc localhost 2000 Fri Oct 16 21:33:20 COT 2009
Create /var/www/test.php as follows:
<?php exec('nc localhost 2000>>/var/www/dates.txt 2>>/var/www/errors.txt &'); ?>
Run it on a browser:
http://myserver.com/test.php
Finally take a look at both txt's, dates is empty (nothing like the response in #2) and errors has the "Connection refused" error.
The server is a LAMP cluster running Ubuntu Server 9.04 with DRBD and Heartbeat.
What is driving me crazy is that this test.php works well in my laptop (LAMP on Ubuntu Desktop 9.04) and the server seems to have the ports already open and listening:
$ 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
This is what I really want to archive: diagram (I don't have enogh points to insert images yet, lol)
- send the weight value from the truck scale to the server when the server requests it
- send raw text (epson escaped text format) to the printer's serial port
So in the client pc are constantly running two listening netcat
connections, one for getting the weight and the other to print raw text.