44 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # POWER STATUS
 | |
| 
 | |
| for device in $(smartctl --scan -d scsi | cut -d' ' -f1)
 | |
| do
 | |
|   output=$(smartctl -n standby -i $device)
 | |
|   exitstatus=$?
 | |
|   unset power_level
 | |
|   
 | |
|   # maybe find out power state by trying through all states and check when
 | |
|   # it stops exiting 2, sarting with deepest.
 | |
| 
 | |
|   if $(echo $output | grep -q "Power mode is:")
 | |
|   then
 | |
|     power_level=2
 | |
|   elif $(echo $output | grep -q "Power mode was:")
 | |
|   then
 | |
|     power_level=1
 | |
|   elif [[ $exitstatus == 2 ]]
 | |
|   then
 | |
|     power_level=0
 | |
|   fi
 | |
|   
 | |
|   if [[ -n $power_level ]]
 | |
|   then
 | |
|     echo "smartctl,host=${node.name},device=$device power_level=$power_level $(date --utc +%s%N)"
 | |
|   fi
 | |
| done
 | |
| 
 | |
| # TEMPS
 | |
| 
 | |
| for device in $(smartctl --scan | cut -d' ' -f1)
 | |
| do
 | |
|   temp=$(smartctl -n standby -A --json=c $device | jq .temperature.current)
 | |
|   
 | |
|   # hdd might be sleeping
 | |
|   if [[ $temp == ?(-)+([0-9]) ]]
 | |
|   then
 | |
|     echo "smartctl,host=${node.name},device=$device temperature=$temp $(date --utc +%s%N)"
 | |
|   fi
 | |
| done
 | |
| 
 | |
| #{"json_format_version":[1,0],"smartctl":{"version":[7,2],"svn_revision":"5155","platform_info":"x86_64-linux-5.10.0-9-amd64","build_info":"(local build)","argv":["smartctl","-n","idle","-A","--json=c","/dev/sdb"],"messages":[{"string":"Device is in IDLE_A mode, exit(2)","severity":"information"}],"exit_status":2},"device":{"name":"/dev/sdb","info_name":"/dev/sdb [SAT]","type":"sat","protocol":"ATA"}}
 |