summaryrefslogtreecommitdiff
path: root/functions/tech-support-brief
diff options
context:
space:
mode:
Diffstat (limited to 'functions/tech-support-brief')
-rwxr-xr-xfunctions/tech-support-brief150
1 files changed, 150 insertions, 0 deletions
diff --git a/functions/tech-support-brief b/functions/tech-support-brief
new file mode 100755
index 0000000..0521416
--- /dev/null
+++ b/functions/tech-support-brief
@@ -0,0 +1,150 @@
+# implement "show tech-support brief"
+# usage: tech-support [brief] [ save [ <filename> ] ]
+# NOTE: this file is sourced, NOT executed
+
+function header {
+ echo
+ echo ----------------
+ echo "$*"
+ echo ----------------
+}
+
+# by default send to stdout
+OUT=1
+FLAG=0
+REMOTE=0
+DEFAULT_PATH=/opt/vyatta/etc/config/support
+DEFAULT_GROUP=users
+
+do_rotate ()
+{
+ local count=`ls -t $DEFAULT_PATH/*.tech-support.* 2>/dev/null |wc -l`
+ if (( count >= 10 )); then
+ local dfile=`ls -t $DEFAULT_PATH/*.tech-support.* 2>/dev/null |tail -1`
+ rm -f $dfile >&/dev/null \
+ && echo "Removed old tech-support brief output file '$dfile'"
+ fi
+}
+
+HOSTNAME=`hostname`
+CURTIME=`date +%F-%H%M%S`
+ if [ "$1" == "save-uncompressed" ]; then
+ FLAG="1"
+ elif [ "$1" == "save" ]; then
+ FLAG="0"
+ fi
+
+ if [ "$1" == "save" ] || [ "$1" == "save-uncompressed" ]; then
+ # "save" or save-uncompressed is specified. save output to file.
+ if [ -n "$2" ]; then
+ if [[ "$2" =~ scp:///* ]]; then
+ OUT="$HOSTNAME.tech-support.$CURTIME"
+ REMOTE="1"
+ elif [[ "$2" =~ ftp:///* ]]; then
+ OUT="$HOSTNAME.tech-support.$CURTIME"
+ REMOTE="1"
+ else
+ OUT="$2.$HOSTNAME.tech-support.$CURTIME"
+ fi
+ else
+ OUT="$HOSTNAME.tech-support.$CURTIME"
+ fi
+
+if [[ $OUT != /* ]]; then
+ # it's not absolute path. save in default path.
+ mkdir -p $DEFAULT_PATH >& /dev/null
+ chgrp $DEFAULT_GROUP $DEFAULT_PATH >& /dev/null
+ chmod 775 $DEFAULT_PATH >& /dev/null
+ OUT="$DEFAULT_PATH/$OUT"
+ do_rotate
+ fi
+ if ! touch $OUT >& /dev/null; then
+ echo "Cannot create tech-support file '$OUT'"
+ exit 1
+ fi
+ if [ $REMOTE != "1" ]; then
+ echo "Saving output to '$OUT'..."
+ fi
+
+fi
+
+(
+export PATH=/sbin:/usr/sbin:$PATH
+
+header Show Tech-Support Brief
+header CONFIGURATION
+
+
+header Vyatta Version and Package Changes
+show version all
+
+header Running configuration
+show configuration
+
+header INTERFACES
+
+header Interfaces
+show interfaces
+
+header ROUTING
+
+function show_route_limit ()
+{
+ NUM=$(show $1 route $2 | wc -l)
+ # subtract 3 lines of header
+ [ $NUM -gt 3 ] && NUM=$[$NUM - 3]
+ OUTPUT=$(echo show $1 route $2 \(total $NUM\))
+ CMD="show $1 route $2"
+ if [ $3 -eq 0 ]
+ then
+ header $OUTPUT
+ vtysh -c "$CMD"
+ else
+ header "$OUTPUT- limit $3"
+ vtysh -c "$CMD" | head -n $3
+ fi
+}
+
+#
+# show all connected/static, limit the output others and include a total
+#
+show_route_limit ip connected 0
+show_route_limit ip static 0
+show_route_limit ip rip 500
+show_route_limit ip ospf 500
+show_route_limit ip bgp 500
+show_route_limit ip '' 500
+
+show_route_limit ipv6 connected 0
+show_route_limit ipv6 static 0
+show_route_limit ipv6 ripng 500
+show_route_limit ipv6 ospf6 500
+show_route_limit ipv6 bgp 500
+show_route_limit ipv6 '' 500
+
+
+header Recent 100 Log Messages
+show log tail 100
+
+header "END OF TECH-SUPPORT BRIEF FILE"
+) 1>&$OUT 2>&1
+
+if [ $OUT != "1" ]; then
+ chgrp $DEFAULT_GROUP $OUT >& /dev/null
+ chmod 664 $OUT >& /dev/null
+ if [ $FLAG == "0" ]; then
+ gzip $OUT
+ OUT=$OUT.gz
+ if [ $REMOTE != "1" ]; then
+ echo "File $OUT is the compressed file."
+ fi
+ fi
+
+ if [ $REMOTE != "1" ]; then
+ echo "Done."
+ fi
+fi
+if [ $REMOTE == "1" ]; then
+ perl /opt/vyatta/bin/vyatta-remote-copy.pl $2 $OUT $FLAG
+fi
+