Szeretném, ha csipogna az Apache

Feltettem a gépemre az Apache-ot, és még működik is... De azt szereetném, hogy minden alkalommal, amikor valaki "elmegy" az IP címemre, amikor tehát hozzáférés történik a beeállított tartalomjegyzékhez (htdocs) vagy annak bármi altartalomjegyzékéhez vagy fájljához, akkor csippantson egyet. lehetőleg a gép hangszóróján, (speeker a neve asszem), szóval azon, ami a gép indulásakor is csippant. Amiatt hogy ha épp mást csinálok s nem a log-fájlt nézem, hanem pld szövegszerkesztek vagy internetezek, akkor is tudjam, hogy "na most valaki kapcsolatba lépett velem", stb.

Hogyan oldható ez meg?

Ja és hogyan korlátozhatom le az apache-ot, hogy az összes feltöltési sebesség együttes maximuma ne legyen nagyobb mint ekkora vagy akkora? (Hogy ugye maradjon másra is sávszélességem).

Hozzászólások

Ezt most lelki szemeim előtt átültettem a guglira.

kötöjelkötöjel
irreverzibilis perverzkonzerv

WTF!?

--------------------------
The OOM killer is like a surgeon that amputates the limb of a man to save his life: losing a limb is not a nice thing, but sometimes there is nothing better to do.

"Understanding the Linux Kernel" on page frame reclaiming

Szervusz!

Én viccesebb dolgot valósítottam meg: FTP szerver real-time logolása sornyomtatóra ;~)) Ha valaki feltöltött vagy letöltött valamit, akkor jelzésképp egy sor, hogy mit hova/honnan töltött fel/le.
Aztán egyszer este 10 körül egy haver elkezdett rá tölteni 300MB körüli mp3-at, mindezt kb 32kbit/sec sebesség mellett... Szóval éjfélkor már unalmassá vált a dolog, meg aludni is akartam, így a nyomtatót inkább kikapcsoltam...

/mazursky

Csipogas:
Csinalsz egy vegtelen scriptet, ami figyeli az apache access.log valtozasanak az idejet, es ha az mas az elozo ellenorzes ertekenel, akkor vagy kikuld egy hangfilet a /dev/audiora, vagy egy ASCII BELL karaktert a konzolra. Amugy eleg idegesito. Foleg amikor botok, meg crawlerek is probalkoznak...

Sebessegkorlatozas:
Apache alapban nem tud ilyet. Csak annyit tudsz beallitani, hogy hany szimultan kapcsolatot engedelyezzen maximalisan. Ha korlatozni akarod a sebesseget, akkor erdemesebb valamilyen proxyt hasznalni.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Az a baj, hogy még nem találtam semmi normális magyar nyelvű jó leírást a héjprogramozásról. Amik vannak (s amiket megtaláltam), azokban nincs elég infó ahhoz, hogy megírjam ezt a szkriptet. Az ötlet különben tetszik. Tudsz netán linket adni ilyesmire?

-------------
Regényeim:
http://adlibrum.hu/Poliverzum/
http://www.novumverlag.hu/novitaeten/8/?product_id=22&detail=1
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó

Unalombol osszeutottem:

#!/bin/sh
OLDTIME=00:00
NEWTIME=00:00
BEEP=7
while [ 1 ]
do
NEWTIME=$(ls -l /var/log/apache/access.log | awk '{print $8;}')
if [ "$OLDTIME" != "$NEWTIME" ];
then
echo Valami $NEWTIME $OLDTIME
fi
OLDTIME=$NEWTIME
sleep 60;
done

Percenkent egyszer megnezi, hogy van-e valtozas az apache logjan. Az echo helyere beszurod a kedvenc konzolos mp3 lejatszodat a beep.mp3-al es kesz.

Igazan perverzeknek ajanlott a PCM PC-Speaker kernel modul beforgatasa, ez egy OSS kompatibilis eszkozt csinal a PC-Speakerbol, es innen kezdve a legelvadultabb torzito effekttel hallgathatjuk kedvenc mp3-aidat.

--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

A beep-beep csinálja a hangot úgy, ahogy szeretnéd (pl. a bell kiechozása, valamilyen hang lejátszása, stb.), a körítés meg valahogy így:


APACHELOG=/var/log/apache/access.log
RUNDIR=/var/run/apachebeep
LASTRUN=${RUNDIR}/lastrun
[ ! -d ${RUNDIR} ] && mkdir ${RUNDIR}
while :
do
  [ ${APACHELOG} -nt ${LASTRUN} ] && beep-beep
  touch ${LASTRUN}
  sleep 1
done

Remek, köszi! A csipogás helyett végülis az lett, hogy:

ogg123 /Programs/Szkriptjeim/audio/vampir.ogg

Ez egy jó vérfagyasztó sikoly, amit garantáltan észreveszek akkor is, ha épp valami más zenét hallgatok.
-------------
Regényeim:
http://adlibrum.hu/Poliverzum/
http://www.novumverlag.hu/novitaeten/8/?product_id=22&detail=1
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó

Fontebb mar emlitette valaki es nekem is az jutott az elsok kozt az eszembe, hogy ez igy nem lehet osszu eletu, mivel mikor folfedeznek a botok percenkent fog neked csipogni miattuk (attol fugg mennyire publikalod a keresokben az elerest). Ha nem szeretned, hogy bekerulj a keresok cache-ebe, ajanlom indulasbol tiltsd ki oket. Ezt konyen megteheted a robots.txt -vel.
Valahogy igy kell hozza kineznie a robots.txt -nek
Tetszolegesen oszeallithatsz egyet a kovetkezo "tool" segitsegevel click ide !
_______________________________________________________
UBUNTU 8.04 Rock's!
Type cat /vmlinuz > /dev/audio to hear the Voice of God.

Ezzel egyetertek

Mivel a robots.txt lekerese is forgalmat general

Ezzel meg nem

es nagy mertekben nem csokkenti az alapproblemat.

azert nem ertek egyet, mert pontosan az ellentkezoje igaz, mivel ha ez nem lenne a botok lekernek a robots.txt-t es utanna elkezdenek indexelni az oldalt.
Pl: a google bot egy 4es renkingu oldalon naponta tobb 100 lekerest kezdemenyez es ezek kozul csak par iranyul a robots.txt-re. Tehat a napi 300-400 lekeres helyett legroszab esetben 5-6x jelentkezne, de ez nem fog elofordulni, mivel megjegyszi a robots.txt-ben bejelolt tiltast es csak talalgatni lehet, hogy hanyszor fogja ujra ellenorizni, de az en tippem az, hogy ez lehet csak heti 1x tortenik meg.

Tehat abban van igazad, hogy ez nem szuntetne meg teljesen a folosleges "csipogas"-okat es sok spammer bot siman atcsuszna , e miatt nem a legjobb megoldas, de amig kerul egy jobb adig ez tobb mint semmi.

S ha mar a jobb megoldast akarjuk keresni akor van egy "tokeletesebb" otletem: Magaba a kiszolgalas folyamatab kellene beleagyazni egy kis scriptet, ami ellenorzi a user agent-et es annak fugvenyeben csipog vagy sem, de viszont ezt nagyon konnyu kijatszani.

Egy harmadik variacio, az lenne, hogy automatikusan a source-hoz hozzacsatolna minden laplekeresnel egy javascriptet ami aszinkron hivast intezne(ajax) mondjuk egy beep.php scriptre. Igy konyeden kiszurodnek a botok, mivel hiaba hamisitjak a user aget-juket, de viszont ezt is nagyon konyu kijatszani, sot ennek van egy masik hatulutoje is, az hogy valaki radszal es percenkent intez egy lekerest a geperol (egy automatizalt scriptel, pl egy sima cron - wget kombinacio) a beep.php-re.

Szerintem ha ezeket az 5leteket kicsit meggyurnank, kombinalnank akor meg tudnank kozeliteni a tokeletes megoldast.

Egy masik megoldas, amenyiben ez elfogadhato az az lenne, hogy az elso laplekeresnel jelszoval kellene belepni, ezt nem nehez megvalositani, csak egy sima htaccess beallitas, igy kiszurned az idegen latogatokat (esetleg bele lehet irni a felugro bejelentkezes ablakba a felhasznalonevet es a jelszot is es igy barki tovabblephet csak siman be kell masolnia a felhasznalonevet es a jelszot s utanna meg megnyilik elotte az oldal. A botok (hacsak direkt nem teged celoznak meg veluk) meg keptelenek az ien authentifikaciora alapbol.
Itt egy egyszeru tool amivel konyeden elvegezheted ezeket a beallitasokat: http://tools.dynamicdrive.com/password/

Meg tobb otlet is motoszkall a fejembe, hogy hogyan lehetne ezt megoldani, de mivel a feladat celjat eleg gagyinak es szuksegtelennek tartom nem vagyok hajlando tobbet foglalkozni ezzel a temaval.

_______________________________________________________
UBUNTU 8.04 Rock's!
Type cat /vmlinuz > /dev/audio to hear the Voice of God.

Csipogás (nem real-time módszer):

1. a cron-ból percenként futtatott bash script a log-ot utolsó néhány sorát kitolja egy szöveges file-ba, és az előző szöveges file-t átnevezi

2. diff-el össze kell hasonlítani a két file-t és a különbséget kell kitolni sornyomtatóra, illetve különbség esetén csippant egyet

A Tiéd viszont tényleg real-time, csak a végtelen script futási időben egy konstans proci és memória terhelés, ami nem mindig javallott.

Sebességkorlátozás:
fentebb írták hogy de bizony tud. (én még apache-t nem használtam, én nem tudom)

/mazursky

jujj, most nezem csak hogy poliverzum inditotta :D

Igy mar mindent ertek :D

synapse

--------------------------
The OOM killer is like a surgeon that amputates the limb of a man to save his life: losing a limb is not a nice thing, but sometimes there is nothing better to do.

"Understanding the Linux Kernel" on page frame reclaiming

sávszél: google: apache bandwidth limit

csipogás: bár semmi értelme, de hátha segít:
google: linux beep, első 10 találat átnéz, tuti van rá progi
aztán ha ez megy, akkor faragnék egy bash script-et
tail -f /var/log/apache/access.log | while read line; do beep done

vagy valami ilyesmi

Lehet a log figyelessel is, de szerintem jobb egy .php scripttel vagy CGI-vel, mivel az csak akkor fog csipogni, ha adott oldalt neznek. Igy ki tudod szurni pl a keresorobotokat, vagy meg tudod csinalni, hogy csak a fooldal nezesenel csippanjon, aloldalaknal ne, stb.

http://www.coolsnap.net/kevin/?p=7

print "Saw %d 40x responses." % num_40xs
sort ha kicsereled:
print '\a' -ra, akkor meg is van.
de szerintem hamar megunod a speaker hangja't :D
masik dolog meg:
webre azert rakunk dolgokat, hogy elerje mindenki, nem?

Nem azt mondtam, hogy ne érj el bárki, csak tudni szeretném, épp mikor éri el valaki!

No és ezt a szkriptet hogyan indítsam el? Akarommondani, hogyan indítja ezt el az Apache?
-------------
Regényeim:
http://adlibrum.hu/Poliverzum/
http://www.novumverlag.hu/novitaeten/8/?product_id=22&detail=1
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó

lemented a scriptet, mondjuk csipog.py neven, futtathatora chmodolod,
parancssorbol inditod abbol a konyvtarbol, ahova lementetted, igy: python csipog.py
ha a file elso soraba beirod:
#!/usr/local/bin/python
akkor meg tudni fogja, hogy a python forditot hasznalja, es cron-ba is berakhatod.
a bash verzio jobb. :/

És az milyen lenne, ha nem csak csippantana, hanem a csippantás frekvenciája valami értelmes adat függvényében változna? Mittudomén, milyen messziről jött az illető (ping), vagy hányadszor, bár az már sütikézős expert..

Ez lenne a dúrva, nem a bádogdob!

szerinem kösd a hálókártyád ki- és bemenetét egy gitárerősítőre:P

egyébként a legjobb megoldás szerintem is a tail-es beep-es...

—-—-—

int getRandomNumber() {
return 4;	//szabályos kockadobással választva.
	       //garantáltan véletlenszerű.
}	      //xkcd

Heti pár, max 10-20 találatnál van értelme, na de ilyen érdektelen anyagot elgondolkodnék hogy érdemes-e kitenni - jobban mutat a polcon.
Ennél sűrűbb látogatásnál halálra fog idegesíteni... De te tudod.

"kérdezze meg kezelőorvosát, gyógyszerészét"

beep csomag install
apache config-ba:
AccessLog "| beep -f 1000 -r 1 -s -l 20"

Szerintem a csipogás így megoldható... :)


while read; do
    echo -e "\a"
done < <(tail -f /var/log/apache2/teszt.hu-access.log)

--
maszili

A kerek zarojelben levo tail is indit - kerdes hol akarod atalitani a valtozo erteket.. mert ha exportalt, akkor olvasni tudod a subshellben is. csak erdemlegesen irni nem. marmint kint nem latszik hogy irtal bele
==
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.

Azert nem artana tisztaban lenni a unix pipe/fork/exec-es binaris futtato mechanizmusaval, amelyet a shell-ek is megvalositanak. A shell kod formaja csak a felszin. Mindket megoldas a 'tail' mellett meg egy processzt is futtatgat, vajon milyet? Poenosnak hitt valaszok a "fun" topic-be keretnek irodni.

BTW:
ha pl. tail | egrep "filter1|filter2" | while modon tovabb fejlesztjuk a szosszenetet, akkor az nem fog ertekelheto mukodest produkalni a buffer-eles miatt. Don Libes-nek koszonhetoen az expect 'unbuffer'-evel kenyszerithetjuk pseudo-terminalra (line buffering!) az egrep-et: tail | unbuffer -p egrep | while alakban.

Szamomra rejtely hogy pl. a debian-ban miert az /usr/share/doc/expect-dev/examples/ -ben van az egyebkent indokolatlanul mellozott unbuffer.

protip: ha akkora sávszélt vinne el az apache, hogy érdemes lenne korlátozni, akkor valószínűleg a hitcount is olyan nagy, hogy nem érdemes csipogtatni minden találatot

Nem teljesen....Eleg, ha a lapomon levo kepeket keri le valaki (sok van, csaladiak), az mar elviszi a feltoltest es az ADSL-bol adodoan a letoltest is. Szoval ha joanyam a legoccsobb t-online nettel elkezdi nezni, hogy kicsifia hogy mulatott a Szigeten, mar az elszallitja a bongeszesemet (naja, miert rakok ki 1M-s kepeket...). Es ez csak egy process. Igaz, ahany kep, annyi bejegyzes, annyi csipogas, szoval tenyleg idegesito lehet.

Hint: LogFormat, CustomLog. Az előbbibe bell karakter belle, az utóbbinál meg cél a /dev/tty12, aztán ott láthatod is, meg hallhatod is, ha kiírásra kerül valami.

Ezt nem is próbálja ki seeenki? Pedig ollan jó 5letnek tűnik...

Ha különböző oldalakhoz csinálsz különböző hangmagasságú csipogást, írok egy progit, ami úgy kapcsolódik hozzád, hogy elcsipogja neked a boci-boci tarkát. :)

________________________
http://lorem.hu
Az emberi tudás mindenkié!

kedves poliverzum nicku egyen!
tobbszor olvastam velemenyet hozzaszolasat a hupon.
a kerdesem mindossze Onhoz a targyban foglalt kerdes lenne.
udvozlettel:
laszlo zsolt kiss aka jimmyPhD

OpenBSD 4.3/i386

Azt tudja-e vki hogy cron-bol a:
* * * * * /bin/echo -en "\a" >/dev/tty
miert nem futyul?

"... mi koze ahhoz, hogy az explicit device-ba (>/dev/tty) iras nem futyul?"
Az, hogy nincs mögötte ilyen terminal. A /dev/tty nem az egész rendszerre vonatkozóan egyedi, hanem csak a processzre. Azaz két külön process által elért /dev/tty nem feltétlen jelenti ugyanazt a terminált. Ha a crondt futtató gépen szeretnél csipogást, akkor inkább például a /dev/tty1-et használd.

38.6 The Controlling Terminal:

"But just what is a controlling terminal? Just what it sounds like: the terminal from which the process was started."

"How does a process "lose" its controlling terminal? Easy. Some processes, such as system "daemons" (1.14) never had one - they were started by system scripts that weren't started from any terminal, or they disconnected themselves from their controlling terminals. But it's also possible that you started a process running in the background, logged out, and logged back later or on another terminal to find it still running without a controlling terminal."

"Running tty without a controlling terminal gives the message not a tty."