#!/bin/bash # Teal Dulcet # Outputs system information # wget -qO - https://raw.github.com/tdulcet/Linux-System-Information/master/info.sh | bash -s -- # ./info.sh if [[ $# -ne 0 ]]; then echo "Usage: $0" >&2 exit 1 fi # Check if on Linux if ! echo "$OSTYPE" | grep -iq '^linux'; then echo "Error: This script must be run on Linux." >&2 exit 1 fi # toiec toiec() { echo "$(printf "%'d" $(($1 >> 10))) MiB$([[ $1 -ge 1048576 ]] && echo " ($(numfmt --from=iec --to=iec-i "${1}K")B)")" } # tosi tosi() { echo "$(printf "%'d" $(((($1 << 10) / 1000) / 1000))) MB$([[ $1 -ge 1000000 ]] && echo " ($(numfmt --from=iec --to=si "${1}K")B)")" } . /etc/os-release echo -e "\nLinux Distribution:\t\t${PRETTY_NAME:-$ID-$VERSION_ID}" KERNEL=$(> 10))) KiB × ${CPU_NUM_CACHES[$cache]} ($(numfmt --to=iec-i "${CPU_TOTAL_CACHE_SIZES[$cache]}")B)" done fi ARCHITECTURE=$(getconf LONG_BIT) echo -e "Architecture:\t\t\t$HOSTTYPE (${ARCHITECTURE}-bit)" # arch, uname -m MEMINFO=$(/dev/null | awk '$6=="disk"') if [[ -n $DISKS ]]; then DISK_NAMES=($(echo "$DISKS" | awk '{ print $1 }')) DISK_SIZES=($(echo "$DISKS" | awk '{ print $4 }')) echo -e -n "Disk space:\t\t\t" for i in "${!DISK_NAMES[@]}"; do ((i)) && printf '\t\t\t\t' echo -e "${DISK_NAMES[i]}: $(printf "%'d" $((DISK_SIZES[i] >> 20))) MiB$([[ ${DISK_SIZES[i]} -ge 1073741824 ]] && echo " ($(numfmt --to=iec-i "${DISK_SIZES[i]}")B)") ($(printf "%'d" $(((DISK_SIZES[i] / 1000) / 1000))) MB$([[ ${DISK_SIZES[i]} -ge 1000000000 ]] && echo " ($(numfmt --to=si "${DISK_SIZES[i]}")B)"))" done fi for lspci in lspci /sbin/lspci; do if command -v $lspci >/dev/null; then mapfile -t GPU < <($lspci 2>/dev/null | grep -i 'vga\|3d\|2d' | sed -n 's/^.*: //p') break fi done if [[ -n $GPU ]]; then echo -e "Graphics Processor (GPU):\t${GPU[0]}$([[ ${#GPU[*]} -gt 1 ]] && printf '\n\t\t\t\t%s' "${GPU[@]:1}")" fi echo -e "Computer name:\t\t\t$HOSTNAME" # uname -n # hostname # /proc/sys/kernel/hostname if command -v iwgetid >/dev/null; then NETWORKNAME=$(iwgetid -r || true) fi if [[ -n $NETWORKNAME ]]; then echo -e "Network name (SSID):\t\t$NETWORKNAME" fi HOSTNAME_FQDN=$(hostname -f) # hostname -A echo -e "Hostname:\t\t\t$HOSTNAME_FQDN" mapfile -t IPv4_ADDRESS < <(ip -o -4 a show up scope global | awk '{ print $2,$4 }') if [[ -n $IPv4_ADDRESS ]]; then IPv4_INERFACES=($(printf '%s\n' "${IPv4_ADDRESS[@]}" | awk '{ print $1 }')) IPv4_ADDRESS=($(printf '%s\n' "${IPv4_ADDRESS[@]}" | awk '{ print $2 }')) echo -e -n "IPv4 address$([[ ${#IPv4_ADDRESS[*]} -gt 1 ]] && echo "es"):\t\t\t" for i in "${!IPv4_INERFACES[@]}"; do ((i)) && printf '\t\t\t\t' echo -e "${IPv4_INERFACES[i]}: ${IPv4_ADDRESS[i]%/*}" done fi mapfile -t IPv6_ADDRESS < <(ip -o -6 a show up scope global | awk '{ print $2,$4 }') if [[ -n $IPv6_ADDRESS ]]; then IPv6_INERFACES=($(printf '%s\n' "${IPv6_ADDRESS[@]}" | awk '{ print $1 }')) IPv6_ADDRESS=($(printf '%s\n' "${IPv6_ADDRESS[@]}" | awk '{ print $2 }')) echo -e -n "IPv6 address$([[ ${#IPv6_ADDRESS[*]} -gt 1 ]] && echo "es"):\t\t\t" for i in "${!IPv6_INERFACES[@]}"; do ((i)) && printf '\t\t\t\t' echo -e "${IPv6_INERFACES[i]}: ${IPv6_ADDRESS[i]%/*}" done fi # ip -o l show up | grep -v 'loopback' | awk '{ print $2,$(NF-2) }' INERFACES=($(ip -o a show up primary scope global | awk '{ print $2 }' | uniq)) NET_INERFACES=() NET_ADDRESSES=() for inerface in "${INERFACES[@]}"; do file="/sys/class/net/$inerface" if [[ -r "$file/address" ]]; then NET_INERFACES+=("$inerface") NET_ADDRESSES+=("$(<"$file/address")") fi done if [[ -n $NET_INERFACES ]]; then echo -e -n "MAC address$([[ ${#NET_INERFACES[*]} -gt 1 ]] && echo "es"):\t\t\t" for i in "${!NET_INERFACES[@]}"; do ((i)) && printf '\t\t\t\t' echo -e "${NET_INERFACES[i]}: ${NET_ADDRESSES[i]}" done fi if [[ -r /var/lib/dbus/machine-id ]]; then COMPUTER_ID=$(/dev/null | grep -i 'time zone:\|timezone:' | sed -n 's/^.*: //p') # timedatectl show --value -p Timezone if [[ -z $TIME_ZONE ]]; then if [[ -r /etc/timezone ]]; then TIME_ZONE=$(/dev/null && CONTAINER=$(systemd-detect-virt -c); then echo -e "Virtualization container:\t$CONTAINER" fi if command -v systemd-detect-virt >/dev/null && VM=$(systemd-detect-virt -v); then echo -e "Virtual Machine (VM) hypervisor:$VM" fi echo -e "Bash Version:\t\t\t$BASH_VERSION" if [[ -c /dev/tty ]]; then stty raw min 0 time 10