sector Opublikowano 12 Maja 2010 Zgłoś Opublikowano 12 Maja 2010 (edytowane) Sprawa wyglada tak. Mam taki skrypcik i do czasu az nie zrobilem update'a samby, to dzialal jak zloto. Natomiast po update'cie juz nie dziala. Monitoruje on ups'a oraz zasilanie. W zaleznosci do tego co sie dzieje wysyla on wiadomosc do wszystkich w sieci ze pada zasilanie/nie ma pradu/juz jest prad. failtime=+5 # shutdown delay from initial power failurebtrytime=now # shutdown delay from low-battery warningfailmsg="Uwaga! Brak napiecia w sieci energetycznej - uruchomiono zasilanie awaryjne. Prosze zapisac otwarte dokumenty!"btrymsg="Uwaga! Akumulatory zasilania awaryjnego wyczerpane. Prosze wylaczyc komputer!"okaymsg="Uwaga! Przywrocono zasilanie zewnetrzne - z sieci energetycznej lub generatora."sdnotify=15 # maximum time shutdown that sends noticeslogprio="daemon.warn" # facility.level for logger programprogram=ups#`basename $0`# Set the path.PATH=/sbin:/etc:/bin:/usr/bin# Set location of file containing PID of running shutdownsspidpath=/var/run/shutdown.pid# Set location of UPS statusupspath=/etc/ups-statusdate send_message () { echo ${@} | wall LISTA="$(smbtree --user=GUEST% | grep -v ARTEMIS |grep -v BMS | grep -v "\\$" |grep -v "NT_STATUS" |grep -v "timeout" |grep -v "cli"|grep -v "Error" |awk {'print $1'})" for host in ${LISTA} do host=$(echo ${host} |sed s/\\\\//g) # echo ${host} echo "${@}" | smbclient -M ${host} done}# See what happened.case "$1" in #start 1) # Called with a powerfail event, check to see if a shutdown is running echo "${failmsg}" | wall logger -i -p $logprio -t "$program" "$failmsg" send_message ${failmsg} echo "fail" >$upspath ;; #now 3) # Called with a powerfail event, check to see if a shutdown is running echo "${btrymsg}" | wall logger -i -p $logprio -t "$program" "$btrymsg" send_message ${btrymsg} echo "now" >$upspath ;; #stop 2) # Ok, power is good again. Say so on the console. echo "${okaymsg}" | wall logger -i -p $logprio -t "$program" "$okaymsg" send_message ${okaymsg} rm -f $upspath ;; restart|force-reload) # This is just here to avoid lintian errors ;; *) echo "Usage: /etc/init.d/powerfail {start|now|stop}" echo " 1: shutdown in $failtime minutes due to power failure" echo " 3: shutdown NOW due to eminent UPS battery failure" echo " 2: cancel shutdown because power is back online" exit 1 ;;esacexit 0 W poprzedniej wersji smbtree pokazywalo wszystkich uzytkownikow i kazdy z nich otrzymywal wiadomosc. W tej wersji o dziwo, jesli mialem odpalonego vmware to tylko pokazywalo mi moj virtualny komputer. Szczerze mowiac mysle, ze mozna by to bylo zastapic np. wstawiajac w to miejsce adres ip rozgloszeniowy i tak akzdy by dostal wiadomosc. Pytanie jak to zrobic? :> Ewentualnie mozna wstawic ipki z pliku /etc/hosts. Z tego co obecnie zauwazylem, po updejcie plik konfiguracyjny troche ulegl zmianie. Wiadomosc do romka byla wysylana poniewaz znajdowal sie on w grupie WORKGROUP i ta sama grupa byla wpisana w sambie. U mnie natomiast wszystkie komputery pracuja w domenie. Jak moge przypisac sambo do domeny? Starczy w konfigu same DOMAIN=nazwa ? Edytowane 12 Maja 2010 przez sector Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość <account_deleted> Opublikowano 12 Maja 2010 Zgłoś Opublikowano 12 Maja 2010 (edytowane) Próbowałeś zamiast wall użyć smbclient -M? ...aczkolwiek wydaję mi się , że problem może być w konfigu samby - zaimportowałeś stary? /edit: najlepiej czytać do końca i ze zrozumieniem: security masz ustawione na domain czy user? Edytowane 12 Maja 2010 przez tomazzi Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
sector Opublikowano 12 Maja 2010 Zgłoś Opublikowano 12 Maja 2010 Konfig jest standardowy, wdaje mi sie ze default, starego nie mam niestety bo nie ja to robilem poprzednio :/ co jest najlepsze, samba jest tak naprawde nie zainstalowana lol. Jest polecenie smbtree, smbclient, ale nie ma jako takiej samby :D co jeszcze dziwniejsze to dzialalo wczesniej (podobno). tomazzi, masz jakis pomysl co ustawic? Wydaje mi sie, ze problem tkwi w tym, ze smb chce wysylac do komputerow w grupie roboczej, tylko ze problem jest w tym, ze one pracuja w domenie. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
sector Opublikowano 13 Maja 2010 Zgłoś Opublikowano 13 Maja 2010 (edytowane) when=`date +%D-%H:%S:`send_message () { echo ${@} | wall echo ${@} | mail -s "UPS status on $when" marcin@xxx.krakow.pl echo ${@} | mail -s "BMS: UPS status on $when" mxxx@gmail.com LISTA=`cat upsilon.conf` for host in ${LISTA} do host=$(echo ${host} |sed s/\\\\//g) # echo ${host} echo "${@}" | smbclient -W BMS --user=user[%pass] -M ${host} -U Administrator/Marcin done# echo ${@} | mail -s "BMS: UPS status on $when" mxxx@gmail.com} Rozwiazalem juz problem, ale siedzialem nad tym jeszcze troche czasu. W zasadzie z 4h. Po pierwsze zrezygnowalem z smbtree i zapisalem nazwy komputer NetBIOSy do pliku (upsilion.conf). Po drugie jak widac w nowej sambie potrzebne jest haslo i login uzytkownika, ktory chce wyslac komunikat do innego komputera, dlatego stwozylem nowego usera na potrzeby skryptu. Po trzecie wcale nie potrzeba jakby sie wydawalo pliku smb.conf a wystarczy wpisac -W BMS (czyli grupe lub domene). Cale szczescie skrypt hula i smiga :) Dodalem jeszcze wysylanie powiadomienia na mejla, bo siedze na Win7 ktory poslanca nie ma, rotfl. Dzieki za pomoc mimo wszystko! Edytowane 13 Maja 2010 przez sector Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...