Freesco, NND, CDN, EOS

http://www.freesco.pl
Dzisiaj jest poniedziałek, 29 kwietnia 2024, 19:09

Strefa czasowa UTC+2godz.




Nowy temat Odpowiedz w temacie  [ Posty: 103 ]  Przejdź na stronę Poprzednia  1, 2, 3, 4, 5, 6  Następna
Autor Wiadomość
 Tytuł:
Post: wtorek, 18 kwietnia 2006, 21:36 
Offline
Użytkownik

Rejestracja: sobota, 14 maja 2005, 15:07
Posty: 3177
Lokalizacja: Busko-Zdrój
ale ja nie chce miec statystyk nice co 15 czy 30s

chce sobie zrobic tylko wowczas kiedy ich potrzebuje i odswiezyc kilka razy w odstepie 5-6s.
i tak kilka razy dziennie a nie caly czas.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: środa, 19 kwietnia 2006, 11:00 
Offline

Rejestracja: czwartek, 6 kwietnia 2006, 23:08
Posty: 30
Dobra :P

Więc mam rozwiązanie (troche mi to zajęło, ale....) problemu
jak odpalic niceshapera przez WWW z uruchomionym APACHE + PHP jako 'nobody'.

PHP działa w trybie 'SAFE_MODE' więc było trudniej.

1. tworzymy katalog dla komend, tóre ma wykonywać PHP i nadajemy prawa dostepu.
: [/] [] ()
mkdir www.cmd
chown nobody:nobody www.cmd


2. Linkujemy tam dwa pliki, które nasz skrypt ma wykonywać:

: [/] [] ()
ln -s /usr/bin/niceshaper
ln -s /usr/bin/sudo


3. W pliku /etc/sudoers w sekcji: user privilege dopisujemy:
: [/] [] ()
#user privilege specification
nobody ALL = (root) NOPASSWD: /usr/bin/niceshaper, /usr/bin/sudo


4. Teraz w PHP.INI wskazujemy scieżkę do tego katalogu.
Ponieważ php jest w safe_mode, więc tylko programy z tej scieżki będą wykonywane.
: [/] [] ()
sefe_mode_exec_dir=/nasza/ścieżka/do/katalogu/www.cmd

W moim przypadku to:
: [/] [] ()
safe_mode_exec_dir=/var/www.cmd


5. Wyłączamy tworzenie pliku statystyk przez niceshapera w configu:
: [/] [] ()
stats unit kbit #dump 5c file /home/html/stats/nsstats.txt


6. Teraz piszemy sobie skrypcik w php np.: nice.php w katalogu głównym stron www:
: [/] [] ()
<?php
  // otwieranie strumienia
  $pp=popen('sudo niceshaper stats','r');
  $dane=fread($pp,2048);
  pclose($pp);

  // zapis danych ze strumienia do pliku (jeżeli ktoś potrzebuje)
  $fp = fopen("./stats/nsstats.txt","w");
  fwrite($fp, $dane);
  fclose($fp);

  // odczyt statystyk z pliku
  // tutaj można dodać dowolny skrypt obrabiający dane

  // teraz jest tylko wypisanie ich na stronie
  $plik=file("./stats/nsstats.txt");

  foreach($plik as $linia) {
      echo($linia);
      echo("<br>");
  }

?>



7. Restartujemy APACHE, NICESHAPER

8. teraz tylko w przeglądarce wpisujemy www://adres.naszego.serwera/nice.php

i obserwujemy wyniki :D :D :D

Działa to zgodnie z tym co chciał -MW-,
statystyki są generowane na żądanie w momencie wywołania skryptu.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: środa, 19 kwietnia 2006, 11:47 
Offline
Użytkownik

Rejestracja: piątek, 10 marca 2006, 21:26
Posty: 245
Lokalizacja: Knurów
Ubralem nieco ten sposob wyswietlania statystyk i wyszlo takie cos:

http://groch.dyndns.org/stats.php
(tabelka na srodku)

Skrypt tak oto wyglada:
: [/] [] ()
<?php
$max_u=5; // pogrubianie powyzej tej wartosci wysylania
$max_d=50; // pogrubianie powyzej tej wartosci pobierania

$dane='';
$pp=popen( 'sudo niceshaper stats','r' );
while ( !feof ( $pp ) ) {
  $dane.=fgets($pp);
}
pclose($pp);

// zapis danych ze strumienia do pliku (jeżeli ktoś potrzebuje)
$fp = fopen("nicestats/nsstats.txt",'w');
fwrite($fp, $dane);
fclose($fp);

$chunksize = 1*(1024*1024); // how many bytes per chunk
$handle = fopen("nicestats/nsstats.txt", 'rb');
if ($handle === false) {
    return false;
}

echo '<table align="center" width="60%" border="2" cellspacing="2" cellpadding="2" style="border-collapse:collapse">
      <tr class="t01" align="center" style="padding-bottom: 10px;"><td>&nbsp;</td>
      <td><strong>Komputer</strong></td>
      <td align="center"><strong>Download</strong></td>
      <td align="center"><strong>Upload</strong></td></tr>';
while (!feof($handle)) {
    $buffer = fread($handle, $chunksize);
    $buffer3=explode("\n", $buffer);
$zlicz=1;
$down=0;
$up=0;
    for ($i=2;$i<count($buffer3);$i++) {
        $buffer3[$i] = preg_replace('/\s+/', ' ', $buffer3[$i]);
        $buffer2=explode(" ", $buffer3[$i]);
        $down_k=substr($buffer2[4],0,-4);
        $up_k=substr($buffer2[9],0,-4);
        if ($buffer2[0] !='') {
            echo '<tr class="t01"><td align="right">'.($zlicz).'.</td>
            <td style="padding-left: 10px;">'.$buffer2[0].'</td>';
            if ($down_k >= $max_d) {
            echo '<td align="right" style="padding-right: 30px;"><b>'.$down_k.'</b> kB/s</td>';
            }
            else {
            echo '<td align="right" style="padding-right: 30px;">'.$down_k.' kB/s</td>';
            }
            if ($up_k >= $max_u) {
            echo '<td align="right" style="padding-right:30px;"><b>'.$up_k.'</b> kB/s</td>';
            }
            else {
            echo '<td align="right" style="padding-right:30px;">'.$up_k.' kB/s</td>';
            }
            echo '</tr>';
            $down=$down+substr($buffer2[4],0,-4);
            $up=$up+substr($buffer2[9],0,-4);
            $zlicz=$zlicz+1;
        }
    }
echo '<tr class="t01"><td>&nbsp;</td>
    <td align="center"><strong>Razem</strong></td>
    <td align="right" style="padding-right: 30px;"><strong>'.$down;

if (substr($down,-2,1)!='.') echo '.0';

echo '</strong> kB/s</td><td align="right" style="padding-right:
30px;"><strong>'.$up;

if (substr($up,-2,1)!='.') echo '.0';

echo '</strong> kB/s</td></tr></table>';
}
fclose($handle);

?>

Podziekowania dla kolegi munda :)

P.S.Mysle, ze generowanie statystyk na zadanie ma sens tylko
przy rzadko odwiedzanych stronach. Jakby nasz serwis mial srednio
kilka odwiedzin w ciagu minuty, to lepsza rozwiazanie to normalny
dump do pliku z niceshapero co kilka minut...

Pozdrawiam

_________________
Proszę samodzielnie usuwać nieistniejące linki w swoich sygnaturkach!!! /Administrator/


Ostatnio zmieniony środa, 19 kwietnia 2006, 12:15 przez Mr Groch, łącznie zmieniany 1 raz

Na górę
 Wyświetl profil  
 
 Tytuł:
Post: środa, 19 kwietnia 2006, 12:06 
Offline

Rejestracja: czwartek, 6 kwietnia 2006, 23:08
Posty: 30
OK,

poprawiłem pewien mały szczegół, który mógłby utrudnić niektórym życie:

było:
: [/] [] ()
// otwieranie strumienia
  $pp=popen('sudo niceshaper stats','r');
  $dane=fread($pp,2048);
  pclose($pp);


powinno być:
: [/] [] ()
// otwieranie strumienia
  $dane='';
  $pp=popen( 'sudo niceshaper stats','r' );
  while ( !feof ( $pp ) ) {
    $dane.=fgets($pp);
  }
  pclose($pp);


wcześniej trzeba było przewidzieć wielkość wyniku sorry :oops:


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: środa, 19 kwietnia 2006, 12:13 
Offline

Rejestracja: czwartek, 6 kwietnia 2006, 23:08
Posty: 30
Mr Groch pisze:

P.S.Mysle, ze generowanie statystyk na zadanie ma sens tylko
przy rzadko odwiedzanych stronach. Jakby nasz serwis mial srednio
kilka odwiedzin w ciagu minuty, to lepsza rozwiazanie to normalny
dump do pliku z niceshapero co kilka minut...


Można dodać znacznik czasu w pliku ze statystykami i sprawdzac go zanim uruchomi się nice'a :)

Dla mnie ważniejsze było bezpiecznie uruchomić program z uprawnieniami root-a, tak aby Apache nie miał dostępu do wszystkich komend tylko do tych wybranych.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: środa, 19 kwietnia 2006, 13:03 
Offline

Rejestracja: czwartek, 6 kwietnia 2006, 23:08
Posty: 30
Mr Groch ma rację, że przy większej ilości odsłon generowanie statystyk
może obciążać za bardzo system, więc lekko zmodyfikowałem skrypt

Teraz można ustawić sobie minimalny czas po jakim może byc generowana statystyka.

W czasie dużego obciążenia oglądaczy statystyka generowana jest
co x sekund, poza tym czasem nice nie obciąża wogóle serwera statystykami.

Za pierwszym razem pewnie się wysypie, ale wystarczy odświeżyć i jest OK.

: [/] [] ()
<?php

$minTime = 5; //minimalny czas w sekundach
$currentTime = time();
$fileArray = file("./stats/nsstats.txt");
$lastSaved = $fileArray[0];
if ( $currentTime - $lastSaved > $minTime ) {
  $dane='';
  $pp=popen( 'sudo niceshaper stats','r' );
  while ( !feof ( $pp ) ) {
    $dane.=fgets($pp);
  }
  pclose($pp);

  // zapis danych ze strumienia do pliku (jeżeli ktoś potrzebuje)
  $fp = fopen("nicestats/nsstats.txt",'w');
  fwrite($fp, $currentTime.chr(10));
  fwrite($fp, $dane);
  fclose($fp);
}
?>


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: środa, 19 kwietnia 2006, 18:17 
Offline
Użytkownik

Rejestracja: sobota, 14 maja 2005, 15:07
Posty: 3177
Lokalizacja: Busko-Zdrój
no i jestem zmuszony zajac sie apache :) na routerze, czyli czeka mnie experyment na zywym organizmie i mase przerobek zwiazanych z juz istniejaca struktura.
ale zaniechanie uruchomienia apache na samym poczatku przy robieniu routera, a pozostanie przy standardowym thttpd bylo bledem, lub wersja nie rozwojowa?

caly czas problem z odpaleniem php, moze jest sposob aby dzialaly skrypty php pod thttpd ?


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: środa, 19 kwietnia 2006, 21:44 
Offline

Rejestracja: czwartek, 6 kwietnia 2006, 23:08
Posty: 30
Z tego co wyczytałem to jest coś takiego jak
thttpd-php port

ale są tam podstawy PHP, więc nie wszystko się uruchomi.
Drugim problemem jest szybkość wykonywania - podobno wolno....


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: środa, 19 kwietnia 2006, 22:09 
Offline

Rejestracja: czwartek, 6 kwietnia 2006, 23:08
Posty: 30
Jest jeszcze jedna metoda:

- skompiluj PHP jako CGI, a nie jako moduł.

Potem dodaj w konfigu thttpd aby obsługiwał pliki php
za pośrednictwem /cgi/php-cgi

Skrypty będą wykonywały się wolniej i będą bardziej narażone na ataki, ale....

Ze względów bezpieczeństwa nie stosuje się tego rozwiązania,
chociaż w takich konfiguracjach pracuje z innymi serwerami www
np.: tclhttpd czy suEXEC


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: środa, 19 kwietnia 2006, 22:46 
Offline
Użytkownik

Rejestracja: piątek, 10 marca 2006, 21:26
Posty: 245
Lokalizacja: Knurów
Tyllko po co tyle zachodu, jak mozna przeciez zainstalowac Apacha? :D

_________________
Proszę samodzielnie usuwać nieistniejące linki w swoich sygnaturkach!!! /Administrator/


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: środa, 19 kwietnia 2006, 23:06 
Offline

Rejestracja: czwartek, 6 kwietnia 2006, 23:08
Posty: 30
hmmmm....

sam czasem lubię wyważyć otwarte drzwi :D

a niektórzy sa rasistami i nie lubia czerwonych <joke>

mam nadzieję, że nikogo nie obraziłem ;)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: czwartek, 20 kwietnia 2006, 00:27 
Offline
Użytkownik

Rejestracja: sobota, 14 maja 2005, 15:07
Posty: 3177
Lokalizacja: Busko-Zdrój
jednak chyba pomysle o uruchomieniu na routerach apache zwlaszcza ze mam kompa do zabawy na ktorym sobie przygotuje wstepnie pliki configuracyjne i dogram wspolprace z innymi drobiazgami.

to co pisales wyzej przerazilo mnie i nie bardzo wiem o czym pisalec :)


p.s.
a moze zamiast kopiowac skrypt i wycinac tabulatory ktos udostepni orginal :)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 22 kwietnia 2006, 21:50 
Offline
Użytkownik

Rejestracja: sobota, 14 maja 2005, 15:07
Posty: 3177
Lokalizacja: Busko-Zdrój
skrypt sie uruchamia, na stronie widac tabelka ale pusta :)

jesli podam skad ma odczytac dane o statystykach to wszystko jest ok,
czyli wniosek ze po wykonaniu skryptu niz zapisywane sa zadne dane statystyk nice do pliku, lub nie uruchamia sie komenda niceshaper stats.
i nie bardzo wiem dlaczego?

ten fragment:
Cytuj:
<?php
$max_u=5; // pogrubianie powyzej tej wartosci wysylania
$max_d=50; // pogrubianie powyzej tej wartosci pobierania

$dane='';
$pp=popen( 'sudo niceshaper stats','r' );
while ( !feof ( $pp ) ) {
$dane.=fgets($pp);
}
pclose($pp);

$fp = fopen("txt",'w');
fwrite($fp, $dane);
fclose($fp);

$chunksize = 1*(1024*1024);
$handle = fopen("txt", 'rb');
if ($handle === false) {
return false;
}


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 22 kwietnia 2006, 22:20 
Offline
Użytkownik

Rejestracja: piątek, 10 marca 2006, 21:26
Posty: 245
Lokalizacja: Knurów
sprawdz, czy w pliku /etc/sudoers masz zdefiniowane, ze user nobody
moze wykonywac /usr/bin/niceshaper i sprawdz prawa dostepu
do katalogu gdzie ma by zapisany plik txt (zeby user nobody byl
wlascicielem, lub by wsyzscy mofgli zapisywac...)

_________________
Proszę samodzielnie usuwać nieistniejące linki w swoich sygnaturkach!!! /Administrator/


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 23 kwietnia 2006, 18:48 
Offline
Użytkownik

Rejestracja: sobota, 14 maja 2005, 15:07
Posty: 3177
Lokalizacja: Busko-Zdrój
i juz nie mam sily sie tym bawic, nie uruchamia sie komenda niceshaper stats, a w efekcie zapisany jest pusty plik i tenze jest odczytywany,
wynikiem na stronie jest pusta tabelka :(


a moze kolega ubralby tak pieknie jak nice wynik komendy

/usr/sbin/netstat-nat -n

uruchamianej rozniez ze strony www.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 23 kwietnia 2006, 18:59 
Offline
Użytkownik

Rejestracja: piątek, 10 marca 2006, 21:26
Posty: 245
Lokalizacja: Knurów
Sprawdz w logach co sie dzieje przy probie odpalenia
niceshaper stats - w auth i w logach apacha musi cos o tym byc...

A co do netstat-nat - n, mozna, czemu nie - ale wynikiem
dzialania moze byc czasem naprawde WIELKA tabelka...

_________________
Proszę samodzielnie usuwać nieistniejące linki w swoich sygnaturkach!!! /Administrator/


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 23 kwietnia 2006, 20:29 
Offline

Rejestracja: czwartek, 6 kwietnia 2006, 23:08
Posty: 30
-MW- Jeszcze jedną przyczyna może być PHP w trybie safe_mode.

Wtedy musisz zastosować się dokładnie do instrukcji, które podałem.
Czyli stworzenie specjalnego katalogu na komendy, link do niceshaper i modyfikacja php.ini.

Najprawdopodobniej jednak nie masz ustawionych odpowiednich praw do katalogu w którym chcesz zapisywać plik "txt".


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 23 kwietnia 2006, 21:33 
Offline
Użytkownik

Rejestracja: sobota, 14 maja 2005, 15:07
Posty: 3177
Lokalizacja: Busko-Zdrój
no wlasnie pruby odpalenie w/w skryptu nice spowodowala ze przestala dzialac tablica ogloszen, a wczesniej chodzila extra.
wniosek - nie moge poleceniem sudo uruchomic zadnych komend mimo iz przy tablicy nic nie grzebalem.
ponowna instalacja php i apache nic nie zmienila.
co moglem namieszac dodajac safe_mode ? i jak wrocic do poprzedniego stanu ?

z katalogami i komendami oraz przerobieniem skryptu nice juz prubowalem, ale w tej sytuacji nie bardzo wiem co moge wiecej zrobic ;)

Cytuj:
Sorry, sudo must be setuid root.,


Cytuj:
Najprawdopodobniej jednak nie masz ustawionych odpowiednich praw do katalogu w którym chcesz zapisywać plik "txt".


zbyt blyskotliwy nie jestem, ale zeby az tak ?
(sprawdzalem kilkanascie razy)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 24 kwietnia 2006, 00:17 
Offline
Użytkownik

Rejestracja: sobota, 14 maja 2005, 15:07
Posty: 3177
Lokalizacja: Busko-Zdrój
juz sobie poradzilem. dzieki za pomoc.

ten pieprzony wpis cos namieszal i po przeinstalowaniu sudo jest ok :)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 24 kwietnia 2006, 07:19 
Offline

Rejestracja: czwartek, 6 kwietnia 2006, 23:08
Posty: 30
nie, żebym wątpił w twoją błyskotliwość ;)

po prostu takie efekty opisałeś....

ciekaw jestem co wpisałeś do sudoers, że się wysypało.
Gdzieś na forum czytałem, że należy zostawić na końcu pustą linię,
czy to było błędem ??

Nie chciałbym, żeby kiedyś przestały mi chodzić skrypty bo coś dopiszę do sudoers :(


Na górę
 Wyświetl profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 103 ]  Przejdź na stronę Poprzednia  1, 2, 3, 4, 5, 6  Następna

Strefa czasowa UTC+2godz.


Kto jest online

Użytkownicy przeglądający to forum: Bing [Bot] i 72 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
cron
Technologię dostarcza phpBB® Forum Software © phpBB Group
Hosting: Compus-Net
RobertKonik.pl