Skip to content
Advertisement

netcat “Connection refused” on localhost

I’m 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:

1) Start an endless loop serving a date with a little delay:

$ (while true; do nc -l -p 2000 -c "sleep 5; date"; done)&

2) Check if is working:

$ su www-data
$ nc localhost 2000
Fri Oct 16 21:33:20 COT 2009

3) Create /var/www/test.php as follows:

<pre><?php
exec('nc localhost 2000>>/var/www/dates.txt 2>>/var/www/errors.txt &');
?></pre>

4) Run it on a browser:

http://myserver.com/test.php

5) 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

I think that this is a programming related question right?, if not just close it without any comments please.

Thank in advanced!!!

Advertisement

Answer

Well, it was a permission problem after all… fixed editing /etc/sudoers with visudo to add:

www-data ALL = NOPASSWD: /bin/nc
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement