Server Online Status Watchdog for MacOS

From NAT, 6 Years ago, written in Bash, viewed 856 times.
URL https://code.nat.moe/view/fa904a57 Embed
Download Paste or View Raw
  1. #!/bin/bash
  2. function init_interactive {
  3.         rm watchdogjobs.pid > /dev/null 2> /dev/null
  4.         touch watchdogjobs.pid > /dev/null 2> /dev/null
  5.         INTERACTIVE=true
  6. }
  7. function wrapthekill {
  8. trap 'exit' 1 2 3 15
  9. }
  10. function processor {
  11.         HOSTUP=false
  12.         echo $$ >> watchdogjobs.pid
  13.         showstatus $2 offline
  14.         while true
  15.         do
  16.                 RAWREPLY=$(ping -c 1 $1 2> /dev/null)
  17.                 REPLY=$(echo $RAWREPLY | grep from)
  18.                 if [[ ! -z $REPLY ]]
  19.                 then
  20.                         if [[ $HOSTUP == "false" ]]
  21.                         then
  22.                                 echo -ne "\a"
  23.                                 showstatus $2 online
  24.                                 HOSTUP=true
  25.                         fi
  26.                 else
  27.                         if [[ $HOSTUP == "true" ]]
  28.                         then
  29.                                 echo -ne "\a"
  30.                                 showstatus $2 offline
  31.                                 HOSTUP=false
  32.                         fi     
  33.                 fi
  34.         done
  35. }
  36. function smbsolver {
  37.         smbutil lookup $1 | grep IP | awk -F": " '{print $2}'
  38. }
  39. function showstatus {
  40.         echo "[$(date) $$] Host $1 $2"
  41. }
  42. function action {
  43.         processor $1 $1
  44. }
  45. function smb_action {
  46.         processor $(smbsolver $1) $1
  47. }
  48. function this {
  49.         case $1 in
  50.                 -s|--smb|--netbios|--nb)
  51.                         smb_action $2
  52.                         ;;
  53.                 *)
  54.                         action $*
  55.                         ;;
  56.         esac
  57. }
  58. function new {
  59.         if [[ $INTERACTIVE != "true" ]]
  60.         then
  61.                 echo "[$(date) $$] Can't use new in non-interactive mode"
  62.         else
  63.                 if [[ ! -z $*  ]]
  64.                 then
  65.                         $0 $* &
  66.                 fi
  67.         fi
  68. }
  69. function help {
  70.         case $1 in
  71.                 action)
  72.                         echo "Usage: action IP"
  73.                         echo "Start a new watchdog job using given IP address."
  74.                 ;;
  75.                 new)
  76.                         echo "Usage: new arguement [options]"
  77.                         echo "Start a new watchdog process and process given argument, argument can be any one of avaliable command"
  78.                 ;;
  79.                 processor)
  80.                         echo "Usage: processor IP DISPLAY_NAME"
  81.                         echo "Start a new watchdog job using given IP addesss and Display name."
  82.                 ;;
  83.                 showstatus)
  84.                         echo "Usage: showstatus HOST STATUS"
  85.                         echo "Internal function. Using to display online/offline of a host."
  86.                 ;;
  87.                 this)
  88.                         echo "Usage: this [-s|--smb|--netbios|--nb]"
  89.                         echo "Call current watchdog process to preform given job."
  90.                 ;;
  91.                 smb_action)
  92.                         echo "Usage: smb_action NETBIOS_NAME"
  93.                         echo "Start a new watchdog job using given NETBIOS/Samba hostname."
  94.                 ;;
  95.                 smbsolver)
  96.                         echo "Usage: smbsolver NETBIOS_NAME"
  97.                         echo "Resolve NETBIOS/Samba hostname to IP address."
  98.                 ;;
  99.                 *)
  100.                         echo "No such help topic found."
  101.                         echo "Avaliable helps are: action, help, new, processor, showstatus, this, smb_action, smbslover"
  102.                 ;;
  103.         esac
  104. }
  105. function exit {
  106.         echo "[$(date) $$] Send SIGKILL to all jobs..."
  107.         for pid in $(cat watchdogjobs.pid)
  108.         do
  109.                 kill -9 $pid
  110.         done
  111.         rm watchdogjobs.pid
  112.         echo "[$(date) $$] Send SIGKILL to self..."
  113.         kill -9 $$
  114. }
  115. wrapthekill
  116. if [[ ! -z $* ]]
  117. then
  118.         $*
  119. else
  120.         init_interactive
  121.         echo "Watchdog 0.1 (interactive mode) - (C) MagicNAT 2014"
  122.         echo "Available commands: action, help, new, processor, showstatus, this, smb_action, smbslover"
  123.         while true
  124.         do
  125.                 echo -n "[$(pwd)] watchdog-$$> "
  126.                 read cmd;$cmd;
  127.         done
  128. fi

Replies to Server Online Status Watchdog for MacOS rss

Title Name Language When
Re: Server Online Status Watchdog for MacOS NAT bash 6 Years ago.

Reply to "Server Online Status Watchdog for MacOS"

Here you can reply to the paste above

captcha