180 lines
4.6 KiB
Bash
Executable File
180 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This script creates a file in /tmp and
|
|
# opens it with first visual editor found in a search list for editors
|
|
|
|
# Copyright: 2014
|
|
# Author: Dewey Garrett <dgarrett@panix.com>
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
ofile=/tmp/linuxcnc_info.txt
|
|
PROG=$(basename "$0")
|
|
|
|
usage () {
|
|
cat <<EOF
|
|
$PROG creates file $ofile
|
|
USAGE:
|
|
$PROG [options]
|
|
options:
|
|
-s silent (suppress automatic opening of file)
|
|
-h help
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
git_commit () {
|
|
dir=$(dirname "$0")
|
|
if [ "${dir}" = "/usr/bin" ] ; then
|
|
echo NA
|
|
else
|
|
( cd "$dir" && git rev-parse --short HEAD 2>/dev/null )
|
|
fi
|
|
}
|
|
|
|
# try to find a visual editor to show created file
|
|
# use list with existing preference first, then other common editors
|
|
editors="$VISUAL gedit mousepad geany nedit nano gvim abiword"
|
|
VIEWER=""
|
|
for e in $editors ; do
|
|
if [ -x "$(command -v "$e")" ] ; then
|
|
VIEWER=$e
|
|
break #use first editor found
|
|
fi
|
|
done
|
|
|
|
while getopts hs OPT; do
|
|
case $OPT in
|
|
s) VIEWER="";;
|
|
h) usage;;
|
|
*) usage;;
|
|
esac
|
|
done
|
|
|
|
[ -z "$VIEWER" ] && echo "No VIEWER: output to $ofile"
|
|
|
|
# all subsequent output:
|
|
exec 1>$ofile
|
|
exec 2>&1
|
|
|
|
function show () {
|
|
if [ -z "$1" ] ; then
|
|
echo
|
|
return
|
|
fi
|
|
name=$1
|
|
shift
|
|
value=$*
|
|
printf "%20s: %s\n" "$name" "$value"
|
|
}
|
|
|
|
function parse_cpuinfo () {
|
|
grep "$1" < /proc/cpuinfo | head -1 | cut -d: -f2-
|
|
}
|
|
|
|
function parse_after_colon () {
|
|
echo "$*"|cut -d: -f2-
|
|
}
|
|
|
|
function tryversion () {
|
|
prog="$1"
|
|
if [ "$(command -v "$prog")" ] ; then
|
|
ans=$($prog --version 2>/dev/null)
|
|
if [ -z "$ans" ] ; then
|
|
echo "?"
|
|
else
|
|
echo "$ans"
|
|
fi
|
|
else
|
|
echo "not_in_PATH"
|
|
fi
|
|
}
|
|
|
|
cat <<EOF
|
|
The file: $ofile
|
|
can be posted to a forum or a web site like:
|
|
http://pastebin.com
|
|
in order to provide information about the linuxcnc
|
|
system and configuration.
|
|
|
|
EOF
|
|
|
|
[ -n "$VIEWER" ] && echo "VIEWER=$VIEWER"
|
|
|
|
show " Date" "$(date)"
|
|
show " UTC Date" "$(date -u)"
|
|
show " this program" "$0"
|
|
show " uptime" "$(uptime)"
|
|
show " lsb_release -sa" "$(lsb_release -sa 2>/dev/null)"
|
|
show " linuxcnc" "$(command -v linuxcnc)"
|
|
show " pwd" "$(pwd -P)"
|
|
show " USER" "$USER"
|
|
show " LOGNAME" "$LOGNAME"
|
|
show " HOME" "$HOME"
|
|
show " EDITOR" "$EDITOR"
|
|
show " VISUAL" "$VISUAL"
|
|
show " LANGUAGE" "$LANGUAGE"
|
|
show " TERM" "$TERM"
|
|
show " COLORTERM" "$COLORTERM"
|
|
show " DISPLAY" "$DISPLAY"
|
|
show " DESKTOP" "$DESKTOP_SESSION"
|
|
show " display size" "$(parse_after_colon "$(xdpyinfo|grep dimensions)")"
|
|
show " PATH" "$PATH"
|
|
echo
|
|
echo "uname items:"
|
|
show " nodename -n" "$(uname -n)"
|
|
show " kernel-name -s" "$(uname -s)"
|
|
show " kernel-vers -v" "$(uname -v)"
|
|
show " machine -m" "$(uname -m)"
|
|
show " processor -p" "$(uname -p)"
|
|
show " platform -i" "$(uname -i)"
|
|
show " oper system -o" "$(uname -o)"
|
|
show ""
|
|
echo "/proc items:"
|
|
show " cmdline" "$(< /proc/cmdline)"
|
|
show " model name" "$(parse_cpuinfo "model name")"
|
|
show " cores" "$(parse_cpuinfo "cpu cores")"
|
|
show " cpu MHz" "$(parse_cpuinfo "cpu MHz")"
|
|
show " parport" "$(grep parport < /proc/ioports)"
|
|
show " serial" "$(grep serial < /proc/ioports)"
|
|
echo
|
|
echo "Versions:"
|
|
show " gcc" "$(gcc --version|head -1)"
|
|
show " python" "$(@PYTHON@ --version 2>&1)"
|
|
show " git" "$(tryversion git)"
|
|
show " git commit" "$(git_commit)"
|
|
show " tcl" "$(echo "puts $::tcl_version"|tclsh)"
|
|
show " tk" "$(echo "puts $::tk_version;destroy ."|wish)"
|
|
show " glade" "$(tryversion glade)"
|
|
echo
|
|
echo "linuxcnc_var all:"
|
|
echo
|
|
for n in $(linuxcnc_var all) ; do
|
|
show "${n%%=*}" "${n##*=}"
|
|
done
|
|
|
|
# Not everybody runs Debian based distros
|
|
echo
|
|
if command -v dpkg > /dev/null; then
|
|
echo "dpkg -l '*linuxcnc*':"
|
|
dpkg -l '*linuxcnc*'
|
|
else
|
|
echo "No 'dpkg' available, different distro, probably."
|
|
fi
|
|
echo
|
|
|
|
[ -n "$VIEWER" ] && $VIEWER "$ofile"
|
|
exit 0
|