From f20d85738fc1861a053803460fce38d0fb8118f4 Mon Sep 17 00:00:00 2001 From: Micah David Cochran Date: Mon, 13 Dec 2021 11:26:09 -0600 Subject: [PATCH] add utils/collect_os_info.sh script --- utils/collect_os_info.sh | 94 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100755 utils/collect_os_info.sh diff --git a/utils/collect_os_info.sh b/utils/collect_os_info.sh new file mode 100755 index 00000000..15ea6c3a --- /dev/null +++ b/utils/collect_os_info.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash + +Description="The purpose of this script is to collect system information for bug reports.\n +Submit issues to https://github.com/osm-search/Nominatim/issues" + + +####### Gather the Information ################################################## +# Separate the information gathering from the report generation. Dividing these +# makes it easier to make trivial changes by not have to learn the other portion +# of this script. + +# Nominatium version +# NOTE: Getting this version will NOT work if it is being ran from in another +# folder than Nominatim/utils. It call python3 to import version.py locally and +# prints it in the version format. +NominatimVersion=`cd ../nominatim/ && python3 -c "import version; print('{0[0]}.{0[1]}.{0[2]}-{0[3]}'.format(version.NOMINATIM_VERSION))"` + +# PostgreSQL version +PostgreSQLVersion=`postgres --version` +if [ "$?" -ne "0" ] +then + PostgreSQLVersion="Not installed" +fi + +# - PostGIS version: +# The command for this should look something like this: +# psql -U nominatim -d mydatabase -c 'SELECT PostGIS_full_version();' +# ASSUME the username is nominatim +# This needs to be ran under the account with the appropriate permissions. +# This has been left blank. +PostGISVersion= + +# There are different ways to getting the Linux OS information. +# https://www.cyberciti.biz/faq/how-to-check-os-version-in-linux-command-line/ +# /etc/os-release has a number of representations of the OS +# PRETTY_NAME is pity. +OperatingSystem=`grep '^PRETTY_NAME' /etc/os-release | cut -d'=' -f2` + +RAM=`grep ^MemTotal /proc/meminfo | cut -d':' -f2` + +# In /proc/cupinfo: siblings seems to refer to total cores like hyperthreaded cores. +# The hyperthreaded cores could be included if that is needed. +NumCPUs=`grep '^cpu cores' /proc/cpuinfo | head -1 | cut -d':' -f2` + + +# - type and size of disks: +# could use `sudo fdisk -l` or `mount` to print this, but snaps have made this +# worse than useless with loop devices on Ubuntu. +# `df -h` - show the free space on drives +# `lsblk` - this tell you what the server has not necessarily this machine. So in a container environment +# (like docker) this wouldn't be the correct report. +# This guide shows ways to get various storage device information: https://www.cyberciti.biz/faq/find-hard-disk-hardware-specs-on-linux/ + +# - bare metal/AWS/other cloud service: +# Unsure of how to detect this, but it might be useful for reporting disk storage. +# One options would be to prompt the user something like this: +# Enter system configuration (1) bare metal (2) AWS (3) Other Cloud (4) Docker (5) Other: _ + +# ------ What do these commands do? ------------------------------------------- +# "cut -d':' -f2" command take the line and splits it at the semicolon(:) +# and returns the portion in the second (2nd) "field" +# +# "head -1" returns the first line that matches +# + +####### Print the Markdown Report ###################################################### +# 1>&2 redirects echo to print to stderr instead of stdout + +echo 1>&2 +echo -e $Description 1>&2 +echo Copy and paste or redirect the output of the file: 1>&2 +echo " \$ ./collect_os_info.sh > report.md" 1>&2 +echo 1>&2 + + +echo "**Software Environment (please complete the following information):**" +echo - Nominatim version: $NominatimVersion +echo - PostgreSQL version: $PostgreSQLVersion +echo - PostGIS version: $PostGISVersion +echo - OS: $OperatingSystem +echo +echo + + +echo "**Hardware Configuration (please correct the following information):**" +echo - RAM: $RAM +echo - number of CPUs: $NumCPUs +echo - type and size of disks: +echo - bare metal/AWS/other cloud service: +echo +echo +echo **Postgresql Configuration:** +echo + -- 2.39.5