I would like to fingerprint some Unix (most are Debian) systems. By fingerprinting I mean run a script that collect material identifiers, system version, etc in order to be able to:

  • accurately identify machines
  • discriminate hardware and software modification over machines

I know that a can use couple of commands to track down meta informations such as udev, uname, etc.

My questions are:

  • Is there packages that perform such actions
  • If not what must I collect in order to achieve this accurately.

closed as too broad by Jeff Schaller, GAD3R, techraf, HalosGhost, countermode Nov 15 '16 at 13:56

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • To identify a machine, I've used a command to get the UUID/GUID of the drive. If the drive changes, the computer is (probably) new. Since most server providers use VMs, this will hold true even after a change of hard driver in the raid. – Ismael Miguel Nov 15 '16 at 10:52

On Debian-derived systems, for hardware information use lshw, hwinfo, udevadm, hdparm, inxi (this one needs installing first) etc. To accurately identify machines you may try to use the system serial number, vendor, model, the MAC address of the network controllers, the serial number of the hard disk etc. (You may only try because some machines are virtual...) There is a tutorial with screen shots at http://www.binarytides.com/linux-commands-hardware-info/ and generally Google is not short of suggestions.

You may want to record hostname, uname -a, lsb-release -cdr and /etc/machine-id. Also df may come in handy.

For installed packages use dpkg-query, for example,

dpkg-query --list | grep '^ii' | awk '{print $2 " " $3 " ("$4")"}

produces a list beginning with

a11y-profile-manager-indicator 0.1.10-0ubuntu3 (amd64)
account-plugin-facebook 0.12+16.04.20160126-0ubuntu1 (all)
account-plugin-flickr 0.12+16.04.20160126-0ubuntu1 (all)
account-plugin-google 0.12+16.04.20160126-0ubuntu1 (all)
accountsservice 0.6.40-2ubuntu11.3 (amd64)
acl 2.2.52-3 (amd64)
... etc. etc. ...

Other Linux variants have their own mechanisms to collect system information, for example Red Hat Enterprise Linux has sosreport.

Most if not all proprietary UNIX systems have dedicated tools to collect system information, including hardware configuration and installed software. For example, HP-UX has a nice /opt/ignite/bin/print_manifest command.

Not the answer you're looking for? Browse other questions tagged or ask your own question.