blob: 998adafb3265dfc871f5c8139454f357250faa91 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
# 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=/config/support
DEFAULT_GROUP=users
do_rotate ()
{
local count=`ls -t $DEFAULT_PATH/*.tech-support.* 2>/dev/null |wc -l`
if (( count >= 100 )); 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.
OUT="$HOSTNAME.tech-support.$CURTIME.txt"
if [ -n "$2" ]; then
if [[ "$2" =~ scp:///* || "$2" =~ ftp:///* ]]; then
REMOTE="1"
else
#file to be save locally
OUT="$2.$OUT"
fi
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
|