Я пытаюсь получить ценность от netcat
соединение началось с файла php, но умирает с:
localhost [127.0.0.1] 2000 (?) : Connection refused
Я не знаю почему, но он работает хорошо, если я использую ssh как пользователь apache (www-data). Вот что я сделал:
Начните бесконечный цикл обслуживания свидания с небольшой задержкой:
$ (while true; do nc -l -p 2000 -c "sleep 5; date"; done)&
Проверьте, работает ли:
$ su www-data
$ nc localhost 2000
Fri Oct 16 21:33:20 COT 2009
Создайте /var/www/test.php следующим образом:
<?php
exec('nc localhost 2000>>/var/www/dates.txt 2>>/var/www/errors.txt &');
?>
Запустите его в браузере:
http://myserver.com/test.php
Наконец, взгляните на оба txt, даты пустые (ничего похожего на ответ в № 2), а ошибки содержат ошибку «Соединение отклонено».
Сервер представляет собой кластер LAMP под управлением Ubuntu Server 9.04 с DRBD и Heartbeat.
Что сводит меня с ума, так это то, что этот test.php хорошо работает на моем ноутбуке (LAMP на Ubuntu Desktop 9.04), и на сервере, похоже, порты уже открыты и слушают:
$ 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
Вот что я действительно хочу заархивировать: диаграмма (у меня пока нет достаточного количества точек для вставки изображений, лол)
Итак, на клиентском компьютере постоянно работают два прослушивающих netcat
соединения, одно для получения веса, а другое для печати необработанного текста.
Ну, в конце концов, это была проблема с разрешением ... исправлено редактирование / etc / sudoers с помощью visudo, чтобы добавить:
www-data ALL = NOPASSWD: /bin/nc
Для этой команды нужен пробел между номером порта и перенаправлением.
nc localhost 2000 >>/var/www/dates.txt 2>>/var/www/errors.txt
Между прочим, обязательно найдется более эффективный и безопасный способ достичь того направления, в котором вы идете.
Убедитесь, что локальный интерфейс включен.
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 route. Посмотрите, не происходит ли там что-нибудь абсолютно безумное.