1*9b9e7d36SAlexander Kapshuk#!/bin/awk -f 2*9b9e7d36SAlexander Kapshuk# Before running this script please ensure that your PATH is 3*9b9e7d36SAlexander Kapshuk# typical as you use for compilation/installation. I use 4*9b9e7d36SAlexander Kapshuk# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may 5*9b9e7d36SAlexander Kapshuk# differ on your system. 6*9b9e7d36SAlexander Kapshuk 7*9b9e7d36SAlexander KapshukBEGIN { 8*9b9e7d36SAlexander Kapshuk usage = "If some fields are empty or look unusual you may have an old version.\n" 9*9b9e7d36SAlexander Kapshuk usage = usage "Compare to the current minimal requirements in Documentation/Changes.\n" 10*9b9e7d36SAlexander Kapshuk print usage 11*9b9e7d36SAlexander Kapshuk 12*9b9e7d36SAlexander Kapshuk system("uname -a") 13*9b9e7d36SAlexander Kapshuk printf("\n") 14*9b9e7d36SAlexander Kapshuk 15*9b9e7d36SAlexander Kapshuk printversion("GNU C", version("gcc -dumpversion 2>&1")) 16*9b9e7d36SAlexander Kapshuk printversion("GNU Make", version("make --version 2>&1")) 17*9b9e7d36SAlexander Kapshuk printversion("Binutils", version("ld -v 2>&1")) 18*9b9e7d36SAlexander Kapshuk printversion("Util-linux", version("mount --version 2>&1")) 19*9b9e7d36SAlexander Kapshuk printversion("Mount", version("mount --version 2>&1")) 20*9b9e7d36SAlexander Kapshuk printversion("Module-init-tools", version("depmod -V 2>&1")) 21*9b9e7d36SAlexander Kapshuk printversion("E2fsprogs", version("tune2fs 2>&1")) 22*9b9e7d36SAlexander Kapshuk printversion("Jfsutils", version("fsck.jfs -V 2>&1")) 23*9b9e7d36SAlexander Kapshuk printversion("Reiserfsprogs", version("reiserfsck -V 2>&1")) 24*9b9e7d36SAlexander Kapshuk printversion("Reiser4fsprogs", version("fsck.reiser4 -V 2>&1")) 25*9b9e7d36SAlexander Kapshuk printversion("Xfsprogs", version("xfs_db -V 2>&1")) 26*9b9e7d36SAlexander Kapshuk printversion("Pcmciautils", version("pccardctl -V 2>&1")) 27*9b9e7d36SAlexander Kapshuk printversion("Pcmcia-cs", version("cardmgr -V 2>&1")) 28*9b9e7d36SAlexander Kapshuk printversion("Quota-tools", version("quota -V 2>&1")) 29*9b9e7d36SAlexander Kapshuk printversion("PPP", version("pppd --version 2>&1")) 30*9b9e7d36SAlexander Kapshuk printversion("Isdn4k-utils", version("isdnctrl 2>&1")) 31*9b9e7d36SAlexander Kapshuk printversion("Nfs-utils", version("showmount --version 2>&1")) 32*9b9e7d36SAlexander Kapshuk 33*9b9e7d36SAlexander Kapshuk if (system("test -r /proc/self/maps") == 0) { 34*9b9e7d36SAlexander Kapshuk while (getline <"/proc/self/maps" > 0) { 35*9b9e7d36SAlexander Kapshuk n = split($0, procmaps, "/") 36*9b9e7d36SAlexander Kapshuk if (/libc.*so$/ && match(procmaps[n], /[0-9]+([.]?[0-9]+)+/)) { 37*9b9e7d36SAlexander Kapshuk ver = substr(procmaps[n], RSTART, RLENGTH) 38*9b9e7d36SAlexander Kapshuk printversion("Linux C Library", ver) 39*9b9e7d36SAlexander Kapshuk break 40*9b9e7d36SAlexander Kapshuk } 41*9b9e7d36SAlexander Kapshuk } 42*9b9e7d36SAlexander Kapshuk } 43*9b9e7d36SAlexander Kapshuk 44*9b9e7d36SAlexander Kapshuk printversion("Dynamic linker (ldd)", version("ldd --version 2>&1")) 45*9b9e7d36SAlexander Kapshuk 46*9b9e7d36SAlexander Kapshuk while ("ldconfig -p 2>/dev/null" | getline > 0) { 47*9b9e7d36SAlexander Kapshuk if (/(libg|stdc)[+]+\.so/) { 48*9b9e7d36SAlexander Kapshuk libcpp = $NF 49*9b9e7d36SAlexander Kapshuk break 50*9b9e7d36SAlexander Kapshuk } 51*9b9e7d36SAlexander Kapshuk } 52*9b9e7d36SAlexander Kapshuk if (system("test -r " libcpp) == 0) 53*9b9e7d36SAlexander Kapshuk printversion("Linux C++ Library", version("readlink " libcpp)) 54*9b9e7d36SAlexander Kapshuk 55*9b9e7d36SAlexander Kapshuk printversion("Procps", version("ps --version 2>&1")) 56*9b9e7d36SAlexander Kapshuk printversion("Net-tools", version("ifconfig --version 2>&1")) 57*9b9e7d36SAlexander Kapshuk printversion("Kbd", version("loadkeys -V 2>&1")) 58*9b9e7d36SAlexander Kapshuk printversion("Console-tools", version("loadkeys -V 2>&1")) 59*9b9e7d36SAlexander Kapshuk printversion("Oprofile", version("oprofiled --version 2>&1")) 60*9b9e7d36SAlexander Kapshuk printversion("Sh-utils", version("expr --v 2>&1")) 61*9b9e7d36SAlexander Kapshuk printversion("Udev", version("udevadm --version 2>&1")) 62*9b9e7d36SAlexander Kapshuk printversion("Wireless-tools", version("iwconfig --version 2>&1")) 63*9b9e7d36SAlexander Kapshuk 64*9b9e7d36SAlexander Kapshuk if (system("test -r /proc/modules") == 0) { 65*9b9e7d36SAlexander Kapshuk while ("sort /proc/modules" | getline > 0) { 66*9b9e7d36SAlexander Kapshuk mods = mods sep $1 67*9b9e7d36SAlexander Kapshuk sep = " " 68*9b9e7d36SAlexander Kapshuk } 69*9b9e7d36SAlexander Kapshuk printversion("Modules Loaded", mods) 70*9b9e7d36SAlexander Kapshuk } 71*9b9e7d36SAlexander Kapshuk} 72*9b9e7d36SAlexander Kapshuk 73*9b9e7d36SAlexander Kapshukfunction version(cmd, ver) { 74*9b9e7d36SAlexander Kapshuk while (cmd | getline > 0) { 75*9b9e7d36SAlexander Kapshuk if (!/ver_linux/ && match($0, /[0-9]+([.]?[0-9]+)+/)) { 76*9b9e7d36SAlexander Kapshuk ver = substr($0, RSTART, RLENGTH) 77*9b9e7d36SAlexander Kapshuk break 78*9b9e7d36SAlexander Kapshuk } 79*9b9e7d36SAlexander Kapshuk } 80*9b9e7d36SAlexander Kapshuk close(cmd) 81*9b9e7d36SAlexander Kapshuk return ver 82*9b9e7d36SAlexander Kapshuk} 83*9b9e7d36SAlexander Kapshuk 84*9b9e7d36SAlexander Kapshukfunction printversion(name, value, ofmt) { 85*9b9e7d36SAlexander Kapshuk if (value != "") { 86*9b9e7d36SAlexander Kapshuk ofmt = "%-20s\t%s\n" 87*9b9e7d36SAlexander Kapshuk printf(ofmt, name, value) 88*9b9e7d36SAlexander Kapshuk } 89*9b9e7d36SAlexander Kapshuk} 90