Статистика подключений на порт

  • Автор темы Proton
  • Дата начала
P

Proton

Здравствуйте, имеется сервер на UBUNTU server, производится вещание с помощью VLC в сеть TV и радио. Нужен скрипт отслеживающий в реальном времени (при открытии страницы на сайте) количество подключений на определённый порт, тоесть сколько в данный момент человек смотрит определенный канал или радио. возможно ошибся разделом PHP, :) кто может направте в нужном направлении.
 
V

vital

Вы ошиблись разделом) Хотя не совсем.. Вобщем, вам нужна какя-то программа, демон, который будет сам следить где-то за статистикой подключений на такой-то порт(тот-же iptables). А вот уже из пхп эту информацию можно получать по разному.. Например, через вызов system() того же iptables'a и парсинга его вывода.. Вариантов много) Наймите лучше специалиста)
 
P

Proton

Решение найдено!!!
Возможно есть и более простое решение, меня устраивает и своя идея.
Создаётся 2 скрипта:
1. написан на bash , ложится в любое место делается исполняемым chmod +x, выполняется без конца с заданием интервала выполнения числом sleep в секундах, его содержимое:

#!/bin/sh

while sleep 20
do
netstat -an | grep 8000 | grep ESTABLISHED > /var/www/stat_ports/8000.txt
done

#необходимо создать файл /var/www/stat_ports/8000.txt и дать права chmod 777 /var/www/stat_ports/8000.txt


Тут есть моменты, тупо скопированое с форума данное содержимое может не заработать, выдав ошибку интерпритаторa bash, связано это со спец символами перевода строки и возврата каретки. Объяснят не буду можно и погуглить, скажу только что стандартный (в линухе) mcedit видит эти символы, их надо удалить.

2. скрипт на php, вставляется в вашу страницу, данные берёт из /var/www/stat_ports/8000.txt и лежит рядом с ним, кодировка utf-8, содержимое:

PHP:
<?php
$file_array = file ("stat_ports/8000.txt");
if(!$file_array)
{
echo("Никто не слушает");
}
else
{
$num_str = count($file_array); 
echo("Сейчас слушает ");
echo($num_str);
echo(" человек");
}
?>


Путь к файлу берётся относительно виртуальной директории апача.



Есть вариант обойтись постоянным выполнением скрипта на bash вызовом выполнения его через php

PHP:
<?php system("/bin/sh your.sh"); ?>

----

your.sh

#!/bin/sh
echo "WORKING!"

Мне показалось это не удобным, так как для каждого открывшего страничку со статистикой дёргается скрипт your.sh создавая процес для каждого свой, гораздо стабильнее выдавать подготовленные данные в моём примере обновляя данный скажем раз в 20 секунд, нагрузка не большая, процес всего один.
Удачи!
 
V

vital

Ну я же вам примерно о том же и написал, что через пхп просто дергаются данные из другой проги.. А если вы против лишних процессов, можно просто форки сделать..
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!