Featured How-To Logman Collector - Monitorowanie aktywności serwera (Gadu-Gadu lub Log4Net/nLog)

Dyskusja w 'Oh'Linux? Software hacking' rozpoczęta przez użytkownika Silas Mariusz, 26 Październik 2014.

Ładowanie...
  1. Silas Mariusz
    Offline

    Silas Mariusz SysOp Administrator

    Dołączył:
    5 Kwiecień 2008
    Wiadomości:
    6 033
    Miejscowość:
    Nowy Sącz
    Local Time:
    12:39
    Oceny:
    +1 340 / 30 / -5
    Followers:
    22
    QNAP:
    TVS-x71
    Ethernet:
    1 GbE
    TVS-x71 1 GbE

    Logman_Collector.
    LogMan Collector to program umożliwiający monitorowanie w czasie rzeczywistym dziennika zdarzeń (logów) serwera QNAP NAS i przekazywanie aktywności za pośrednictwem sieci Gadu-Gadu.

    upload_2014-11-2_19-57-53.

    upload_2014-11-2_19-58-32.

    Monitorowane informacje
    • (Connection Logs) aktywność połączeń systemowych/operacji usług sieciowych na plikach
    • (Event Logs) zdarzenia systemowe
    • dla aplikacji drugich: inne powiadomienia z pliku announce.out po otrzymaniu sygnału SIGHUP
    Metody przekazywania
    • Gadu-Gadu Bot (lub dowolny inny zewnętrzny skrypt PHP wywoływany zapytaniem http..)

      Czytelne formatowanie wiadomości

    W przypadku korzystania z usługi Gadu-Gadu za pomocą klienta wtw.im/ zalecena zainstalowanie wtyczki [wtwBIU] Formatowanie wiadomości wysyłanych dla lepszej czytelności przekazywanych informacji.




    Jak zainstalować?

    1. Pobierz i zainstaluj Gadu-Gadu
      wtw.
      Alternatywnie do Gadu-Gadu czy AQQ, zainstaluj komunikator WTW. (Pobierz ze strony: WTW.im)

    2. Zainstaluj Optware lub Qnapware
      optware_vs_qnapware.
      Zaloguj się do panelu zarządzania QNAP i z App Center zainstaluj Optware, bądź alternatywnie zainstaluj Entware/Qnapware - następce Optware. Do pobrania z zasobów forum.

    3. Włącz logowanie połączeń
      qnap_system_logs_start_logging.
      Aby monitorować zdarzenia usług plików, przejdź do logów zdarzeń i włącz logowanie połączeń.

    4. Dodaj nowy kontakt bota Logman #51816153
      qnap_wtw_dodaj_nowy_kontakt.
      Do Gadu-Gadu dodaj nowy kontakt o numerze: 51816153 i podpisz np. Logman

    5. Potwierdź swój numer Gadu-Gadu
      qnap_logman_subscribe.
      Napisz do bota Logman #51816153 wiadomość: ZAPISZ - (pamiętaj! DUŻE litery). W ten sposób autoryzujesz swój numer Gadu-Gadu i potwierdzisz chęć otrzymywanie wiadomości.

    6. Połącz się na konsolę shell po SSH serwerem QNAP
      putty_host_name.
      Za pomocą programu PuTTY połącz się po SSH z serwerem QNAP. (Uwaga: Upewnij się, że w panelu zarządzania QNAP włączyłeś usługę SSH!)

    7. Zaloguj jako admin
      putty_login_as_admin.
      Użyj poświadczeń administratora, aby zalogować się na serwer. (Notka dla początkujących: Wprowadzanie hasła jest ukryte - kursor nie zmienia swojej pozycji.)

    8. Pobierz program Logman
      qnap_logman_download.
      Wpisz poniższą linijkę, aby pobrać program Logman:
      Kod (Bash):
      1. wget http://pool.qnapclub.pl/projects/tools/logman/releases/last/logman.sh
    9. Nadaj uprawnienia pliku wykonywalnego
      qnap_logman_chmod_plus_x.
      Aby móc uruchomić pobrany plik, nadaj mu odpowiednie uprawnienia zezwalające na jego uruchomienie. W tym celu wpisz:
      Kod (Bash):
      1. chmod +x logman.sh
    10. Zainstaluj...
      qnap_logman_install.
      Rozpocznij łatwą instalacje programu wykonując polecenie:
      Kod (Bash):
      1. ./logman.sh install
    11. Podaj swój numer Gadu-Gadu
      qnap_logman_gadu-gadu_im_number.
      Podaj docelowy numer Gadu-Gadu, na który chcesz otrzymywać logi z serwera QNAP.
      (Potwierdzony do otrzymywania wiadomości w kroku 5)

    12. Koniec
      logman_installation_successful.
      Od teraz na bieżąco będziesz informowany o operacjach serwera QNAP.


    W terminalu... - Instalacja

    Link: https://asciinema.org/a/87681


    Konfiguracja dodatkowa
    • Jak w sieci lokalnej zamiast adresu IP otrzymywać Hostname komputera?
      qnap_logman_hostname_instead_ip_addr.

      Aby dla komputerów znajdujących się w sieci lokalnej wyświetlana była łatwa do identyfikacji nazwa hosta zamiast adresu IP określ swoją podsieć w pliku config.ini.


      W tym celu wykonaj poniższe polecenia:
      1. Określ pule adresową komputerów Twojej sieci LAN komendą:
        lan_subnet=192.168.1.
        (format: x . x . x . )
        qnap_logman_hostname_instead_ip_addr.

      2. Znajdź katalog, do którego został zainstalowany program Logman
        Kod (Bash):
        1. publicdir=`/sbin/getcfg Public path -f /etc/config/smb.conf`
        2. qpkgdir=`cd $publicdir && cd ../.qpkg/ && pwd`
        3. installdir="$qpkgdir/logman"
      3. Wyświetl obecny plik config.ini
        cat "$installdir/config.ini"

      4. Zapisz nową wartość pola local_subnet w pliku config.ini wykonując polecenie:
        Kod (Bash):
        1. setcfg Network local_subnet "$lan_subnet" -f "$installdir/config.ini" -c
      5. Upewnij się, że wartość pola local_subnet w pliku config.ini została zmieniona
        getcfg Network local_subnet -f "$installdir/config.ini"

      6. Zrestartuj program Logman
        /etc/init.d/logman.sh restart

    W terminalu... - Konfiguracja dodatkowa

    Link: https://asciinema.org/a/87688


    Ciekawostki
    • Wykonanie testu przez dodanie nowego wpisu w logach połączeń (logowanie połączeń musi być włączone)
      Kod (Bash):
      1. conn_log_tool -t0 -ulogman -p127.0.0.1 -mlocalhost -i0 -n0 -a "Ja jestem Pan Tik-Tak"
    • SMS/info z środowiska chroot dla rtorrent - na własną odpowiedzialność: [Bash] logman - Pastebin.com

    • Jak Logman wygląda z poziomu konsoli shell serwera?
      logman_console_i1. logman_console_i2.

      W terminalu... - Widok logmanowego workera

      Link: https://asciinema.org/a/87689
     
    Last edited: 30 Lipiec 2015
    • Piwo Piwo x 1
    • Lizak Lizak x 1
    • Ciastko Ciastko x 1
  2. pigers
    Offline

    pigers GOD's left hand - careful - he don't care anymore. Administrator

    Dołączył:
    26 Lipiec 2013
    Wiadomości:
    5 467
    Miejscowość:
    Nysa
    Local Time:
    12:39
    Oceny:
    +1 007 / 28 / -12
    Followers:
    2
    QNAP:
    TS-x53
    Synology:
    huh ? I do not collect crap
    Ethernet:
    1 GbE
    TS-x53 1 GbE
    Dla komunikacji Debian (chroot) -> QTS potrzebujemy dodać kilka rzeczy w QPKG Debiana i w samym Debianie:
    QPKG debiana .qpkg/debian6/debian6.sh
    odnaleźć
    Kod (Bash):
    1. mount_deb(){
    2. ...
    3.   mount -o bind /dev $DEB_BASE/dev
    4.   mount -o bind /dev/pts $DEB_BASE/dev/pts
    5.   mount -o bind /sys $DEB_BASE/sys
    6. #  mount -o bind /dev $DEB_BASE/env/wheezy/dev
    7. ...
    8.  
    dopisać
    Kod (Bash):
    1. mount -o bind /tmp $DEB_BASE/tmp.qnap
    2.  
    zamienić całą sekcję
    Kod (Bash):
    1. umount_deb(){
    2.   umount $DEB_BASE/mnt/ext/home 2> /dev/null
    3.   umount $DEB_BASE/mnt/ext 2> /dev/null
    4.   umount $DEB_BASE/mnt/HDA_ROOT 2> /dev/null
    5.   umount $DEB_BASE/share/Public 2> /dev/null
    6.   umount $DEB_BASE/share/Web 2> /dev/null
    7.   umount $DEB_BASE/share/Multimedia 2> /dev/null
    8.   umount $DEB_BASE/share/Usb 2> /dev/null
    9.   umount $DEB_BASE/share/Download 2> /dev/null
    10.   umount $DEB_BASE/share/Recordings 2> /dev/null
    11.  
    12.   umount $DEB_BASE/sys
    13.   umount $DEB_BASE/tmp.qnap
    14.   umount $DEB_BASE/proc
    15.   umount $DEB_BASE/dev/pts
    16.   umount $DEB_BASE/dev
    17.  
    18. #  umount $DEB_BASE/env/wheezy/sys
    19. #  umount $DEB_BASE/env/wheezy/proc
    20. #  umount $DEB_BASE/env/wheezy/dev/pts
    21. #  umount $DEB_BASE/env/wheezy/dev
    22.  
    23.   if test $? -ne 0
    24.   then
    25.   /bin/sleep 5
    26.   umount $DEB_BASE/sys 2>&-
    27.   umount $DEB_BASE/proc 2>&-
    28.   umount $DEB_BASE/dev/pts 2>&-
    29.   umount $DEB_BASE/dev 2>&-
    30.   umount $DEB_BASE/tmp.qnap 2>&-
    31.  
    32. #  umount $DEB_BASE/env/wheezy/sys 2>&-
    33. #  umount $DEB_BASE/env/wheezy/proc 2>&-
    34. #  umount $DEB_BASE/env/wheezy/dev/pts 2>&-
    35. #  umount $DEB_BASE/env/wheezy/dev 2>&-
    36.   fi
    37.  
    38.   umount $ENV_BASE 2> /dev/null
    39.  
    następnie w Debianie:
    edytując /etc/init.d/rtorrent
    Kod (Bash):
    1. d_start() {
    2.   chmod 666 /dev/ptmx ; chmod 666 /dev/null
    3.   chmod 666 /wheezy/dev/ptmx ; chmod 666 /wheezy//dev/null
    4.  
    5.   echo "
    6.  [rtorrent] Mounting shares"
    7.   mount -o bind /share/Download /wheezy/share/Download
    8.   mount -o bind /share/Multimedia /wheezy/share/Multimedia
    9.   mount -o bind /share/Public /wheezy/share/Public
    10.   mount -o bind /share/Usb /wheezy/share/Usb
    11.   mount -o bind /var/www /wheezy/var/www
    12.   mount -o bind /tmp /wheezy/tmp
    13.  
    dopisujemy zaraz za mount -o bind /tmp /wheezy/tmp
    Kod (Bash):
    1.   [ ! -d "/wheezy/tmp.qnap" ] && mkdir -p /wheezy/tmp.qnap
    2.   mount -o rbind /tmp.qnap /wheezy/tmp.qnap
    3.  
    następnie odnajdujemy
    Kod (Bash):
    1.  
    2. d_stop() {
    3.   session=`getsession "$config"`
    4.   if ! [ -s /wheezy/${session}/rtorrent.lock ] ; then
    5.   return
    6.   fi
    7.   pid=`cat /wheezy/${session}/rtorrent.lock | awk -F: '{print($2)}' | sed "s/[^0-9]//g"`
    8.   if ps -A | grep -sq ${pid}.*rtorrent ; then # make sure the pid doesn't belong to another process
    9.   kill -s INT ${pid}
    10.  
    11.   x=8;
    12.   while [ ! -z "`ps | grep rtorrent | grep ${pid}`" -a "$x" -gt 0 ]; do
    13.   echo "[rtorrent] --SIGINT  ... $x seconds left"
    14.   x=$(expr $x - 1)
    15.   ${BINDIR}/sleep 1
    16.   done
    17.  
    18.   if ps -A | grep -sq ${pid}.*rtorrent ; then
    19.   kill -s TERM ${pid}
    20.   x=5;
    21.   while [ ! -z "`ps | grep rtorrent | grep ${pid}`" -a "$x" -gt 0 ]; do
    22.   echo "[rtorrent] --SIGTERM  ... $x seconds left"
    23.   x=$(expr $x - 1)
    24.   ${BINDIR}/sleep 1
    25.   done
    26.   fi
    27.  
    28.   if ps -A | grep -sq ${pid}.*rtorrent ; then
    29.   kill -s KILL ${pid}
    30.   echo "[rtorrent] --SIGKILL  ... 0 seconds left"
    31.   fi
    32.   fi
    33.  
    34.   sleep 1
    35.   sync
    36.   sleep 1
    37.   echo "
    38.  [rtorrent] Umounting shares"
    39.   umount /wheezy/share/Download
    40.   umount /wheezy/share/Multimedia
    41.   umount /wheezy/share/Public
    42.   umount /wheezy/share/Usb
    43.   umount /wheezy/var/www
    44.   umount /wheezy/tmp
    45.  
    i dopisujemy za umount /wheezy/tmp

    Kod (Bash):
    1. umount /wheezy/tmp.qnap
    W ten sposób widzimy zawartość katalogu /tmp z QTS jako /wheezy/tmp.qnap. Pozwala nam to komunikację z LogManem.
    Po restarcie NAS Debian powinien widzieć już nowy katalog.

    Następnie w Debianie trzeba dopisać dwie rzeczy:
    1. edytować/stworzyć plik /share/Download/rtorrent/settings/settings/notify_svc.sh
    Kod (Bash):
    1. ARGS=75
    2. if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]
    3. then
    4.   echo "rtorrent-QNAP Announcement Tool (c)2009-2014 Silas Mariusz"
    5.   echo "Usage: ./`basename $0` <service> <action> <message>"
    6.   echo
    7.   exit $E_NOARGS
    8. fi
    9. n_svc=$1
    10. n_action=$2
    11. shift 2
    12. n_message=$@
    13. # Theme
    14. case $n_action in
    15.   "FINISH")
    16.   if [ "$n_svc" == "event_log" ]; then
    17.   t_action="Download finished:"
    18.   elif [ "$n_svc" == "smsc" ]; then
    19.   t_action="Complete:"
    20.   else
    21.   t_action="Finished:"
    22.   fi
    23.   ;;
    24.   "INSERT")
    25.   if [ "$n_svc" == "event_log" ]; then
    26.   t_action="New download:"
    27.   elif [ "$n_svc" == "smsc" ]; then
    28.   t_action="Start :"
    29.   else
    30.   t_action="Inserted:"
    31.   fi
    32.   ;;
    33.   *)
    34.   t_action="($0: line:$LINENO error) $n_svc"
    35.   ;;
    36. esac
    37. case $n_svc in
    38.   "smsc")
    39.  
    40.   _sms_log="/share/Download/rtorrent/logs/sms.out"
    41.   echo "rTorrent $t_action $n_message" >> $_sms_log
    42. #  [ -x "/usr/sbin/sms_sender" ] && /usr/sbin/sms_sender -m "$t_action $n_message"
    43.   ;;
    44.   "event_log")
    45.   __now_date=$(date +%Y-%m-%d)
    46.   __now_time=$(date +%H:%M:%S)
    47.   __hostname=$(hostname)
    48.   _tail_log="/share/Download/rtorrent/logs/announce.out"
    49.  
    50.   echo -e "Rtorrent Events: \n$__now_date · $__now_time —— [b]rtorrent[/b]×[i]$__hostname[/i] —— [u]EVENT:[/u] [b]$t_action[/b] $n_message\n" >> $_tail_log
    51.   ;;
    52.   *)
    53.   echo "(error) Unsupported notify service"
    54.   echo
    55.   exit 1
    56.   ;;
    57. esac
    58. kill -HUP $(cat /tmp.qnap/logman-worker.pid)
    59. exit 0
    60.  
    Dla świętego spokoju polecam poprawić mu prawa dostępu
    Kod (Bash):
    1. chmod 777 /share/Download/rtorrent/settings/settings/notify_svc.sh
    2. Dopisać linie informującą rtorrenta do wykonania extra akcji przy dodaniu i zakończeniu pobierania
    /wheezy/etc/rtorrent.conf
    Kod (Bash):
    1. # When the torrent finishes, it executes "mv -n <base_path> ~/Download/"
    2. # and then sets the destination directory to "~/Download/". (0.7.7+)
    3. #on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,/share/Download/rtorrent/complete/ ;d.set_directory=/share/Download/rtorrent/complete/"
    4. method.set_key = event.download.finished,move_complete,"d.set_directory=/share/Download/rtorrent/complete/; execute=mv,-f,$d.get_base_path=,/share/Download/rtorrent/complete/"
    5. ###
    dopisać po ###

    Kod (Bash):
    1.  
    2. method.set_key = event.download.finished,notify_event_log_finished,"execute=/share/Download/rtorrent/settings/settings/notify_svc.sh,event_log,FINISH,$d.get_name="
    3. method.set_key = event.download.inserted_new,notify_event_log_inserted_new,"execute=/share/Download/rtorrent/settings/settings/notify_svc.sh,event_log,INSERT,$d.get_name="
    4. method.set_key = event.download.finished,notify_smsc_finished,"execute=/share/Download/rtorrent/settings/settings/notify_svc.sh,smsc,FINISH,$d.get_name="
    5. method.set_key = event.download.inserted_new,notify_smsc_inserted_new,"execute=/share/Download/rtorrent/settings/settings/notify_svc.sh,smsc,INSERT,$d.get_name="
    6. ###
    Popisaliśmy trochę - to sprawdźmy efekty naszych działań:
    w Debianie wydajmy polecenie
    Kod (Bash):
    1. /share/Download/rtorrent/settings/settings/notify_svc.sh smsc INSERT test sms
    oraz
    Kod (Bash):
    1. /share/Download/rtorrent/settings/settings/notify_svc.sh event_log INSERT test gg
    Po około minucie powinien przyjść SMS z treścią " test sms" a na GG (jeśli sobie ustawiliście w Logmanie) "test gg"

    upload_2014-12-15_18-42-15.

    PS: @Silas Mariusz@Silas Mariusz - merguj ten kod - bo ja tutorial dodałem ;)
     
    • Lubię to! Lubię to! x 1
  3. Silas Mariusz
    Offline

    Silas Mariusz SysOp Administrator

    Dołączył:
    5 Kwiecień 2008
    Wiadomości:
    6 033
    Miejscowość:
    Nowy Sącz
    Local Time:
    12:39
    Oceny:
    +1 340 / 30 / -5
    Followers:
    22
    QNAP:
    TVS-x71
    Ethernet:
    1 GbE
    TVS-x71 1 GbE
    Skrypty dla innych urządzeń, gotowe do pracy z botem Logman


    Mikrotik RouterBoard OS - Monitorowanie przyłączonych klientów do sieci bezprzewodowej

    (Script) Skrypt:
    Nazwa: log_client
    Reguły uruchamiania: wszystkie opcje
    Kod (Text):
    1. # BEGIN SETUP
    2. #:local systemName [/system identity get name]
    3. :local systemName [:system identity get value-name=name]
    4. # END SETUP
    5.  
    6. # Podaj docelowy numer Gadu Gadu
    7. :local gadugadu "1234567"
    8. :local rawOutput
    9. :local output
    10.  
    11. :foreach i in=[ /int wir reg find ap=no] do={
    12.     :set rawOutput ("AP: " . [int wir reg get $i interface] . "  MAC: " . [int wir reg get $i mac-address ] . " Last IP:" . [int wir reg get $i last-ip] . " RX: " . [int wir reg get $i rx-rate] . " TX: " . [int wir reg get $i tx-rate] . " Uptime: " . [int wir reg get $i uptime] . " LastACT: " . [int wir reg get $i last-activity] . " SignalStrength: " . [int wir reg get $i signal-strength] . " SNR: " . [int wir reg get $i signal-to-noise] . " TX/RX-CCQ: " . [int wir reg get $i tx-ccq] . " / " . [int wir reg get $i rx-ccq] . " PThroughput: " . [int wir reg get $i  p-throughput])
    13.  
    14.     :set output ("Mikrotik [b]" . [/system identity get name] . "[/b] [u]AP[/u]: [i]" . [int wir reg get $i interface] . "[/i]  MAC: [u]" . [int wir reg get $i mac-address ] . "[/u] Last IP:[b]" . [int wir reg get $i last-ip] . "[/b] RX: [b]" . [int wir reg get $i rx-rate] . "[/b] TX: [b]" . [int wir reg get $i tx-rate] . "[/b] Uptime: [u]" . [int wir reg get $i uptime] . "[/u] LastACT: " . [int wir reg get $i last-activity] . " SignalStrength: " . [int wir reg get $i signal-strength] . " SNR: [u]" . [int wir reg get $i signal-to-noise] . "[/u] TX/RX-CCQ: [u]" . [int wir reg get $i tx-ccq] . "[/u] / [u]" . [int wir reg get $i rx-ccq] . "[/u] PThroughput: " . [int wir reg get $i  p-throughput])
    15.  
    16.     if ([:len $output] > 0) do={
    17.       :local urlstring "http://pool.qnapclub.pl/projects/tools/bot-log-gadugadu/bot.php\?number=$gadugadu&message=$output"
    18.       :local urlEncoded
    19.  
    20.       :for i from=0 to=([:len $urlstring] - 1) do={
    21.         :local char [:pick $urlstring $i]
    22.         :if ($char = " ") do={
    23.           :set $char "%20"
    24.         }
    25.         :if ($char = "-") do={
    26.           :set $char "%2D"
    27.         }
    28.         :if ($char = "+") do={
    29.           :set $char "%2B"
    30.         }
    31.         :set urlEncoded ($urlEncoded . $char)
    32.       }
    33.  
    34.       :log info ($rawOutput)
    35.       #:beep frequency=90 length=500ms
    36.       /tool fetch url="$urlEncoded" mode=http keep-result=no
    37.     }
    38.  
    39. }
    (Scheduler) Harmonogram
    Nazwa nowego zadania: log_client
    Czas rozpoczęcia: startup
    Interwał: 00:05:00
    Przy wystąpieniu zdarzenia wykonaj (On Event):
    log_client
    Reguły uruchamiania: wszystkie



    Mikrotik RouterBoard OS - Powiadom o przyznaniu adresu IP przez serwer DHCP oraz alarmuj na wypadek udanych i nieudanych prób logowania do routera

    (Script) Skrypt:
    Nazwa: Logman
    Reguły uruchamiania: wszystkie opcje
    Kod (Text):
    1. # BEGIN SETUP
    2. :local scheduleName "Logman"
    3. #:local systemName [/system identity get name]
    4. :local systemName [:system identity get value-name=name]
    5. :local startBuf [:toarray [/log find message~"logged in" || message~"login failure" || message~"assigned"]]
    6. :local removeThese {"telnet";"whatever string you want"}
    7. # END SETUP
    8.  
    9. # Podaj docelowy numer Gadu Gadu
    10. :local gadugadu "7662900"
    11.  
    12. # warn if schedule does not exist
    13. :if ([:len [/system scheduler find name="$scheduleName"]] = 0) do={
    14.   /log warning "[Logman] ERROR: Schedule does not exist. Create schedule and edit script to match name"
    15. }
    16.  
    17. # get last time
    18. :local lastTime [/system scheduler get [find name="$scheduleName"] comment]
    19. # for checking time of each log entry
    20. :local currentTime
    21. # log message
    22. :local message
    23.  
    24. # final output
    25. :local output
    26.  
    27. :local keepOutput false
    28. # if lastTime is empty, set keepOutput to true
    29. :if ([:len $lastTime] = 0) do={
    30.   :set keepOutput true
    31. }
    32.  
    33. :local counter 0
    34. # loop through all log entries that have been found
    35. :foreach i in=$startBuf do={
    36.  
    37. # loop through all removeThese array items
    38.   :local keepLog true
    39.   :foreach j in=$removeThese do={
    40. #   if this log entry contains any of them, it will be ignored
    41.     :if ([/log get $i message] ~ "$j") do={
    42.       :set keepLog false
    43.     }
    44.   }
    45.   :if ($keepLog = true) do={
    46.    
    47.    :set message [/log get $i message]
    48.  
    49. #   LOG DATE
    50. #   depending on log date/time, the format may be different. 3 known formats
    51. #   format of jan/01/2002 00:00:00 which shows up at unknown date/time. Using as default
    52.     :set currentTime [ /log get $i time ]
    53. #   format of 00:00:00 which shows up on current day's logs
    54.    :if ([:len $currentTime] = 8 ) do={
    55.      :set currentTime ([:pick [/system clock get date] 0 11]." ".$currentTime)
    56.     } else={
    57. #     format of jan/01 00:00:00 which shows up on previous day's logs
    58.      :if ([:len $currentTime] = 15 ) do={
    59.         :set currentTime ([:pick $currentTime 0 6]."/".[:pick [/system clock get date] 7 11]." ".[:pick $currentTime 7 15])
    60.       }
    61.    }
    62.    
    63. #   if keepOutput is true, add this log entry to output
    64.    :if ($keepOutput = true) do={
    65.      :set output ($output."[i]".$currentTime."[/i] ".$message."[br]")
    66.    }
    67. #   if currentTime = lastTime, set keepOutput so any further logs found will be added to output
    68. #   reset output in the case we have multiple identical date/time entries in a row as the last matching logs
    69. #   otherwise, it would stop at the first found matching log, thus all following logs would be output
    70.     :if ($currentTime = $lastTime) do={
    71.      :set keepOutput true
    72.      :set output ""
    73.    }
    74.   }
    75.  
    76. #   if this is last log entry
    77.   :if ($counter = ([:len $startBuf]-1)) do={
    78. #   If keepOutput is still false after loop, this means lastTime has a value, but a matching currentTime was never found.
    79. #   This can happen if 1) The router was rebooted and matching logs stored in memory were wiped, or 2) An item is added
    80. #   to the removeThese array that then ignores the last log that determined the lastTime variable.
    81. #   This resets the comment to nothing. The next run will be like the first time, and you will get all matching logs
    82.    :if ($keepOutput = false) do={
    83. #     if previous log was found, this will be our new lastTime entry      
    84.      :if ([:len $message] > 0) do={
    85.         :set output ($output."[i]".$currentTime."[/i] ".$message."[br]")
    86.       }
    87.     }
    88.   }
    89.   :set counter ($counter + 1)
    90. }
    91.  
    92. # If we have output, save new date/time, and send email
    93. if ([:len $output] > 0) do={
    94.   /system scheduler set [find name="$scheduleName"] comment=$currentTime
    95.   :local urlstring "http://pool.qnapclub.pl/projects/tools/bot-log-gadugadu/bot.php\?number=$gadugadu&message=$output"
    96.   :local urlEncoded;
    97.  
    98.   :for i from=0 to=([:len $urlstring] - 1) do={
    99.     :local char [:pick $urlstring $i]
    100.     :if ($char = " ") do={
    101.       :set $char "%20"
    102.     }
    103.     :if ($char = "-") do={
    104.       :set $char "%2D"
    105.     }
    106.     :if ($char = "+") do={
    107.       :set $char "%2B"
    108.     }
    109.     :set urlEncoded ($urlEncoded . $char)
    110.   }
    111.  
    112.   /log info "[Logman] New logs found, send get/post"
    113.   /tool fetch url="$urlEncoded" mode=http keep-result=no
    114.  
    115.   #:beep frequency=90 length=500ms
    116.  
    (Scheduler) Harmonogram
    Nazwa nowego zadania: Logman
    Czas rozpoczęcia: startup
    Interwał: 00:00:30
    Przy wystąpieniu zdarzenia wykonaj (On Event):
    Logman
    Reguły uruchamiania: wszystkie

    upload_2015-11-8_20-26-53.


    Mikrotik RouterBoard OS - Log Parser z obsługą zdarzeń (potrzebuje kilka poprawek...)

    (Script) Skrypt:
    Utwórz nową akcje logowania, aby zapisać poszczególne reguły informacji w niezależnym bufforze w pamięci RAM:
    Kod (Text):
    1. /system logging action add memory-lines=100 memory-stop-on-full=no name=logParse target=memory
    Przyznaj zezwolonia logowania poszczególnych zdarzeń dla utworzonego nowego buffora pamięci:
    Kod (Text):
    1. /system logging add action=logParse disabled=no prefix="" topics=system,info
    2. /system logging add action=logParse disabled=no prefix="" topics=system,error,critical
    3. /system logging add action=logParse disabled=no prefix="" topics=dhcp
    Nazwa: Log-Parser
    Reguły uruchamiania: wszystkie opcje
    Kod (Text):
    1. # Script Name: Log-Parser
    2. # This script reads a specified log buffer.  At each log entry read,
    3. # the global variable 'logParseVar' is set to "<log entry time>,<log entry topics>,<log entry message>"
    4. # then a parser action script is run.  The parser action script reads the global variable, and performs specified actions.
    5. # The log buffer is then cleared, so only new entries are read each time this script gets executed.
    6.  
    7. # Podaj docelowy numer Gadu Gadu
    8. :local gadugadu "1234567"
    9.  
    10. # Set this to a "memory" action log buffer
    11. :local logBuffer "logParse"
    12.  
    13. # Set to name of parser script to run against each log entry in buffer
    14. :local logParserScript "Log-Parser-Script"
    15.  
    16. # Internal processing below....
    17. # -----------------------------------
    18. :global logParseVar ""
    19.  
    20. :local loglastparsetime
    21. :local loglastparsemessage
    22. :local findindex
    23. :local property
    24. :local value
    25. :local logEntryTopics
    26. :local logEntryTime
    27. :local logEntryMessage
    28. :local curDate
    29. :local curMonth
    30. :local curDay
    31. :local curYear
    32. :local clearedbuf
    33. :local lines
    34.  
    35. # Get current date settings
    36. :set curDate [/system clock get date]
    37. :set curMonth [:pick [:tostr $curDate] 0 3]
    38. :set curDay [:pick [:tostr $curDate] 4 6]
    39. :set curYear [:pick [:tostr $curDate] 7 11]
    40.  
    41. :set clearedbuf 0
    42. :foreach rule in=[/log print where buffer=logParse] do={
    43. # Now all data is collected in memory..
    44. #:foreach rule in=$logBuffer do={
    45. #:foreach rule in=[/log print where buffer=($logBuffer)] do={
    46. #:foreach rule in=[/log print where buffer="$logBuffer"] do={
    47. # Now all data is collected in memory..
    48.  
    49. # Clear log buffer right away so new entries come in
    50.    :if ($clearedbuf = 0) do={
    51.       /system logging action {
    52.          :set lines [get ($logBuffer) memory-lines]
    53.          set ($logBuffer) memory-lines 1
    54.          set ($logBuffer) memory-lines $lines
    55.       }
    56.       :set clearedbuf 1
    57.    }
    58. # End clear log buffer
    59.  
    60.    :set logEntryTime ""
    61.    :set logEntryTopics ""
    62.    :set logEntryMessage ""
    63.  
    64. # Get each log entry's properties
    65.    :local items {$rule}
    66.    :foreach item in=[$items] do={
    67.       :set logEntryTime ($item->"time")
    68.       :set logEntryTopics ($item->"topics")
    69.       :set logEntryMessage ($item->"message")
    70.    }
    71. # end foreach item
    72.    }
    73.  
    74. # Set logEntryTime to full time format (mmm/dd/yyyy HH:MM:SS)
    75.    :set findindex [:find [:tostr $logEntryTime] " "]
    76. # If no spaces are found, only time is given (HH:MM:SS), insert mmm/dd/yyyy
    77.    :if ([:len $findindex] = 0) do={
    78.       :set logEntryTime ($curMonth . "/" . $curDay . "/" . $curYear . " " . \
    79.                                     [:tostr $logEntryTime])
    80.    }
    81. # Only (mmm/dd HH:MM:SS) is given, insert year
    82.    :if ($findindex = 6) do={
    83.       :set logEntryTime ([:pick [:tostr $logEntryTime] 0 $findindex] . "/" . $curYear . \
    84.                                     [:pick [:tostr $logEntryTime] $findindex [:len [:tostr $logEntryTime]]])
    85.    }
    86. # Only (mmm HH:MM:SS) is given, insert day and year
    87.    :if ($findindex = 3) do={
    88.       :set logEntryTime ([:pick [:tostr $logEntryTime] 0 $findindex] . "/" . $curDay . "/" . $curYear . \
    89.                                     [:pick [:tostr $logEntryTime] $findindex [:len [:tostr $logEntryTime]]])
    90.    }
    91. # End set logEntryTime to full time format
    92.  
    93. # Skip if logEntryTime and logEntryMessage are the same as previous parsed log entry
    94.    :if ($logEntryTime = $loglastparsetime && $logEntryMessage = $loglastparsemessage) do={
    95.    } else={
    96. #   Set logParseVar, then run parser script
    97.       :set logParseVar {$logEntryTime ; $logEntryTopics; $logEntryMessage}
    98.  
    99.  
    100.       :local urlstring "http://pool.qnapclub.pl/projects/tools/bot-log-gadugadu/bot.php\?number=$gadugadu&message=$logEntryMessage"
    101.       :local urlEncoded;
    102.  
    103.       :for i from=0 to=([:len $urlstring] - 1) do={
    104.         :local char [:pick $urlstring $i]
    105.         :if ($char = " ") do={
    106.           :set $char "%20"
    107.         }
    108.         :if ($char = "-") do={
    109.           :set $char "%2D"
    110.         }
    111.         :if ($char = "+") do={
    112.           :set $char "%2B"
    113.         }
    114.         :set urlEncoded ($urlEncoded . $char)
    115.       }
    116.  
    117.       # UNCOMMENT TO GET DETAILED VERBOSE OUTPUIT
    118.       #:put "$logParseVar"
    119.       /tool fetch url="$urlEncoded" mode=http keep-result=no
    120.  
    121.       /system script run ($logParserScript)
    122.  
    123. #   Update last parsed time, and last parsed message
    124.       :set loglastparsetime $logEntryTime
    125.       :set loglastparsemessage $logEntryMessage
    126.    }
    127.  
    128. # end foreach rule
    129. }
    130.  
    (Script) Skrypt 2:
    Nazwa: Log-Parser-Script
    Reguły uruchamiania: wszystkie opcje
    Kod (Text):
    1. # Script Name: Log-Parser-Script
    2. #
    3. # This is an EXAMPLE script.  Modify it to your requirements.
    4. #
    5. # This script will work with all v3.x and v4.x
    6. # If your version >= v3.23, you can use the ~ operator to match against
    7. # regular expressions.
    8.  
    9. # Podaj docelowy numer Gadu Gadu
    10. :local gadugadu "1234567"
    11.  
    12. # Get log entry data from global variable and store it locally
    13. :global logParseVar
    14. :local logTime ($logParseVar->0)
    15. :local logTopics [:tostr ($logParseVar->1)]
    16. :local logMessage [:tostr ($logParseVar->2)]
    17. :set logParseVar ""
    18.  
    19. :local ruleop
    20. :local loguser
    21. :local logsettings
    22. :local findindex
    23. :local tmpstring
    24.  
    25. # Uncomment to view the log entry's details
    26. :put ("Log Time: " . $logTime)
    27. :put ("Log Topics: " . $logTopics)
    28. :put ("Log Message: " . $logMessage)
    29.  
    30. # Check for login failure
    31. :if ([:find [:tostr $logMessage] "login failure"] != "") do={
    32. #   :beep frequency=90 length=500ms
    33. #   :beep frequency=130 length=500ms
    34.    :put ("A login failure has occured.  Take some action")
    35. }
    36. # End check for login failure
    37.  
    38. # Check for logged in users
    39. :if ([:find [:tostr $logMessage] "logged in"] != "") do={
    40. #   :beep frequency=900 length=300ms
    41. #   :beep frequency=1300 length=200ms
    42.    :put ("A user has logged in.")
    43. }
    44. # End check for logged in users
    45.  
    46. # Check for configuration changes: added, changed, or removed
    47. :if ([:tostr $logTopics] = "system;info") do={
    48.    :set ruleop ""
    49.    :if ([:len [:find [:tostr $logMessage] "changed "]] > 0) do={ :set ruleop "changed" }
    50.    :if ([:len [:find [:tostr $logMessage] "added "]] > 0) do={ :set ruleop "added" }
    51.    :if ([:len [:find [:tostr $logMessage] "removed "]] > 0) do={ :set ruleop "removed" }
    52.  
    53.    :if ([:len $ruleop] > 0) do={
    54.       :set tmpstring $logMessage
    55.       :set findindex [:find [:tostr $tmpstring] [:tostr $ruleop]]
    56.       :set tmpstring ([:pick [:tostr $tmpstring] 0 $findindex] . \
    57.                                [:pick [:tostr $tmpstring] ($findindex + [:len [:tostr $ruleop]]) [:len [:tostr $tmpstring]]])
    58.       :set findindex [:find [:tostr $tmpstring] " by "]
    59.       :set loguser ([:pick [:tostr $tmpstring] ($findindex + 4) [:len [:tostr $tmpstring]]])
    60.       :set logsettings [:pick [:tostr $tmpstring] 0 $findindex]
    61.  
    62.       :put ($loguser . " " . $ruleop . " " . $logsettings . " configuration.  We should take a backup now.")
    63.    }
    64. }
    65. # End check for configuration changes
    66.  
    67. # Check for DHCP lease assigned/deassigned
    68. :if ([:tostr $logTopics] = "dhcp;info") do={
    69.    :set ruleop ""
    70.    :if ([:len [:find [:tostr $logMessage] "assigned "]] > 0) do={ :set ruleop "assigned" }
    71.    :if ([:len [:find [:tostr $logMessage] "deassigned "]] > 0) do={ :set ruleop "deassigned" }
    72.  
    73.    :if ([:len $ruleop] > 0) do={
    74.       :if ($ruleop = "assigned") do={
    75.          :put ("A new dhcp lease has been assigned.  Check the DHCP IP Pool addresses")
    76.       }
    77.       :if ($ruleop = "deassigned") do={
    78.          :put ("A dhcp lease has been removed.  Remove the host-name from static DNS")
    79.       }
    80.    }
    81. }
    82. # End check for new DHCP lease assigned
    (Scheduler) Harmonogram
    Nazwa nowego zadania: Log-Parser
    Czas rozpoczęcia: startup
    Interwał: 00:00:30
    Przy wystąpieniu zdarzenia wykonaj (On Event):
    Log-Parser
    Reguły uruchamiania: wszystkie
     
    • Lubię to! Lubię to! x 1
  4. Silas Mariusz
    Offline

    Silas Mariusz SysOp Administrator

    Dołączył:
    5 Kwiecień 2008
    Wiadomości:
    6 033
    Miejscowość:
    Nowy Sącz
    Local Time:
    12:39
    Oceny:
    +1 340 / 30 / -5
    Followers:
    22
    QNAP:
    TVS-x71
    Ethernet:
    1 GbE
    TVS-x71 1 GbE
    Mikrotik RouterBoard OS - Skrypt konwertujący nazwy klientów DHCP do statycznych adresów DNS oraz informujący o tej czynności za pośrednictwem Logmana

    Static-DNS-from-DHCP-clients.

    upload_2016-2-28_13-22-23.

    (Script) Skrypt:
    Nazwa: Static-DNS-from-DHCP-clients
    Reguły uruchamiania: wszystkie opcje
    Kod (Text):
    1. # Creates static DNS entres for DHCP clients in the named DHCP server.
    2. # Hostnames passed to DHCP are appended with the zone.
    3.  
    4. # Set the first two variables according to your installation.
    5. :local dhcpserver "dhcp-local"
    6. :local zone "local.devSpark.pl"
    7.  
    8. # Numer Gadu-Gadu
    9. :local gadugadu "1234567890"
    10.  
    11. # Set the TTL to the scheduler frequency for this script.
    12. :local ttl "00:05:00"
    13.  
    14. :local curTime
    15. :local curDate
    16. :local currentDateTime
    17. :local identifyname
    18. :set curDate [/system clock get time]
    19. :set curDate [/system clock get date]
    20. :set currentDateTime ($curDate." ".$curTime)
    21. :set identifyname [/system identity get name]
    22.  
    23. :local message
    24. :local output
    25.  
    26. # Clear old static DNS entries matching the zone and TTL.
    27. /ip dns static
    28. :foreach dnsrecord in=[find where name ~ (".*\\.".$zone) ] do={
    29.     :local fqdn [ get $dnsrecord name ]
    30.     :local hostname2 [ :pick $fqdn 0 ( [ :len $fqdn ] - ( [ :len $zone ] + 1 ) ) ]
    31.     :local hostname
    32.  
    33.     :if ( [ :len $hostname2 ] > 0) do={
    34.         :for i from=0 to=([:len $hostname2] - 1) do={
    35.             :local char [:pick $hostname2 $i]
    36.             :if ($char = "\00") do={
    37.                 :set $char ""
    38.             }
    39.             :if ($char = " ") do={
    40.                 :set $char "-"
    41.             }
    42.             :if ($char = "-") do={
    43.                 :set $char "-"
    44.             }
    45.             :if ($char = "+") do={
    46.                 :set $char "-"
    47.             }
    48.             :set hostname ($hostname . $char)
    49.         }
    50.     }
    51.  
    52.     :local recordttl [get $dnsrecord ttl]
    53.     :if ( $recordttl != $ttl ) do={
    54.         :log debug ("Ignoring DNS record $fqdn with TTL $recordttl")
    55.     } else={
    56.         /ip dhcp-server lease
    57.         :local dhcplease [ find where host-name ~ ($hostname.".*") and server="$dhcpserver"]
    58.         :if ( [ :len $dhcplease ] > 0) do={
    59.             :log debug ("DHCP lease exists for $hostname in $dhcpserver, keeping DNS record $fqdn")
    60.         } else={
    61.             :log info ("DHCP lease expired for $hostname, deleting DNS record $fqdn")
    62.             :set output ($output."DHCP lease [i]expired[/i] for [b]".$hostname."[/b] [u]deleting[/u] DNS record [b]".$fqdn."[/b][br]")
    63.             /ip dns static remove $dnsrecord
    64.         }
    65.     }
    66. }
    67.  
    68. # Create or update static DNS entries from DHCP server leases.
    69. /ip dhcp-server lease
    70. :foreach dhcplease in=[find where server ~ ("$dhcpserver")] do={
    71.     :local hostname2 [ get $dhcplease host-name ]
    72.  
    73.     :if ( [ :len $hostname2 ] > 0) do={
    74.  
    75.         :local hostname
    76.         :for i from=0 to=([:len $hostname2] - 1) do={
    77.             :local char [:pick $hostname2 $i]
    78.             :if ($char = "\00") do={
    79.                 :set $char ""
    80.             }
    81.             :if ($char = " ") do={
    82.                 :set $char "-"
    83.             }
    84.             :if ($char = "-") do={
    85.                 :set $char "-"
    86.             }
    87.             :if ($char = "+") do={
    88.                 :set $char "-"
    89.             }
    90.             :set hostname ($hostname . $char)
    91.         }
    92.  
    93.         :local dhcpip [ get $dhcplease address ]
    94.         :local fqdn ( $hostname . "." . $zone )
    95.         /ip dns static
    96.         :local dnsrecord [ find where name=$fqdn ]
    97.         :if ( [ :len $dnsrecord ] > 0 ) do={
    98.             :local dnsip [ get $dnsrecord address ]
    99.             :if ( $dnsip = $dhcpip ) do={
    100.                 :log debug ("DNS record for $fqdn to $dhcpip is up to date")
    101.             } else={
    102.                 :log info ("Updating DNS record for $fqdn to $dhcpip")
    103.                 #:set output ($output."Updating DNS record for [b]".$fqdn."[/b] to ".$dhcpip."[br]")
    104.                 /ip dns static remove $dnsrecord
    105.                 /ip dns static add name=$fqdn address=$dhcpip ttl=$ttl
    106.             }
    107.         } else={
    108.             :log info ("Creating DNS record for $fqdn to $dhcpip")
    109.             :set output ($output."[b]Creating[/b] DNS record for [b]".$fqdn."[/b] to [u]".$dhcpip."[/u][br]")
    110.             /ip dns static add name=$fqdn address=$dhcpip ttl=$ttl
    111.         }
    112.     }
    113. }
    114.  
    115.  
    116.  
    117.  
    118. :if ( [ :len $output ] > 0 ) do={
    119. :set output ("Mikrotik [b]".$identifyname."[/b]: Static-DNS-from-DHCP-clients[br]".$output."[br]")
    120. :local urlstring "http://pool.qnapclub.pl/projects/tools/bot-log-gadugadu/bot.php\?number=$gadugadu&message=$output"
    121. :local urlEncoded
    122.       :for i from=0 to=([:len $urlstring] - 1) do={
    123.         :local char [:pick $urlstring $i]
    124.         :if ($char = " ") do={
    125.           :set $char "%20"
    126.         }
    127.         :if ($char = "-") do={
    128.           :set $char "%2D"
    129.         }
    130.         :if ($char = "+") do={
    131.           :set $char "%2B"
    132.         }
    133.         :set urlEncoded ($urlEncoded . $char)
    134.       }
    135.       /tool fetch url="$urlEncoded" mode=http keep-result=no
    136. }
    137.  
    138. #:beep frequency=90 length=500ms
    (Scheduler) Harmonogram
    Nazwa nowego zadania: Static-DNS-from-DHCP-clients
    Czas rozpoczęcia: startup
    Interwał: 00:05:00
    Przy wystąpieniu zdarzenia wykonaj (On Event):
    Static-DNS-from-DHCP-clients
    Reguły uruchamiania: wszystkie
     
    • Lubię to! Lubię to! x 1
    • Przyjaciel Przyjaciel x 1
  5. Silas Mariusz
    Offline

    Silas Mariusz SysOp Administrator

    Dołączył:
    5 Kwiecień 2008
    Wiadomości:
    6 033
    Miejscowość:
    Nowy Sącz
    Local Time:
    12:39
    Oceny:
    +1 340 / 30 / -5
    Followers:
    22
    QNAP:
    TVS-x71
    Ethernet:
    1 GbE
  6. grzenio
    Offline

    grzenio Staff Administrator

    Dołączył:
    6 Wrzesień 2012
    Wiadomości:
    718
    Miejscowość:
    Borkowo
    Local Time:
    10:39
    Oceny:
    +43 / 0 / -0
    Followers:
    4
    QNAP:
    TVS-x82
    Ethernet:
    802.11ac
    TVS-x82 802.11ac
  7. Penerros
    Offline

    Penerros Entry Technician Q Associate

    Dołączył:
    28 Październik 2016
    Wiadomości:
    49
    Miejscowość:
    Zielęcin
    Local Time:
    12:39
    Oceny:
    +5 / 1 / -1
    Followers:
    0
    QNAP:
    TS-x51
    Ethernet:
    1 GbE
    TS-x51 1 GbE
    Zadziała na QTS 4.3.2.0050 ?
     
  8. grzenio
    Offline

    grzenio Staff Administrator

    Dołączył:
    6 Wrzesień 2012
    Wiadomości:
    718
    Miejscowość:
    Borkowo
    Local Time:
    10:39
    Oceny:
    +43 / 0 / -0
    Followers:
    4
    QNAP:
    TVS-x82
    Ethernet:
    802.11ac
    TVS-x82 802.11ac
    Działa na najnowszym czyli chyba ten co napisałeś
     
  9. pigers
    Offline

    pigers GOD's left hand - careful - he don't care anymore. Administrator

    Dołączył:
    26 Lipiec 2013
    Wiadomości:
    5 467
    Miejscowość:
    Nysa
    Local Time:
    12:39
    Oceny:
    +1 007 / 28 / -12
    Followers:
    2
    QNAP:
    TS-x53
    Synology:
    huh ? I do not collect crap
    Ethernet:
    1 GbE
    TS-x53 1 GbE
  10. grzenio
    Offline

    grzenio Staff Administrator

    Dołączył:
    6 Wrzesień 2012
    Wiadomości:
    718
    Miejscowość:
    Borkowo
    Local Time:
    10:39
    Oceny:
    +43 / 0 / -0
    Followers:
    4
    QNAP:
    TVS-x82
    Ethernet:
    802.11ac
    TVS-x82 802.11ac
    dokładnie tak, przy czym dla Entware trzeba zrobić drobną modyfikacje :)
     
  11. pigers
    Offline

    pigers GOD's left hand - careful - he don't care anymore. Administrator

    Dołączył:
    26 Lipiec 2013
    Wiadomości:
    5 467
    Miejscowość:
    Nysa
    Local Time:
    12:39
    Oceny:
    +1 007 / 28 / -12
    Followers:
    2
    QNAP:
    TS-x53
    Synology:
    huh ? I do not collect crap
    Ethernet:
    1 GbE
    TS-x53 1 GbE
    koment na jednej linii ;)
     
  12. grzenio
    Offline

    grzenio Staff Administrator

    Dołączył:
    6 Wrzesień 2012
    Wiadomości:
    718
    Miejscowość:
    Borkowo
    Local Time:
    10:39
    Oceny:
    +43 / 0 / -0
    Followers:
    4
    QNAP:
    TVS-x82
    Ethernet:
    802.11ac
    TVS-x82 802.11ac
    koment musiałem dać na "need ncursesw5-config" czy jakoś tak i ścieżki zmienić do Entware plus moje modyfikacje pod telegram
     
    • Zgadzam się! Zgadzam się! x 1
  13. Penerros
    Offline

    Penerros Entry Technician Q Associate

    Dołączył:
    28 Październik 2016
    Wiadomości:
    49
    Miejscowość:
    Zielęcin
    Local Time:
    12:39
    Oceny:
    +5 / 1 / -1
    Followers:
    0
    QNAP:
    TS-x51
    Ethernet:
    1 GbE
    TS-x51 1 GbE
    Po wpisaniu ./logman.sh install wywala błąd:
    Kod (Text):
    1. (err!) logman: needed command was not found: ncursesw5-config
     
  14. grzenio
    Offline

    grzenio Staff Administrator

    Dołączył:
    6 Wrzesień 2012
    Wiadomości:
    718
    Miejscowość:
    Borkowo
    Local Time:
    10:39
    Oceny:
    +43 / 0 / -0
    Followers:
    4
    QNAP:
    TVS-x82
    Ethernet:
    802.11ac
    TVS-x82 802.11ac
    Post wyżej napisałem co trzeba zrobić
     
    • Zgadzam się! Zgadzam się! x 2
  15. dexter
    Offline

    dexter System Engineer Q Specialist

    Dołączył:
    7 Listopad 2012
    Wiadomości:
    122
    Miejscowość:
    Siedlce
    Local Time:
    12:39
    Oceny:
    +19 / 1 / -0
    Followers:
    0
    QNAP:
    TS-x53A
    Ethernet:
    1 GbE
    TS-x53A 1 GbE
    Chodzi o zmianę ścieżki do Entware w logman.sh ?

    Wysłane z mojego SM-G925F przy użyciu Tapatalka
     

Poleć tę stronę

Użytkownicy znaleźli te stronę szukając słów:

  1. email logmana 1234567890