Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- #
- # synologist
- #
- # Synology system information.
- #
- # Header array.
- HEADER=(
- 'Basic Information'
- 'Hardware'
- 'Network'
- 'Time'
- 'Storage'
- )
- # Field array.
- FIELD=(
- 'Server name:'
- 'DSM version:'
- 'Serial number:'
- 'Model name:'
- 'CPU:'
- 'Total physical memory:'
- 'Ethernet stats (all):'
- 'Network stats (active):'
- 'System time:'
- 'Uptime:'
- 'Volume(s):'
- )
- # Display header message.
- write_header() {
- name=$1; shift;
- printf "%s\\n""--------------------\\n$name%s\\n--------------------\\n"
- printf "%s\\n" "$@"
- }
- # Fully-qualified domain name.
- host() {
- host=$(hostname -f)
- printf "%s\n" "${FIELD[0]} $host"
- }
- # Extract DSM product version.
- dsm_version() {
- dsm=$(awk -F '"' 'NR==6 {print $2}' /etc.defaults/VERSION)
- printf "%s\n" "${FIELD[1]} $dsm"
- }
- # Synology serial no.
- serial_number() {
- serial=$(cat /proc/sys/kernel/syno_serial)
- printf "%s\n" "${FIELD[2]} $serial"
- }
- # Synology model name.
- model_name() {
- model=$(cat /proc/sys/kernel/syno_hw_version)
- printf "%s\n" "${FIELD[3]} $model"
- }
- # Extract CPU model name.
- cpu_info() {
- cpu=$(awk '/model name/ || /Processor/ { sub(/^.*: /, ""); print; exit}' /proc/cpuinfo)
- printf "%s\n" "${FIELD[4]} $cpu"
- }
- # Total memory (gB) using kB to gB conversion.
- memory() {
- gB=$(awk '/MemTotal/ {print $2/1024/1024}' /proc/meminfo)
- printf "%s\n" "${FIELD[5]} $gB gB"
- }
- # Get MAC address and IP address of ALL Ethernet devices.
- ethernet_stats() {
- printf "%s\n" "${FIELD[6]}"
- for i in $(seq -w 0 5); do
- if ip addr show eth"$i" > /dev/null 2>&1; then
- ether=$(ip link show eth$i | awk '/ether/ {print $2}')
- inet=$(ip addr show eth$i | awk '/inet / {print $2}')
- printf "%s\n" "eth$i: $ether $inet"
- else
- printf "%s\n" "Device \"eth$i\" does not exist."
- fi
- done
- }
- # Get MAC address and IP address of "UP" Ethernet devices.
- network_stats() {
- printf "\n"
- printf "%s\n" "${FIELD[7]}"
- interfaces=$(ip addr show | awk '/eth/ && /state UP/ {print $2| "sort"}')
- for interface in $interfaces; do
- mac=$(ip addr show "$interface" | awk '/link\/ether/ {print $2}')
- ip=$(ip addr show "$interface" | awk '/inet/ {print $2;exit;}')
- printf "%s\n" "$interface $mac $ip"
- done
- }
- # System (current) time.
- system_time() {
- systemtime=$(uptime | awk '{ print $1}')
- printf "%s\n" "${FIELD[8]} $systemtime"
- }
- # Uptime: days hours:minutes
- time_up() {
- timeup=$(uptime |awk -F '[ ,]' ' {print $4, $5, $7}')
- printf "%s\n" "${FIELD[9]} $timeup"
- }
- # Storage capacity by volume.
- disk_storage() {
- storage=$(df -ha /volume* |awk '(NR>1) {print $6, $5, $3, $2}')
- printf "%s\n" "${FIELD[10]}"
- printf "%s\n" "Name Used% Used Total"
- printf "%s\n" "$storage"
- }
- # Main.
- main() {
- write_header "${HEADER[0]}"
- host
- dsm_version
- write_header "${HEADER[1]}"
- serial_number
- model_name
- cpu_info
- memory
- write_header "${HEADER[2]}"
- ethernet_stats
- network_stats
- write_header "${HEADER[3]}"
- system_time
- time_up
- write_header "${HEADER[4]}"
- disk_storage
- }
- main "$@"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement