64 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| if [[ "$1" =~ ^refresh ]]; then
 | |
|   ip=$(echo "$1" | cut -d '/' -f2)
 | |
| 
 | |
|   body="{\n\"time\": \"$(date +%T)\",\n"
 | |
|   body+="\"status\": \"unknown\"\n}\n"
 | |
| 
 | |
| cat <<EOF
 | |
| $($BASHSERV_DIR/header.sh -t "application/json" -l $(echo -ne "$body" | wc -c))
 | |
| $(echo -ne $body)
 | |
| EOF
 | |
| 
 | |
|   echo -ne "$body" > status/$ip
 | |
| 
 | |
|   ret=1
 | |
|   for i in {0..30}; do
 | |
|     ping -c 1 -w 5 -t 1 -q "$ip"
 | |
|     ret=$?
 | |
|     [ $ret -eq 0 ] && break
 | |
|   done
 | |
| 
 | |
|   echo -e "{\n\"time\": \"$(date +%T)\"," > status/$ip
 | |
| 
 | |
|   if [ $ret -eq 0 ]; then
 | |
|     echo -e "\"status\": \"up\"\n}\n" >> status/$ip
 | |
|   else
 | |
|     echo -e "\"status\": \"down\"\n}\n" >> status/$ip
 | |
|   fi
 | |
|   exit 0
 | |
| fi
 | |
| 
 | |
| if [[ "$1" =~ ^status ]]; then
 | |
|   ip=$(echo "$1" | cut -d '/' -f2)
 | |
| 
 | |
|   if [ ! -r "status/$ip" ]; then
 | |
|     body="{\n\"status\": \"unknown\"\n}\n"
 | |
|   else
 | |
|     body=$(cat status/$ip)
 | |
|   fi
 | |
| 
 | |
| cat <<EOF
 | |
| $($BASHSERV_DIR/header.sh -t "application/json" -l $(echo -e "$body" | wc -c))
 | |
| $body
 | |
| EOF
 | |
|   exit 0
 | |
| fi
 | |
| 
 | |
| if [[ "$1" =~ ^wol ]]; then
 | |
|   mac=$(echo "$1" | cut -d '/' -f2)
 | |
| 
 | |
|   wol "$mac" > /dev/null
 | |
|   body="{\"response\": \"ok\"}\n"
 | |
| 
 | |
| cat <<EOF
 | |
| $($BASHSERV_DIR/header.sh -t "application/json" -l $(echo -ne "$body" | wc -c))
 | |
| $(echo -ne $body)
 | |
| EOF
 | |
| 
 | |
|   exit 0
 | |
| fi
 | |
| 
 | |
| exit 1
 |