Advertisement
Guest User

synologist

a guest
Feb 22nd, 2023
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.17 KB | Source Code | 0 0
  1. #!/usr/bin/env bash
  2. #
  3. # synologist
  4. #
  5. # Synology system information.
  6. #
  7.  
  8. # Header array.
  9.  
  10. HEADER=(
  11. 'Basic Information'
  12. 'Hardware'
  13. 'Network'
  14. 'Time'
  15. 'Storage'
  16. )
  17.  
  18. # Field array.
  19.  
  20. FIELD=(
  21. 'Server name:'
  22. 'DSM version:'
  23. 'Serial number:'
  24. 'Model name:'
  25. 'CPU:'
  26. 'Total physical memory:'
  27. 'Ethernet stats (all):'
  28. 'Network stats (active):'
  29. 'System time:'
  30. 'Uptime:'
  31. 'Volume(s):'
  32. )
  33.  
  34. # Display header message.
  35.  
  36. write_header() {
  37.  
  38. name=$1; shift;
  39.  
  40. printf "%s\\n""--------------------\\n$name%s\\n--------------------\\n"
  41. printf "%s\\n" "$@"
  42. }
  43.  
  44. # Fully-qualified domain name.
  45.  
  46. host() {
  47.  
  48. host=$(hostname -f)
  49.  
  50. printf "%s\n" "${FIELD[0]} $host"
  51. }
  52.  
  53. # Extract DSM product version.
  54.  
  55. dsm_version() {
  56.  
  57. dsm=$(awk -F '"' 'NR==6 {print $2}' /etc.defaults/VERSION)
  58.  
  59. printf "%s\n" "${FIELD[1]} $dsm"
  60. }
  61.  
  62. # Synology serial no.
  63.  
  64. serial_number() {
  65.  
  66. serial=$(cat /proc/sys/kernel/syno_serial)
  67.  
  68. printf "%s\n" "${FIELD[2]} $serial"
  69. }
  70.  
  71. # Synology model name.
  72.  
  73. model_name() {
  74.  
  75. model=$(cat /proc/sys/kernel/syno_hw_version)
  76.  
  77. printf "%s\n" "${FIELD[3]} $model"
  78. }
  79.  
  80. # Extract CPU model name.
  81.  
  82. cpu_info() {
  83.  
  84. cpu=$(awk '/model name/ || /Processor/ { sub(/^.*: /, ""); print; exit}' /proc/cpuinfo)
  85.  
  86. printf "%s\n" "${FIELD[4]} $cpu"
  87. }
  88.  
  89. # Total memory (gB) using kB to gB conversion.
  90.  
  91. memory() {
  92.  
  93. gB=$(awk '/MemTotal/ {print $2/1024/1024}' /proc/meminfo)
  94.  
  95. printf "%s\n" "${FIELD[5]} $gB gB"
  96. }
  97.  
  98. # Get MAC address and IP address of ALL Ethernet devices.
  99.  
  100. ethernet_stats() {
  101.  
  102. printf "%s\n" "${FIELD[6]}"
  103.  
  104. for i in $(seq -w 0 5); do
  105.  
  106. if ip addr show eth"$i" > /dev/null 2>&1; then
  107.  
  108. ether=$(ip link show eth$i | awk '/ether/ {print $2}')
  109. inet=$(ip addr show eth$i | awk '/inet / {print $2}')
  110.  
  111. printf "%s\n" "eth$i: $ether $inet"
  112. else
  113. printf "%s\n" "Device \"eth$i\" does not exist."
  114. fi
  115. done
  116. }
  117.  
  118. # Get MAC address and IP address of "UP" Ethernet devices.
  119.  
  120. network_stats() {
  121.  
  122. printf "\n"
  123. printf "%s\n" "${FIELD[7]}"
  124.  
  125. interfaces=$(ip addr show | awk '/eth/ && /state UP/ {print $2| "sort"}')
  126.  
  127. for interface in $interfaces; do
  128.  
  129. mac=$(ip addr show "$interface" | awk '/link\/ether/ {print $2}')
  130. ip=$(ip addr show "$interface" | awk '/inet/ {print $2;exit;}')
  131.  
  132. printf "%s\n" "$interface $mac $ip"
  133. done
  134. }
  135.  
  136. # System (current) time.
  137.  
  138. system_time() {
  139.  
  140. systemtime=$(uptime | awk '{ print $1}')
  141.  
  142. printf "%s\n" "${FIELD[8]} $systemtime"
  143. }
  144.  
  145. # Uptime: days hours:minutes
  146.  
  147. time_up() {
  148.  
  149. timeup=$(uptime |awk -F '[ ,]' ' {print $4, $5, $7}')
  150.  
  151. printf "%s\n" "${FIELD[9]} $timeup"
  152. }
  153.  
  154. # Storage capacity by volume.
  155.  
  156. disk_storage() {
  157.  
  158. storage=$(df -ha /volume* |awk '(NR>1) {print $6, $5, $3, $2}')
  159.  
  160. printf "%s\n" "${FIELD[10]}"
  161. printf "%s\n" "Name Used% Used Total"
  162. printf "%s\n" "$storage"
  163. }
  164.  
  165. # Main.
  166.  
  167. main() {
  168. write_header "${HEADER[0]}"
  169. host
  170. dsm_version
  171. write_header "${HEADER[1]}"
  172. serial_number
  173. model_name
  174. cpu_info
  175. memory
  176. write_header "${HEADER[2]}"
  177. ethernet_stats
  178. network_stats
  179. write_header "${HEADER[3]}"
  180. system_time
  181. time_up
  182. write_header "${HEADER[4]}"
  183. disk_storage
  184. }
  185.  
  186. main "$@"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement