Freesco, NND, CDN, EOS
http://forum.freesco.pl/

mały dodatek do dhcp, potrzebna pomoc
http://forum.freesco.pl/viewtopic.php?f=22&t=17284
Strona 1 z 1

Autor:  Sadek [ środa, 5 listopada 2008, 09:19 ]
Tytuł:  mały dodatek do dhcp, potrzebna pomoc

witam!

potrzebuje pomocy w napisaniu skryptu, może bardziej nakierowania albo wytłumaczenia( o ile istnieje taka możliwość) jak zrobić aby daemon dhcp odpalał jakiś program za każdym razem jak dhcp przydzieli komuś ip z puli automatycznej. czy moze coś małego(skrypt czy cuś) co czyta logi i znając pulę automatyczną dhcp odpala mi ten żądany program, a może jakaś komenda w samym dhcp która się jakoś odnosi do wykonywania niezależnych poleceń.

chyba zagmatwałem, ale chodzi mi o to abym dostawał smsa za każdym razem jak dhcp przydzieli komuś adres z puli o końcówce ip 210-220

oczekuje na sugestie

Autor:  Maciek [ środa, 5 listopada 2008, 13:18 ]
Tytuł: 

Musiałbyś napisać skrypt analizujący log i wysyłajacy smsa, to może zarżnąć słabszą maszynę...

Autor:  Jacq [ środa, 5 listopada 2008, 18:05 ]
Tytuł: 

hmm a nie było coś już o tym na forum? cuś mi takiego świta... :)

Autor:  viater [ środa, 5 listopada 2008, 20:02 ]
Tytuł: 

Maciek pisze:
Musiałbyś napisać skrypt analizujący log i wysyłajacy smsa, to może zarżnąć słabszą maszynę...

Eeee tam zaraz analizować cały log... Tworzymy pipe, przekierowujemy log na tę pipe i skryptem w pętli odczytujemy z pipy - właśnie się tym bawię, za niedługo zapodam skrypt...

Autor:  viater [ środa, 5 listopada 2008, 21:55 ]
Tytuł: 

Więc tak:

I. Do /etc/dhcpd.conf dopisujesz (na początku):
: [/] [] ()
log-facility local0;



II. W /etc/syslog.conf :

1. Dopisujesz (może być na końcu):
: [/] [] ()
local0.*     /var/log/dhcpd
local0.*     |/root/dhcpdlog

2. Zmieniasz linię:
: [/] [] ()
[coś_tam]     /var/log/messages

na:
: [/] [] ()
[cos_tam];local0.none     /var/log/messages


III. Tworzysz pipe (jako root):
: [/] [] ()
cd
mkfifo dhcpdlog
chmod 600 dhcpdlog


IV.
1. Restartujesz syslogd
2. Restartujesz klogd
3. Restartujesz dhcpd

Od tej chwili logi dhcpd masz zapisywane w /var/log/dhcpd oraz do pipy /root/dhcpdlog

Pipa to jest FIFO, więc ma między innymi to do siebie, że jak coś z niej odczytasz, to już w niej tego nie ma.
W związku z powyższym:


V. Robisz sobie taki oto skrypcik:
: [/] [] ()
#!/bin/bash
#/usr/sbin/pilnuj_dhcp

IP_LOW=210
IP_HIGH=220
SENDSMS="/sciezka/do/programu/wysylajacego/sms [numer] [tresc] [inny_parametr]"

while read wpis; do
  YES=$[`echo $wpis | awk -F" |\." '{if ($6=="DHCPACK" && $11>'$IP_LOW' && \
      $11<'$IP_HIGH') {result=1} else {result=0}} END {print result}'`]
  if [ $YES == 1 ]; then
    $SENDSMS
  fi
done < /root/dhcpdlog




VI. Odpalasz skrypcik:
: [/] [] ()
/usr/sbin/pilnuj_dhcp &

Zważ na & na końcu - jeśli go nie dasz, to skrypt będzie zapierniczał cały czas w konsoli, bo to nie skończona pętla.


VII. Czekasz na SMS-y :)


PS. Niektóre klienty odpytują serwer DHCP po kilka razy z rzędu i wtedy kilka razy z rzędu dostaja DHCPACK, w związku z czym możliwe jest, że dostaniesz kilka SMS-ów dotyczących tego samego przydziału adresu IP - nie chce mi się już kombinować jak zrobić, żeby temu zapobiec.

A, i nie odpowiadam za ewentualne straty moralne i/lub materialne w przypadku, jeśli Ci się coś popier***i w systemie wskutek wykonania opisanych wyżej działań ;)

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/