Freesco, NND, CDN, EOS

http://www.freesco.pl
Dzisiaj jest czwartek, 28 marca 2024, 18:30

Strefa czasowa UTC+2godz.




Nowy temat Odpowiedz w temacie  [ Posty: 34 ]  Przejdź na stronę 1, 2  Następna
Autor Wiadomość
Post: sobota, 22 maja 2010, 05:36 
Offline
Użytkownik

Rejestracja: niedziela, 23 września 2007, 14:35
Posty: 477
Wyobraźmy sobie dom dziecka, salę komputerową, dzieci, które posiadają własne stanowiska, które niestety jednak nagminnie „zapominają” wyłączać komputery na noc oraz kadrę wychowawców, którzy równie nagminnie „zapominają” pilnować w tym zakresie dzieci (załóżmy, dla świętego spokoju, że są strasznie zajęci innymi ważniejszymi sprawami).

Pomyślałem sobie - dlaczego pracowni komputerowej nie ma pilnować sam serwer?

Niech codziennie o godzinie 23.00 cron odpali skrypt w bashu, który będzie pingował kolejno do wszystkich komputerów o adresach stanowisk dzieci (192.168.0.101…192.168.0.120). Jeśli któraś z maszyn odpowiada na pingi, to znaczy, że jest włączona. Jeśli jest włączona to:
a). zablokuj dla danego adresu IP dostęp do Internetu (przekieruj wszystkie porty na stronę informacyjną „Nie wyłączyłeś komputera, została ustanowiona blokadu na Internet do godziny 16.00”)
b). wyślij maila na alias przekierowujący na konta mailowe wszystkich wychowawców o treści: Jest godzina XX.YY dnia XX.YY.ZZZZ. Pod adresem IP …………. Stwierdzono włączony komputer. Na stanowisku włączono blokadę Internetu do godziny 16.00.
O godzinie 16.00 cron odpali skrypt odpowiadający za zdjęcie blokady Internetu z wszystkich komputerów.

Potrzebuję pomocy w napisaniu skryptu, konkretnie potrzebuję wiedzieć w jaki sposób:

a). Wysłać tylko kilka pingów
b). stwierdzić czy nadchodzą odpowiedzi na pingi
c). jak z poziomu konsoli wysłać maila ze zmienną treścią (w treści zmieniają się godzina, data i adres IP).

Reszta to raczej chyba pikuś (zwykłe operacje na iptables).


Idąc dalej (to już opcja na przyszłość) chciałbym, aby serwer pilnował porządku (kadra sprawdza się tu niestety z różnym skutkiem. Jak? Powiedzmy, że w sali funkcjonuje monitoring. Niestety obsługiwany przez stacjonarny rejestrator, obsługiwany tak naprawdę tylko przeze mnie, niestety bez dostępu zdalnego, a jestem tam nie częściej niż dwa razy w miesiącu. Tu wygodniejsza byłaby karta DVR – niestety z tego, co słyszałem, karty DVR nie mają ciekawego softu pod system Linux. Byłoby dobrze, gdyby serwer np. codziennie o godzinie 22.00 zrobił zrzut ze wszystkich kamer, i wysłał zdjęcia na maila do wiadomości wszystkich wychowawców – tak, aby nie było wątpliwości, kto jakiego dnia, w jakim stanie pozostawia salę komputerową. Ewentualnie można wykorzystać zamontowany na stałe aparat cyfrowy, tylko w jaki sposób sprawić, by serwer sam sobie pobrał z niego zdjęcia, i wysłał mailem (nic nie przychodzi mi do głowy, ale może ktoś coś słyszał?)

Z góry dziękuję za każdą pomoc dotyczącą realizacji zwłaszcza pierwszej części pomysłu.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 22 maja 2010, 10:39 
Offline
Użytkownik

Rejestracja: środa, 23 stycznia 2008, 17:32
Posty: 691
Lokalizacja: Pabianice
Jesli jest mozliwosc wyswietlenia informacji na monitorach w przegladarce
to znaczy, ze to sa linuxy z graficznym panelem ?
Pierwsza rzecz jaka sie od razu narzuca to instalacja na serwerze
nadrzednym skryptu powiadomien nie raz opisywanym na
tym forum. Czyli przypuscmy, ze ten panel informacyjny
ma dzialac na porcie 200. Dopisujesz do /etc/httpd/vhosts.conf :
: [/] [] ()
listen 200
<VirtualHost 192.168.0.1:200>
        ServerAdmin cyberduck@bluelan.pl
        DocumentRoot /home/httpd/html/blokada
        ServerName blokada.bluelan.eu
</VirtualHost>

Jak widzisz wszystko co wchodzi na port 200 jest kierowane na
folder domowy 'blokada' .
Teraz do etc/iptables/firewall
dopisujesz :
: [/] [] ()
    #Blokada zalegajacych
for IP in `cat /home/httpd/html/za_blokowani | cut -d "#" -f1`;do
    $i -t nat -A PREROUTING -p tcp -s $IP -d ! 192.168.0.1 -j REDIRECT --to-port 200
    $i -A FORWARD -p udp -s $IP -m ipp2p --ipp2p -j DROP
    $i -A PREROUTING -t nat -s $IP -p udp --dport 300:65535 -j DROP
done

Zaraz przed :
: [/] [] ()
# zaplotkuj jesli nie chcesz udostepniac serwisu  http do inetu
    if [ "$WWW" = "1" ]; then
        $i -A INPUT -p tcp -i $EXTIF --dport 80 -j ACCEPT
    fi

    # zaplotkuj jesli nie chcesz udostepniac serwisu  https do inetu
    if [ "$HTTPS" = "1" ]; then
        $i -A INPUT -p tcp -i $EXTIF --dport 443 -j ACCEPT
    fi

Zwroc uwage, ze w tym kawalku dopisywanym jest umieszczona sciezka
do pliku w ktorym wystarczy dopisac adresy IP tych ktorzy maja
miec nalozona blokade .
: [/] [] ()
`cat /home/httpd/html/za_blokowani

Jesli w tym pliku dodasz adres IP komputera, ktory chcesz zablokowac
tozostana wykonane wszystkie te regulki dla tego IP i nastapi
przekierowanie na strone informacyjna.

W folderze /home/httpd/html/blokada umieszczasz strone informacyjna.

Jak sie domyslasz reszta rozwiazan jest juz coraz prostsza do wykonania.
W linuxie sobie nie poradze i dlatego pozostawiam reszte rozwiazan
bardziej doswiadczonym. Ja bym sobie z tym problemem spokojnie
poradzil przy pomocy PHP , ale ludziska tutaj by mnie zakrzyczeli ...
A i jeszcze jedna wazna rzecz. Po wprowadzeniu adresu IP do pliku
za_blokowani nalezy przeladowac iptables : /etc/rc.d/iptables restart .

Pod NND i pod warunkiem, ze masz statndardowy firewall wszystko
pieknie dziala.

O godzinie 16 odpalasz z cron :
: [/] [] ()
echo "" > /home/httpd/html/za_blokowani
/etc/rc.d/iptables restart

i plik sie wyczysci. Teraz ktos jeszcze musi dopisac w linux
skrypt, ktory spinguje zakres adresow IP i jesli wykryje sygnal powrotny
to dopisze ten aders do pliku za_blokowani.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 22 maja 2010, 12:07 
Offline
Użytkownik

Rejestracja: niedziela, 23 września 2007, 14:35
Posty: 477
CyberDuck pisze:
Teraz ktos jeszcze musi dopisac w linux
skrypt, ktory spinguje zakres adresow IP i jesli wykryje sygnal powrotny
to dopisze ten aders do pliku za_blokowani.

No właśnie to jest dla mnie najbardziej zagadkowa kwestia.

Może zamiast polecenia ping użyć fping. Przykładowo fping 192.168.0.11 do "żywej" maszyny zwróci natychmiast 192.168.0.11 is alive. Jeśli maszyna jest wyłączona, wówczas po kilku sekundach napłyną informacje, przykładowo:

ICMP Host Unreachable from 192.168.0.1 for ICMP Echo sent to 192.168.0.10
ICMP Host Unreachable from 192.168.0.1 for ICMP Echo sent to 192.168.0.10
ICMP Host Unreachable from 192.168.0.1 for ICMP Echo sent to 192.168.0.10
192.168.0.10 is unreachable.

Może zrobić to jakoś w ten sposób, że po wydaniu fping skrypt przez półsekundy oczekuje na odpowiedź, i jeśli znajdzie wyraz alive podejmuje działanie A, a jeśli w ciąku tej pół sekundy nie otrzyma odpowiedzi, wykonuje zadanie B. No właśnie jak nasłuchiwać takiej odpowiedzi?

Później plik za_blokowani można wykorzystać do przygotowania zbiorczej treści maila do wychowawców, by byli świadomi czego nie dopilnowali.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 22 maja 2010, 13:36 
Offline
Użytkownik

Rejestracja: środa, 23 stycznia 2008, 17:32
Posty: 691
Lokalizacja: Pabianice
Znaczy probowalem z pingiem i grep, ale ping jest zawolny.
Szukam jakiegos szybszego rozwiazania, ktore da natychmiast
jakis efekt. Mozna w petli :

: [/] [] ()
#!/bin/bash

for((a=129;a<210;a++))
do
echo `ping -c 1 192.168.0.$a` > /home/httpd/html/ping_text.txt
echo $a+`grep -o "ttl=" /home/httpd/html/ping_text.txt`

done

sprawdzac pingi i zapisywac rezultat do pliku, po czym sprawdzac
przy pomocy grep czy jest to co nas interesuje.
Dopisac do tego warunek czy jesli jest to co nas interesuje to wpisac
do pliku za_blokowani IP komputera i na koniec zrobic restart iptables.
Teraz jednak nie mam za duzo czasu. Wroce do tego wieczorkiem.
Poszukam czegos i moze cos na swoim poziomie stworze :D
W php nie mialbym tym zadnego problemu ...

Szukam jak sprawdzic tabele DHCP np zeby moznabylo z niej przeczytac
ktore komputery sa aktualnie wlaczone.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 22 maja 2010, 13:48 
Offline
Użytkownik

Rejestracja: niedziela, 23 września 2007, 14:35
Posty: 477
CyberDuck pisze:
Szukam jak sprawdzic tabele DHCP np zeby moznabylo z niej przeczytac
ktore komputery sa aktualnie wlaczone.

Można to zrobić wydając polecenie arp z konsoli. Niestety miałem okazję przekonać się o tym, że dane zwracane przez arp nie są do końca prawdziwe, często są nieaktualne (bądź z jakiegoś innego powodu często nie pokrywają się z rzeczywistością - są niepełne). Jeśli skrypt ma działać pewnie i niezawodnie musiałby dokonywać rzeczywistego sprawdzenia w danej chwili, coś właśnie pingo podobnego.

PS. Patrzyłeś jak działa fping? Też uważasz, że za wolny? Daje konkretną (i co najważniejsze - skończoną) odpowiedź.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 22 maja 2010, 15:39 
Offline
Użytkownik

Rejestracja: środa, 23 stycznia 2008, 17:32
Posty: 691
Lokalizacja: Pabianice
No i oczywiscie tez patrzylem arp i wlasnie z tego samego powodu
szukam na to jakiejs sprawdzonej metody. U mnie nie bylo fping, ale po
wydaniu polecenia pacman -S fping pakiet sie znalazl i zainstalowal poprawnie.
Zobaczymy w jakim czasie sie to wykona. Jak bede mial jakis w miare
gotowy pomysl to go zaprezentuje.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 22 maja 2010, 15:55 
Offline
PGF

Rejestracja: piątek, 25 lutego 2005, 18:22
Posty: 1430
Lokalizacja: Elbląg
arpscan - jest paczka

_________________
F33/F07,F11,F13,F17
ObrazekObrazek


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 22 maja 2010, 16:52 
Offline
Użytkownik

Rejestracja: niedziela, 23 września 2007, 14:35
Posty: 477
Kolega podpowiedział przykładowe rozwiązanie sprawdzenia hostów za pomocą fping i zapis rezultatu do plików:

: [/] [] ()
#!/bin/bash -x

#adresy IP ktore beda sprawdzane
HOSTY="192.168.0.2 192.168.0.2 192.168.0.3 192.168.0.4 192.168.0.5 192.168.0.6"
#gdzie zostanie zapisany wynik polozenie pliku
WYNIK1="/home/ja/wylaczone"
WYNIK2="/home/ja/wlaczone"
#usuwanie poprzednich plikow i wpisow gdyz skrypt dopisuje z testu kolejne pozycje do pliku
rm $WYNIK1
rm $WYNIK2
#ustawienie formatu daty do pliku
DATE=`date "+%x %X"`
# dodatkowe parametry do testu polecam -t 2000 to jest odstep 2000ms pomiedzy sprawdzeniem pinga dla pewnosci
# wiecej w manualu fpinga
PARAMETRY="-t 2000"

for i in $HOSTY
    do
    fping $i $PARAMETRY
    if [ $? -gt 0 ]
    then
    echo "$DATE komputer $i wylaczony" >> $WYNIK1
    else
    echo "$DATE komputer $i jest wlaczony" >> $WYNIK2
    fi
done


Zajmuje to trochę czasu, ale działa skutecznie.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 22 maja 2010, 17:23 
Offline
Użytkownik

Rejestracja: środa, 23 stycznia 2008, 17:32
Posty: 691
Lokalizacja: Pabianice
No ja juz wykombinowalem wlasnie cos innego :D
I dziala szybko. Przeszukuje caly zakres sieci ... w 3 sek.

: [/] [] ()
echo "" > /home/httpd/html/ping_text.txt
/usr/bin/arpscan -sae eth1 192.168.0.0/24 > /home/httpd/html/ping_text.txt
sed 's/^.\{18\}//' /home/httpd/html/ping_text.txt

Owocuje to wypisaniem aktywnych IP w sieci.
Mozna poprostu wpisac te liste do pliku za_blokowani i na
koniec zrestartowac Iptables ...
Czyli wynik bylby taki :
: [/] [] ()
#!/bin/bash

echo "" > /home/httpd/html/ping_text.txt
/usr/bin/arpscan -sae eth1 192.168.0.0/24 > /home/httpd/html/ping_text.txt
sed 's/^.\{18\}//' /home/httpd/html/ping_text.txt > /home/httpd/html/za_blokowani
/etc/rc.d/iptables restart

Wystarczy to podpiac pod cron i juz.
A dziala to tak ze arpscan podaje wyniki w postaci macadresu i adresu IP
komputerow ktore sa aktualnie podlaczone do sieci. Wynik jest
wysylany do pliku /home/httpd/html/ping_text.txt .
Komenda sed wycinam pierwsze 18 znakow z kazdej linijki i pozostaja
same adresy IP . Wynik zapisujemy juz do pliku za_blokowani.
Na koniec jest wykonany restart iptables zeby przeladowac firewall.

Zeby wlaczyc wszystkim na nowo z cron internet :
: [/] [] ()
echo "" > /home/httpd/html/za_blokowani
/etc/rc.d/iptables restart


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 22 maja 2010, 17:44 
Offline
Użytkownik

Rejestracja: niedziela, 23 września 2007, 14:35
Posty: 477
CyberDuck pisze:
Wynik zapisujemy juz do pliku za_blokowani.
Na koniec jest wykonany restart iptables zeby przeladowac firewall.

No w moim przypadku trzeba to będzie jeszcze przebrać (zastosować dla IP z puli 192.168.0.101...192.168.0.120), czyli zastosować do komputerów dzieci. W przeciwnym wypadku kadra w tym dyrektor placówki też dostaną bana ;-)

Sposób z fpingiem też nie jest zły. Nie trzeba potem przebierać IP na końcu, wszystko jest po kolei no i chyba jednak jest to sposób pewniejszy, bardziej "siłowy", masz pewność, że żadne IP się nie zgubi po drodze. Poza tym, komu się spieszy ;-)


Ostatnio zmieniony sobota, 22 maja 2010, 17:48 przez mes mariusz, łącznie zmieniany 1 raz

Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 22 maja 2010, 17:47 
Offline
Użytkownik

Rejestracja: środa, 23 stycznia 2008, 17:32
Posty: 691
Lokalizacja: Pabianice
arpscan dziala tez pewnie i !! szybciej.
Sprawdzilem. Po odlaczeniu czesci podsieci lista tych komputerow
natychmiast zniknela. Po podlaczeniu pojawila sie ponownie.

To zamiast tego :
: [/] [] ()
/usr/bin/arpscan -sae eth1 192.168.0.0/24 > /home/httpd/html/ping_text.txt

Wpisz sobie :
: [/] [] ()
/usr/bin/arpscan -sae eth1 192.168.0.101-192.168.0.120 > /home/httpd/html/ping_text.txt


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 23 maja 2010, 13:53 
Offline
Użytkownik

Rejestracja: niedziela, 23 września 2007, 14:35
Posty: 477
Skrypty niby proste a w praktyce rewelacyjne. Odwalają kawałek dobrej roboty :-)

Przyszła mi jednak do głowy jeszcze jedna funkcjonalność, oprócz codziennego stworzenia listy niewyłączonych komputerów i rozesłania jej drogą mailową do wychowawców, czasowego zablokowania dostępu do Internetu na tych maszynach (wyświetla się tylko "list serwera do wychowanka" i link do regulaminu) z możliwością podglądu listy aktualnie zablokowanych online postaram się zrobić jeszcze tak, aby:

W przypadku wykrycia, że jakikolwiek komputer na sali komputerowej jest włączony, również na komputerze w pokoju wychowawców cały ruch przekierowany jest na kolejnego VirtualHosta wyświetlającego stronę z komunikatem: "W sali komputerowej pozostają włączone następujące komputery: .....". Oraz button "Sprawdź ponownie".

Chciałbym jakoś powiązać stronę w phpie, tak aby naciśnięcie buttona spowodowało ponowne wykonanie skryptu sprawdzającego w shellu. Pomożesz CyberDuck? :-)

W ten sposób wychowawca, który nie dopilnował porządku w sali komputerowej będzie zmuszony do samodzielnego wyłączenia maszyn, w przeciwnym wypadku nie uzyska dostępu do Internetu.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 23 maja 2010, 18:57 
Offline
Użytkownik

Rejestracja: środa, 23 stycznia 2008, 17:32
Posty: 691
Lokalizacja: Pabianice
Ja swojego czasu zaczolem pisac panel administracyjny pod NND
z prostymi opcjami, ktore mnie wlasciwie tylko powinny interesowac, ale
znalazl sie tutaj dosc zaawansowany panel oplat, wysylania
wiadomosci, czy tez frwarding portow, wykonanie kopii zapasowej
i inne, ale przyszla mi do glowy wlasnie taka opcja o ktorej piszesz :wink:
Dlatego juz poczynilem pierwsze kroki rano i uzyskuje juz jakis
tam wynik :
: [/] [] ()
$sciezka = "/home/httpd/html/admin/ping_text.txt";
$plik = fopen($sciezka, "r");
$zawartoscc = fread($plik, filesize("/home/httpd/html/admin/ping_text.txt"));
$zawartoscc = preg_replace("[\n]", "<br>", $zawartoscc);
$zawartoscc = preg_replace("[ ]", " \t ", $zawartoscc);
echo "$zawartoscc";

Na stronie widac wynik w postaci mac adresow i adresow IP.
Sprawdzalem i dziala ladnie. Wystarczylo nawet podlaczyc telefon
po WiFi czy inne urzadzenie i natychmiast jest widoczne w tabeli.
Musze to jeszcze "uladnic" :D i jesli jakis IP bedzie znany w tabeli
to pokaze sie tez jego nazwa.
Jak widzisz pliki przenioslem ze wzgledu na to, ze panel administracyjny
mam gdzie indziej, ale w takiej formie to dziala, a skoro dziala juz
nie chcialem nic wiecej zmieniac i np dawac :
: [/] [] ()
print "<PRE>";
print_r($cos);
print "</PRE>";

Chociaz kto wiejaka bedzie finalna wersja u mnie, ale ten kawalek
kodu juz powinien Ci zadzialac.
Mozna isc dalej i jesli masz na NND swoim curl to mozna przy pomocy
metody POST laczyc sie bezposrednio na maszye w pokoju
nauczycielskim i podawac dane o ile tam jest zainstalowany jakis
serwerek np xampp. PHP nie trzeba wykonywac na stronach.
Mozna wykonywac to z poziomu shell czy z cron poza http.

A i jeszcze jedno. Jak to bywa trzeba wydac polecenie visudo i dopisac
na koncu :
: [/] [] ()
nobody ALL=NOPASSWD:/home/httpd/html/sciezka/adm_who_nnd.php
nobody ALL=NOPASSWD:/home/httpd/html/sciezka/ping_blok.txt

oczywisicie zachowujac sciezki dostepu na swoim NND.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 23 maja 2010, 20:06 
Offline
Użytkownik

Rejestracja: niedziela, 23 września 2007, 14:35
Posty: 477
CyberDuck pisze:
Mozna isc dalej i jesli masz na NND swoim curl to mozna przy pomocy
metody POST laczyc sie bezposrednio na maszye w pokoju
nauczycielskim i podawac dane o ile tam jest zainstalowany jakis
serwerek np xampp. PHP nie trzeba wykonywac na stronach.
Mozna wykonywac to z poziomu shell czy z cron poza http.


Mi najbardziej potrzebna jest teraz teoretycznie prosta funkcjonalność. Na komputerze w pokoju wychowawców wyświetla się strona php postawiona na serwerze NND. Chciałbym, aby kliknięcie w button powodowało wykonanie się skryptu sh na NND.

Komputer w pokoju wychowawców jest tylko klientem, jednym z wielu. Serwer NND jest maszyną w wydzielonym pomieszczeniu do której nikt poza mną nie ma dostępu i jest routerem dla całej sieci. To na nim mają wykonać się skrypty sterowane poleceniami wydawanymi przez przeglądarkę w pokoju wychowawców.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 23 maja 2010, 20:46 
Offline
Użytkownik

Rejestracja: środa, 23 stycznia 2008, 17:32
Posty: 691
Lokalizacja: Pabianice
No to nalezaloby napisac caly panel wlacznie z kilkoma zabezpieczeniami.
Jesli ktos bedzie znal adres skryptu to juz lipa.
Ja mam uproszczone zadanie bo mam juz taki panel na swoim NND i wprowadzenie
dodatkowej podstrony to jest pikus. Troszke mi sie nie chce pisac za Ciebie strony
dla Twojego NND :wink: , ale informacje ktore podalem wczesniej
powinny wystarczyc do utworzenia strony i wykonania skryptu.
Usystemazuje to troszke jednak :
1. Przyjmijmy, ze domowym folderem dla Twojego panela jest
folder "/home/httpd/html/pokoj_naucz/" .
2. Zapiszmy skrypt do wykonania w folderze poza html widzianego
z zewnatrz, dajmy na to w lokacji i nazwie : "/home/httpd/ping_blok.txt"
o tresci :
: [/] [] ()
#!/bin/bash

/usr/bin/arpscan -sae eth1 192.168.0.0/24 > /home/httpd/ping_text.txt

Jak widzisz wynikiem tego skryptu bedzie "plik ping_text.txt" w tej samej
lokacji co skrypt do wykonania. Lepiej jest wczesniej go utworzyc
po to zeby nadac mu na stale uprawnienia 777.
Tak wiec nalezy wykonac :
: [/] [] ()
touch /home/httpd/plik ping_text.txt
chmod 0777 /home/httpd/plik ping_text.txt

plikowi wykonawczemu tez nalezy nadac prawa 777 :
: [/] [] ()
chmod 0777 /home/httpd/ping_blok.txt

3. W folderze domowym strony nalezy zapisac plik :
adm_who_nnd.php o tresci :
: [/] [] ()
<?php
$cos = shell_exec("sudo /home/httpd/ping_blok.txt");
$sciezka = "/home/httpd/ping_text.txt";
$plik = fopen($sciezka, "r");
$zawartoscc = fread($plik, filesize("/home/httpd/ping_text.txt"));
echo $zawartoscc ."<br>":
?>

i nadac mu prawa chmod 777 .
4. Teraz jeszcze trzeba zezwolic na wykonanie dla nobody, wiec wchodzisz
do pliku sudo wpisujac z konsoli visudo i na koncu
dopisujesz :
: [/] [] ()
nobody ALL=NOPASSWD:/home/httpd/html/pokoj_naucz/adm_who_nnd.php
nobody ALL=NOPASSWD:/home/httpd/ping_blok.txt


No i tym sposobem jesli wykonasz ze strony :
: [/] [] ()
http://adres_nnd/pokoj_naucz/adm_who_nnd.php

to na stronie powinienes zobaczyc zawartosc pliku, ktory jest wynikiem
dzialania skryptu w linuxie. Czyli zobaczysz adres mac i adres IP
komputerow aktualnie podlaczonych do sieci.

U mnie to mniej wiecej wyglada tak :
Obrazek
Oczywiscie poprzestawialem troszke znaki z wiadomych wzgledow i nie
wiadomo jakie sa prawdziwe adresy :wink:

Edit ::..
A no i ciagle zapominam o Tym Twoim zakresie ...
Czyli tam gdzie masz :
: [/] [] ()
/usr/bin/arpscan -sae eth1 192.168.0.0/24 > /home/httpd/ping_text.txt

nalezy podac Twoj zakres adresow:
: [/] [] ()
/usr/bin/arpscan -sae eth1 192.168.0.100-192.168.0.255 > /home/httpd/html/admin/ping_text.txt

:wink:


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 23 maja 2010, 22:07 
Offline
Użytkownik

Rejestracja: niedziela, 23 września 2007, 14:35
Posty: 477
Zaraz zabieram się do zabawy, ale zdecydowanie na maszynach wirtualnych (tak jak wszystkie testy z ostatnich kilku dni), tym bardziej, że z wpisami do sudousers mam dosyć nieprzyjemne doświadczenia (dwa ostatnie posty w http://forum.freesco.pl/viewtopic.php?t=18280). Ale może w końcu nad tym zapanuję :-)

Cytuj:
No to nalezaloby napisac caly panel wlacznie z kilkoma zabezpieczeniami.
Jesli ktos bedzie znal adres skryptu to juz lipa.

Podstawowe zabezpieczenie może odbyć się już na poziomie kodu php i polegać na tym, że strona otworzy się wyłącznie na komputerze z określonym IP (na komputerze wychowawców). Na komputerze wychowawców jest Linux (konkretnie Ubuntu) więc można by było pomyśleć nad uprawnieniami dostępu do strony na podstawie zalogowanego na komputerze klienckim użytkownika (grupy do jakiej należy). Tylko przekazanie informacji o tym, jaki użytkownik jest zalogowany może być co najmniej problemowe.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 24 maja 2010, 00:08 
Offline
Użytkownik

Rejestracja: niedziela, 23 września 2007, 14:35
Posty: 477
A propos:

: [/] [] ()
<?php
$cos = shell_exec("sudo /home/httpd/ping_blok.txt");
$sciezka = "/home/httpd/ping_text.txt";
$plik = fopen($sciezka, "r");
$zawartoscc = fread($plik, filesize("/home/httpd/ping_text.txt"));
echo $zawartoscc ."<br>":
?>


Podpowiedz mi jeszcze, jak później parsujesz adresy IP coby wyświetlić je w osobnych liniach, na pewno nie zrobi tego <br> w wierszu

: [/] [] ()
echo $zawartoscc ."<br>":


(to ci co najwyżej doda odstęp po wylistowaniu ostatniego adresu).

Obcinanie kilku pierwszych znaków w linii już podejrzałem ;-). Ale jak na razie nie udało mi się skutecznie zrealizować przeniesienia do następnej linii po napotkaniu spacji (mimo, że wcześniej zaglądnąłem w kilka ciekawych miejsc - http://debian.linux.pl/threads/1603-Wa% ... cenia-bash, http://www.gentoo.org/doc/pl/articles/l-sed1.xml ).


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 24 maja 2010, 00:20 
Offline
Użytkownik

Rejestracja: środa, 23 stycznia 2008, 17:32
Posty: 691
Lokalizacja: Pabianice
No ja przynajmniej to zrobilem jak najprosciej.
Rozbilem to do tabeli przy pomocy explode :
: [/] [] ()
$tab_wierszy = explode("\n", $zawartoscc);
$ilosc_wierszy = count($tab_wierszy);

Na koncu kazdej linii jest enter -> \n
To samo mozna zrobic z kolumnami :
: [/] [] ()
$tab_kol = explode(" ", $tab_wierszy[$nr_wiersza]);

i w petli wyswietlac to co sie chce.
Nazwy pobieram od siebie z bazy danych poniewaz moj panel
zapamietuje te dane ... i na ich podstawie moge ustalic kto to jest.
Poza tym jak widzisz u mnie w tabelce adres mac wyswietla sie z "-"
a nie z ":" bo na calej stronie juz przyjolem "-" wiec sprawe zalatwiam :
: [/] [] ()
$tab_wiersz[0] = preg_replace("[:]", "-", $tab_wiersz[0]);


Nie jestem jakims demonem php, ale to juz jest zwykle php.
Mozna sobie dowolnie dane przeksztalcic i wyswietlic tak jak sie chce.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 24 maja 2010, 13:02 
Offline
Użytkownik

Rejestracja: niedziela, 23 września 2007, 14:35
Posty: 477
Dzięki za wszystkie podpowiedzi :). Co do ogółu tematu, to mamy już w pełni funkcjonalne skrypty, które pozwalają wymusić na wychowankach i wychowawcach porządek w aspekcie wyłączania komputerów na noc.

Jednak do utrzymania ogólnego porządku daleko ;-). Teoretycznie pewnie jest to możliwe. Wystarczyłoby co wieczór cykać fotkę sali komputerowej i zadbać o jakiś soft, który porównywałby aktualnie wykonanego jpg-a z jpg-iem wzorcowym (i potrafił wykryć bardziej znaczące różnice) , wówczas można by wychwycić np. niepozasuwane krzesełka i ogólny nieład a wynik opleść w znane już skrypty :-)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 24 maja 2010, 15:44 
Offline
PGF

Rejestracja: piątek, 25 lutego 2005, 18:22
Posty: 1430
Lokalizacja: Elbląg
Sorry za OT ale nie mogłem się powstrzymać
mes mariusz pisze:
[...]
Jednak do utrzymania ogólnego porządku daleko ;-).
Fakt...
mes mariusz pisze:
Teoretycznie pewnie jest to możliwe. Wystarczyłoby co wieczór cykać fotkę sali komputerowej i zadbać o jakiś soft, który porównywałby aktualnie wykonanego jpg-a z jpg-iem wzorcowym (i potrafił wykryć bardziej znaczące różnice) , wówczas można by wychwycić np. niepozasuwane krzesełka i ogólny nieład a wynik opleść w znane już skrypty :-)

To nie lepiej zrobić od razu monitoring sali z rejestratorem 24/h i będziesz miał wszystko jak na dłoni: czy ktoś nie przysypia w czasie zajęć, rozmawia, dłubie w nosie, wpiernicza batoniki i rzuca papierki pod stół, pokazuje nauczycielowi język albo prędzej środkowy palec, jeśli nauczyciel nie zauważy, etc. no i proponuję poumieszczać ukryte mikrofony i też nagrywać, wtedy to już full control będziesz miał, pod warunkiem, że surowe kary będą ma się rozumieć...
Wielki Brat musi być czujny, bo wróg nie śpi :twisted:

_________________
F33/F07,F11,F13,F17
ObrazekObrazek


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

Strefa czasowa UTC+2godz.


Kto jest online

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