Freesco, NND, CDN, EOS

http://www.freesco.pl
Dzisiaj jest sobota, 16 sierpnia 2025, 00:39

Strefa czasowa UTC+2godz.




Nowy temat Odpowiedz w temacie  [ Posty: 27 ]  Przejdź na stronę Poprzednia  1, 2
Autor Wiadomość
 Tytuł:
Post: wtorek, 11 lutego 2003, 16:59 
Offline
MODERATOR

Rejestracja: środa, 10 lipca 2002, 22:51
Posty: 143
Lokalizacja: Zielona Góra
Pele pisze:
Co minutę wywala błąd
status_check 8: Syntax error: "done" unexpected (expecting "fi")

To sprawdź dokładnie czy oby poprawnie przepisałeś.
Jeśli jest warunek "if", to musi się kończyć komendą "fi".


Na górę
 Wyświetl profil  
 
Post: wtorek, 11 lutego 2003, 18:39 
Offline
Użytkownik

Rejestracja: czwartek, 25 lipca 2002, 23:35
Posty: 172
grep "^" /mnt/router/etc/hosts | while read ip name ; do

i=$( /mnt/router/packages/arp/arp $ip | grep ether)
if [ -n "`echo $i`" ] ; then

cp /mnt/router/www/status/on/$name.jpg /mnt/router/www/status/$name.jpg
else

cp /mnt/router/www/status/off/$name.jpg /mnt/router/www/status/$name.jpg

fi

done


Mam przepisane dokładnie tak sprawdzałem nie ma żadnej literówki.
I nadal wywala
status_check: 8 Syntax error and of file unexpected (expecting "done")

Proszę o jakieś sugestie. Bo już nie mam pojęcia co jest nie tak.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: wtorek, 11 lutego 2003, 19:31 
Zbierając wszystko razem...

1. Sprawdzenie statusu użytkowników ("status_check"):

: [/] [] ()
#status_check
#!/bin/sh

# Sprawdzenie wpisow w tablicy ARP

grep "^" /mnt/router/etc/hosts | while read ip name ; do
        i=$( /mnt/router/packages/arp $ip | grep ether)
        if [ -n "`echo $i`" ] ; then
            # sa wpisy w tablicy ARP
            cp /mnt/router/www/status/on/$name.jpg /mnt/router/www/status/
            else
            # brak wpisow w tablicy ARP
            cp /mnt/router/www/status/off/$name.jpg /mnt/router/www/status/

        fi
done


Pakiet arp nie jest wykorzystany do "pilnowania" numeru IP i adresu MAC karty sieciowej dlatego wyrzuciłem jego uruchamianie wraz ze startem systemu (skasowałem plik "rc_arp").

2. Plik "hosts" (może być inna nazwa) dla potrzeb skryptu zawierający IP i nazwe komputera np.
: [/] [] ()
10.1.1.2 admin
10.1.1.3 piotr
10.1.1.4 beata
10.1.1.5 robert
10.1.1.6 roman


3. w katalogach "/mnt/router/www/status/on" i "/mnt/router/www/status/off" pliki z odpowiednią grafiką włączonego i wyłączonego komputera.

admin.jpg
piotr.jpg
beata.jpg
robert.jpg
roman.jpg

4. Uruchamianie skryptu co minute (w pliku "atd")

: [/] [] ()
# atd
while :; do
        sleep 60 2>/dev/null; C=`/bin/date +%H%M`
        /mnt/router/etc/status_check      #uruchamianie co minute

        if [ $C = 0000 ]; then
            /mnt/router/packages/squid/bin/squid -k rotate # uruchamiane o godz 0:00
        fi
done


a "atd" oczywiście musi być odpalone np w "rc_user":
: [/] [] ()
/mnt/router/etc/atd &


5. i w katalogu "/mnt/router/www/status" otrzymamy pliki gotowe do wyświetlenia na stronie :D

mam nadzieje, że to rozwiewa wszelkie wątpliwości


Na górę
  
 
 Tytuł:
Post: wtorek, 11 lutego 2003, 23:09 
redmateo prosił mnie żebym napisał jak ja zrobiłem to u siebie, więc piszę. U mnie jest trochę inaczej niż u was. Od razu zaznaczam że autorem tego pomysłu jest młody z serwisu http://www.ask-mechtalnet.prv.pl

Zacznę od ATD
U mnie wygląda tak:
: [/] [] ()
#!/bin/sh
#
# This is a rustic "at" daemon (a:\router\etc\atd)
#
# In this example at 09:00 atd executes 'control unblock' command
# and at 18:15 atd executes 'control block'
#
# Just change times and commands for your needs
# and start atd from rc_user with command 'fork atd'

G=0;
E=2
while :; do
sleep 60 2>/dev/null;
G=`expr $G + 1`
if [ $G = $E ]; then
G=0;
/mnt/router/rc/rc_status
fi


Dalej jest plik /mnt/router/rc/rc_status który dość łopatologiczną metodą (bałwan jestem ping) wykrywa obecność użytkowników w sieci:
: [/] [] ()
#!/bin/sh
#
# Bring up/down network(s)

#. /etc/system.cfg
#. /etc/live.cfg
#. /etc/chat.pwd

#uzytkownik_nr_1
D=`/bin/date +%S`;
ping -s 1 -c 1 -t 1 -i 1 192.168.0.2;
E=`/bin/date +%S`
if [ $E -lt $D ]; then
  E=`expr $E + 60`
fi
F=`expr $E - $D`
if [ $F -lt 5 ]; then
cp /mnt/router/www/status_p/02.txt /mnt/router/www/tmp/;
else
rm /mnt/router/www/tmp/02.txt;
fi

#uzytkownik_nr_2
D=`/bin/date +%S`;
ping -s 1 -c 1 -t 1 -i 1 192.168.0.3;
E=`/bin/date +%S`
if [ $E -lt $D ]; then
  E=`expr $E + 60`
fi
F=`expr $E - $D`
if [ $F -lt 5 ]; then
cp /mnt/router/www/status_p/03.txt /mnt/router/www/tmp/;
else
rm /mnt/router/www/tmp/03.txt;
fi

#uzytkownik_nr_3
D=`/bin/date +%S`;
ping -s 1 -c 1 -t 1 -i 1 192.168.0.4;
E=`/bin/date +%S`
if [ $E -lt $D ]; then
  E=`expr $E + 60`
fi
F=`expr $E - $D`
if [ $F -lt 5 ]; then
cp /mnt/router/www/status_p/04.txt /mnt/router/www/tmp/;
else
rm /mnt/router/www/tmp/04.txt;
fi

itd. aż do wyczekpania sprawdzanych numerów IP.
W katalogu /mnt/router/www/status_p/ muszą znajdować się wszystkie pliki tekstowe(u mnie od 01.txt do 12.txt bo tylu mam userów).

Teraz pozostaje tylko wyświetlanie tego na www czyli kawałek pliku index.php który znajduje się w katalogu głównym serwera www:
: [/] [] ()
Użytkownik 192.168.0.2 <?
if(file_exists("tmp/02.txt"))
echo("on");
else
echo("off");
?><BR>
Użytkownik 192.168.0.3 <?
if(file_exists("tmp/03.txt"))
echo("on");
else
echo("off");
?><BR>
Użytkownik 192.168.0.4 <?
if(file_exists("tmp/03.txt"))
echo("on");
else
echo("off");
?><BR>


Mateo pytzał jeszcze jak zrobić podliczenie ilu jest userów w tej chwili. Ja zrobiłem to znów łopatologicznie:
: [/] [] ()
<?
$a=0;
if(file_exists("tmp/02.txt"))
$b=$a+1;
else
$b=$a;
if(file_exists("tmp/03.txt"))
$c=$b+1;
else
$c=$b;
if(file_exists("tmp/04.txt"))
$d=$c+1;
else
$d=$c;
if(file_exists("tmp/05.txt"))
$e=$d+1;
else
$e=$d;
if(file_exists("tmp/06.txt"))
$f=$e+1;
else
$f=$e;
if(file_exists("tmp/07.txt"))
$g=$f+1;
else
$g=$f;
if(file_exists("tmp/08.txt"))
$h=$g+1;
else
$h=$g;
if(file_exists("tmp/09.txt"))
$i=$h+1;
else
$i=$h;
if(file_exists("tmp/10.txt"))
$j=$i+1;
else
$j=$i;
if(file_exists("tmp/11.txt"))
$z=$j+1;
else
$z=$j;
if(file_exists("tmp/12.txt"))
$h=$z+1;
else
$h=$z;

if($h==0){
echo "nie są uruchomione żadne komputery";
} else if($h==1){
echo "uruchomiony jest <b>1</b> komputer";
} else if($h==2){
echo "uruchomione są <b>2</b> komputery";
} else if($h==3){
echo "uruchomione są <b>3</b> komputery";
} else if($h==4){
echo "uruchomione są <b>4</b> komputery";
} else if($h==5){
echo "uruchomionych jest <b>5</b> komputerów";
} else if($h==6){
echo "uruchomionych jest <b>6</b> komputerów";
} else if($h==7){
echo "uruchomionych jest <b>7</b> komputerów";
} else if($h==8){
echo "uruchomionych jest <b>8</b> komputerów";
} else if($h==9){
echo "uruchomionych jest <b>9</b> komputerów";
} else if($h==10){
echo "uruchomionych jest <b>10</b> komputerów";
}  else
echo "<b>=błąd=</b>";
?>


Pozostaje jeszcze tylko dopasowanie wyglądu tego wszystkiego do designu strony ale jeśli ktoś chce bałwan jestem z grafik to polecam żeby były to tylko dwa pliki (o nazwach np. on.jpg i off.jpg) bo to przyśpiesza ładowanie statusu. Ja mam tak u siebie. Zapraszam na http://mlask.one.pl ja mam tylko dwie graficzki a efekt jest naprawdę fajny.

Pozdrawiam:
Mariusz Adam Górski


Na górę
  
 
 Tytuł: podziel się
Post: wtorek, 11 lutego 2003, 23:14 
zachęcam do opisania sposobu na crona w tym temacie

zadzialalo wg przepisu walko - gracias !!!

przepis AnNazol'a dot. statusu serwera hmm również.
nie spoczne jednak dopóki nie znaje sposobu, by na ogólnodostepnej stronie www wyswietlić dokładny czas restaru serwera ...
cobym wiedział np.: w pracy, lub na wczasach co sie dzieje ... :)
(bez konieczności logowania sie na serwer i grzebania w logach)


Na górę
  
 
 Tytuł:
Post: czwartek, 13 lutego 2003, 12:24 
Offline
MODERATOR

Rejestracja: czwartek, 11 lipca 2002, 09:39
Posty: 822
Lokalizacja: Bytom
Nie za bardzo rozumiem, na czym polega problem. Wystarczy co pewien czas wywalić do pliku efekt działania skryptu uptime.
Można też przy starcie utworzyć plik z datą i czasem powstania serwera i to podawać na WWW lub obliczać sobie jak ktoś lubi, uptime właśnie tak robi.

_________________
Zawsze znajdzie się ktoś, kto nie wie, że tego się nie da zrobić - I to zrobi :!:

Obrazek Kipa
http://www.FreeSCO.w.pl


Na górę
 Wyświetl profil  
 
Post: czwartek, 13 lutego 2003, 17:16 
Offline
MODERATOR

Rejestracja: środa, 10 lipca 2002, 22:51
Posty: 143
Lokalizacja: Zielona Góra
mateo_real pisze:
nie spoczne jednak dopóki nie znaje sposobu, by na ogólnodostepnej stronie www wyswietlić dokładny czas restaru serwera ...

A spróbuj:
: [/] [] ()
<?
$plik = fopen('/proc/uptime', 'r');
$dane = split(' ', fgets($plik, 4096));
fclose($plik);
$licznik = trim($dane[0]);
$minuty = $licznik / 60;
$godziny  = $minuty / 60;
$dni   = floor($dni / 24);
$godziny  = floor($godziny - ($dni * 24));
$minuty = floor($minuty - ($dni * 60 * 24) - ($godziny * 60));
if ($dni != 0) {
    $wynik = "$dni " . "dni" . " ";
}
if ($godziny != 0) {
    $wynik .= "$godziny " . "godzin" . " ";
}
$wynik .= "$minuty " . "minut";
echo "Serwer działa już $wynik";
?>

U mnie działa wyśmienicie. Zaznaczam, że nie jest to zupełnie mój pomysł a tylko efekt wykorzystania przerobionej funkcji z phpSysInfo


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

Strefa czasowa UTC+2godz.


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 18 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