Поднял squid, mysql, для сбора статистики (по статье из OpN) создал таблицу и сделал два скрипта для сбора статистики:
1. /etc/squid/squid-to-mysql содержание:
#!bin/bash
cp /var/log/squid/logs/access.log /tmp/squidforparse.log
>/var/www/squid/access.log
awk '{print «INSERT INTO squid (ip,bytes,link,trans,time) VALUES(\"«$3»\«,»$5«,\»«$7»\«,\»«$9»\«,from_unixtime(»$1«));»};' < /tmp/squidforparse.log | mysql -D traffics -u root --password=mypasswd
rm -f /tmp/squidforpars.log
2. php-скрипт для отображения статистики /var/www/htdocs/index.php:
<?php
$color="»; $year = «»; $ipv4=getenv(«REMOTE_ADDR»);
$res = mysql_connect(«localhost», «root», «mypasswd») or die(«Fatal PHP 'MySQL CONNECT' error.»);
$res = mysql_select_db(«traffics») or die(«Fatal database query 'USE' error»);
if ($HTTP_GET_VARS["month"]==«list») {
$res = mysql_query(«SELECT DISTINCT(LEFT(time,7)) AS month,LEFT(time,4) AS year FROM squid ORDER BY year DESC,month DESC;»);
while ($rw=mysql_fetch_array($res)) {
if ($year<>$rw["year"]) {
$year=$rw["year"];
$table.=»
$year РіРѕРґ:»;
};
$table.="<a href=$PHP_SELF?month=».$rw["month"].«>».$rw["month"]."</a> »;
}; $otherlink="<a href=$PHP_SELF?>»;
} else {
system(»./ squid-to-mysql»);
if ($HTTP_GET_VARS["month"]=="») {
$res = mysql_query(«SELECT LEFT(NOW(),7) as month»);
$rw=mysql_fetch_array($res);
$cur_month=$rw["month"];
} else $cur_month=$HTTP_GET_VARS["month"];
$res = mysql_query(«SELECT round(sum(bytes)/10000)/100 as trf,ip FROM squid WHERE (LEFT(time,7)=’$cur_month’) AND (trans<>’NONE/-’) GROUP BY ip ORDER BY LENGTH(ip),ip;»);
while ($rw=mysql_fetch_array($res)) {
if ($ipv4 == $rw["ip"]) $color=» bgcolor=’#FFDDDD’»;
else $color=»;
$table.=»
и т.д.
я не силен в php, проблема в том что не отрабатывается 1 скрипт при вызове статистики, тоесть если сделать sh /etc/squid/squid-to-mysql а потом просмотреть статистику она будет актуальной, а если просто просматривать http://localhost/index.php она не актуальна, проблема где то в районе system(»./ squid-to-mysql»); я уже пробовал и system(«./etc/squid/squid-to-mysql»); и system(«sh /etc/squid/squid-to-mysql»); подскажите плиз.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Не вижу корректного вызова shell-скрипта.
Например:
(запускать с правами root’а :) ).
-- это жуткий бред.
Автор, видимо, имел в виду
Что актуально для случая нахождения в каталоге с этим скриптом во время исполнения и соответствующих прав у скрипта (+x для исполняющего его пользователя).
Пробовать лучше тогда уж так:
(Без точки в начале!)
И проверять права на исполнение этого файла.
И логи apache/php смотреть на возникающие проблемы…
Почитай внимательно ман на php’шный system. Там запросто могут быть какие-нибудь опции из php.ini, которые влияют на его работу. На php пишет каждый кому не лень, и использовать функцию system безопасно далеко не у каждого из них получается.
ага, именно это и имелось в виду.
Спасибо Шурупу, именно без точки отработало, по совету rgo пошел ушел ман :)