Page Menu
Home
VyOS Platform
Search
Configure Global Search
Log In
Files
F3714268
show_techsupport_report.py
All Users
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
m.korobeinikov
Apr 2 2023, 4:12 AM
2023-04-02 04:12:36 (UTC+0)
Size
12 KB
Referenced Files
None
Subscribers
None
show_techsupport_report.py
View Options
#!/usr/bin/env python3
#
# Copyright (C) 2023 VyOS maintainers and contributors
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or later as
# published by the Free Software Foundation.
#
# 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, see <http://www.gnu.org/licenses/>.
from
vyos.util
import
call
import
os
def
header
(
cmd
):
print
(
16
*
'-'
+
'
\n
'
+
cmd
+
'
\n
'
+
16
*
'-'
)
return
# get intefaces info
interfaces_list
=
os
.
popen
(
'ls /sys/class/net/ | grep eth'
)
.
read
()
.
split
()
bridges_list
=
os
.
popen
(
'ls /sys/class/net/ | grep br'
)
.
read
()
.
split
()
###################### THE PART OF CONFIGURATION ######################
cmd_list_conf
=
[
"VyOS Version and Package Changes%/opt/vyatta/bin/vyatta-op-cmd-wrapper show version all"
,
"Configuration File
%c
at /opt/vyatta/etc/config/config.boot"
,
"Running configuration%/opt/vyatta/bin/vyatta-op-cmd-wrapper show configuration"
,
"Package Repository Configuration File
%c
at /etc/apt/sources.list"
,
"User Startup Scripts
%c
at /etc/rc.local"
,
"Quagga Configuration%vtysh -c 'show run'"
]
def
CONFIGURATION
(
cmd
):
for
command_line
in
cmd
:
line
=
command_line
.
split
(
'%'
)
head
=
line
[
0
]
command
=
line
[
1
]
header
(
head
)
call
(
command
)
return
###################### THE PART OF INTERFACES ######################
cmd_list_int
=
[
"Interfaces%/opt/vyatta/bin/vyatta-op-cmd-wrapper show interfaces"
,
"Ethernet"
,
"Interface statistics
%i
p -s link show"
,
"Physical Interface statistics for
%e
thtool -S"
,
"Physical Interface Details for %/opt/vyatta/bin/vyatta-op-cmd-wrapper show interfaces ethernet
%e
thtool -k $eth"
,
"ARP Table (Total entries)%/opt/vyatta/bin/vyatta-op-cmd-wrapper show arp"
,
"Number of incomplete entries in ARP table
%s
how arp | grep incomplete | wc -l"
,
"Bridges"
]
def
INTERFACES
(
cmd
):
for
command_line
in
cmd
:
line
=
command_line
.
split
(
'%'
)
head
=
line
[
0
]
if
command_line
.
startswith
(
"Ethernet"
):
header
(
command_line
)
elif
command_line
.
startswith
(
"Physical Interface statistics"
):
for
command_interface
in
interfaces_list
:
header
(
f
'{head} {command_interface}'
)
call
(
f
'{line[1]} {command_interface}'
)
elif
command_line
.
startswith
(
"Physical Interface Details"
):
for
command_interface
in
interfaces_list
:
header
(
f
'{head} {command_interface}'
)
call
(
f
'{line[1]} {command_interface} physical'
)
call
(
f
'{line[2]} {command_interface}'
)
elif
command_line
.
startswith
(
"Bridges"
):
header
(
command_line
)
for
command_interface
in
bridges_list
:
header
(
f
'Information for {command_interface}'
)
call
(
f
'/sbin/brctl showstp {command_interface}'
)
call
(
f
'/sbin/brctl showmacs {command_interface}'
)
else
:
command
=
line
[
1
]
header
(
head
)
call
(
command
)
return
###################### THE PART OF ROUTING ######################
cmd_list_route
=
[
"show ip route bgp"
,
"show ip route cache"
,
"show ip route connected"
,
"show ip route forward"
,
"show ip route isis"
,
"show ip route kernel"
,
"show ip route ospf"
,
"show ip route rip"
,
"show ip route static"
,
"show ip route summary"
,
"show ip route supernets-only"
,
"show ip route table"
,
"show ip route tag"
,
"show ip route vrf"
,
"show ipv6 route bgp"
,
"show ipv6 route cache"
,
"show ipv6 route connected"
,
"show ipv6 route forward"
,
"show ipv6 route isis"
,
"show ipv6 route kernel"
,
"show ipv6 route ospf"
,
"show ipv6 route rip"
,
"show ipv6 route static"
,
"show ipv6 route summary"
,
"show ipv6 route supernets-only"
,
"show ipv6 route table"
,
"show ipv6 route tag"
,
"show ipv6 route vrf"
,
]
def
ROUTING
(
cmd
):
for
command_line
in
cmd
:
head
=
command_line
command
=
command_line
header
(
head
)
call
(
f
'/opt/vyatta/bin/vyatta-op-cmd-wrapper {command}'
)
return
###################### THE PART OF IPTABLES ######################
cmd_list_iptables
=
[
"Filter Chain Details
%s
udo /sbin/iptables -L -vn"
,
"Nat Chain Details
%s
udo /sbin/iptables -t nat -L -vn"
,
"Mangle Chain Details
%s
udo /sbin/iptables -t mangle -L -vn"
,
"Raw Chain Details
%s
udo /sbin/iptables -t raw -L -vn"
,
"Save Iptables Rule-Set
%s
udo iptables-save -c"
]
def
IPTABLES
(
cmd
):
for
command_line
in
cmd
:
line
=
command_line
.
split
(
'%'
)
head
=
line
[
0
]
command
=
line
[
1
]
header
(
head
)
call
(
command
)
return
###################### THE PART OF SYSTEM ######################
cmd_list_system
=
[
"Show System Image Version
%s
how system image version"
,
"Show System Image Storage
%s
how system image storage"
,
"Current Time
%d
ate"
,
"Installed Packages
%d
pkg -l"
,
"Loaded Modules
%c
at /proc/modules"
,
"CPU"
,
"Installed CPU/s
%ls
cpu"
,
"Cumulative CPU Time Used by Running Processes%top -n1 -b -S"
,
"Hardware Interrupt Counters
%c
at /proc/interrupts"
,
"Load Average
%c
at /proc/loadavg"
]
def
SYSTEM
(
cmd
):
for
command_line
in
cmd
:
line
=
command_line
.
split
(
'%'
)
head
=
line
[
0
]
if
command_line
.
startswith
(
"CPU"
):
header
(
command_line
)
elif
line
[
1
]
.
startswith
(
"show"
):
header
(
head
)
command
=
line
[
1
]
call
(
f
'/opt/vyatta/bin/vyatta-op-cmd-wrapper {command}'
)
else
:
header
(
head
)
command
=
line
[
1
]
call
(
command
)
return
###################### THE PART OF PROCESSES ######################
cmd_list_processes
=
[
"Running Processes%ps -ef"
,
"Memory"
,
"Installed Memory
%c
at /proc/meminfo"
,
" Memory Usage
%f
ree"
,
"Storage"
,
"Devices
%c
at /proc/devices"
,
"Partitions
%c
at /proc/partitions"
,
"Partitioning for disks
%f
disk -l /dev/"
]
def
PROCESSES
(
cmd
):
for
command_line
in
cmd
:
line
=
command_line
.
split
(
'%'
)
head
=
line
[
0
]
if
command_line
.
startswith
(
"Memory"
):
header
(
command_line
)
elif
command_line
.
startswith
(
"Storage"
):
header
(
command_line
)
elif
command_line
.
startswith
(
"Partitioning for disks"
):
header
(
head
)
disks
=
set
()
with
open
(
'/proc/partitions'
)
as
partitions_file
:
for
line
in
partitions_file
:
fields
=
line
.
strip
()
.
split
()
if
len
(
fields
)
==
4
and
fields
[
3
]
.
isalpha
()
and
fields
[
3
]
!=
'name'
:
disks
.
add
(
fields
[
3
])
for
disk
in
disks
:
call
(
f
'fdisk -l /dev/{disk}'
)
else
:
header
(
head
)
command
=
line
[
1
]
call
(
command
)
return
###################### THE PART OF CORE SECTION ######################
cmd_list_core
=
[
"Mounts
%c
at /proc/mounts"
,
"Diskstats
%c
at /proc/diskstats"
,
"Hard Drive Usage
%d
f -h -x squashfs"
,
# "General System",
"Boot Messages
%c
at /var/log/dmesg"
,
"Recent Kernel messages (dmesg)
%d
mesg"
,
"PCI Info
%s
udo lspci -vvx"
,
"PCI Vendor and Device Codes
%s
udo lspci -nn"
,
# "System Info%${vyatta_bindir}/vyatta-show-dmi",
"GRUB Command line
%c
at /proc/cmdline"
,
"Open Ports
%s
udo lsof -P -n -i"
,
"System Startup Files
%ls
-l /etc/rc?.d"
,
"Login History%last -ix"
,
"Recent Log Messages%tail -n 250 /var/log/messages"
,
"NTP%/opt/vyatta/bin/vyatta-op-cmd-wrapper show ntp"
,
]
def
CORE
(
cmd
):
for
command_line
in
cmd
:
line
=
command_line
.
split
(
'%'
)
command
=
line
[
1
]
header
(
line
[
0
])
call
(
command
)
return
###################### THE PART OF VyOS INFORMATION ######################
cmd_list_vyos
=
[
"BGP"
,
"header BGP Summary"
,
"show ip bgp summary"
,
"header BGP Neighbors"
,
"show ip bgp neighbors"
,
"header BGP Debugging Information"
,
"show monitoring protocols bgp"
,
"CLUSTERING"
,
"Cluster Status"
,
"show cluster status"
,
"DHCP Server"
,
"DHCP Leases"
,
"show dhcp server leases"
,
"DHCP Statistics"
,
"show dhcp server statistics"
,
"DHCP Client"
,
"DHCP Client Leases"
,
"show dhcp client leases"
,
"DHCPV6 Server"
,
"DHCPV6 Server Status"
,
"show dhcpv6 server status"
,
"DHCPV6 Server Leases"
,
"show dhcpv6 server leases"
,
"DHCPV6 Relay"
,
"DHCPV6 Relay Status"
,
"show dhcpv6 relay-agent status"
,
"DHCPV6 Client"
,
"DHCPV6 Client Leases"
,
"show dhcpv6 client leases"
,
"DNS"
,
"DNS Dynamic Status"
,
"show dns dynamic status"
,
"DNS Forwarding Statistics"
,
"show dns forwarding statistics"
,
"DNS Forwarding Nameservers"
,
"show dns forwarding nameservers"
,
"FIREWALL"
,
"Firewall Group"
,
"show firewall group"
,
"Firewall Summary"
,
"show firewall summary"
,
"Firewall Statistics"
,
"show firewall statistics"
,
"IPSec"
,
"IPSec Status"
,
"show vpn ipsec status"
,
"IPSec sa"
,
"show vpn ipsec sa"
,
"IPSec sa Detail"
,
"show vpn ipsec sa detail"
,
"IPSec sa Statistics"
,
"show vpn ipsec sa statistics"
,
"/etc/ipsec.conf"
,
"cat /etc/ipsec.conf"
,
"/etc/ipsec.secrets"
,
"cat /etc/ipsec.secrets"
,
"NAT"
,
"NAT Rules"
,
"show nat rules"
,
"NAT Statistics"
,
"show nat statistics"
,
"NAT Translations Detail"
,
"show nat translations detail"
,
"FlowAccounting"
,
"show flow-accounting"
,
"OPENVPN"
,
"OpenVPN Interfaces"
,
"show interfaces openvpn detail"
,
"OpenVPN Server Status"
,
"show openvpn status server"
,
"OSPF"
,
"OSPF Neighbor"
,
"show ip ospf neighbor"
,
"OSPF Route"
,
"show ip ospf route"
,
"OSPF Debugging Information"
,
"show monitoring protocols ospf"
,
"OSPFV3"
,
"OSPFV3 Debugging Information"
,
"show monitoring protocols ospfv3"
,
"Policy"
,
"IP Route Maps"
,
"show ip protocol"
,
"Route-Map"
,
"show route-map"
,
#header IP Access Lists
#show ip access-lists
"IP Community List"
,
"show ip community-list"
,
"Traffic Policy"
,
"Current Traffic Policies"
,
"show queueing"
,
"RIP"
,
"IP RIP"
,
"show ip rip"
,
"RIP Status"
,
"show ip rip status"
,
"RIP Debugging Information"
,
"show monitoring protocols rip"
,
"RIPNG"
,
"RIPNG Debugging Information"
,
"show monitoring protocols ripng"
,
"VPN-L2TP"
,
"VPN ike secrets"
,
"show vpn ike secrets"
,
"VPN rsa-keys"
,
"show vpn ike rsa-keys"
,
"VPN ike sa"
,
"show vpn ike sa"
,
"VPN ike Status"
,
"show vpn ike status"
,
"VPN Remote-Access"
,
"show vpn remote-access"
,
"VPN Debug Detail"
,
"show vpn debug detail"
,
"VPN-PPTP"
,
"VPN Remote-Access"
,
"show vpn remote-access"
,
"VRRP"
,
# XXX: not checking if configured, we'd have to walk all VIFs
"show vrrp detail"
,
"WAN LOAD BALANCING"
,
"Wan Load Balance"
,
"show wan-load-balance"
,
"Wan Load Balance Status"
,
"show wan-load-balance status"
,
"Wan Load Balance Connection"
,
"show wan-load-balance connection"
,
"WEBPROXY/URL-FILTERING"
,
"WebProxy Blacklist Categories"
,
"show webproxy blacklist categories"
,
"WebProxy Blacklist Domains"
,
"show webproxy blacklist domains"
,
"WebProxy Blacklist URLs"
,
"show webproxy blacklist urls"
,
"WebProxy Blacklist Log"
,
"show webproxy blacklist log summary"
,
]
def
VyOS
(
cmd
):
for
command_line
in
cmd
:
if
command_line
.
startswith
(
"show"
):
call
(
f
'/opt/vyatta/bin/vyatta-op-cmd-wrapper {command_line}'
)
elif
command_line
.
startswith
(
"cat"
):
call
(
command_line
)
else
:
header
(
command_line
)
return
###################### execute all the commands ######################
header
(
'CONFIGURATION'
)
CONFIGURATION
(
cmd_list_conf
)
header
(
'INTERFACES'
)
INTERFACES
(
cmd_list_int
)
header
(
'ROUTING'
)
ROUTING
(
cmd_list_route
)
header
(
'IPTABLES'
)
IPTABLES
(
cmd_list_iptables
)
header
(
'SYSTEM'
)
SYSTEM
(
cmd_list_system
)
header
(
'PROCESSES'
)
PROCESSES
(
cmd_list_processes
)
header
(
'CORE'
)
CORE
(
cmd_list_core
)
header
(
'VyOS Information'
)
VyOS
(
cmd_list_vyos
)
File Metadata
Details
Attached
Mime Type
text/x-python
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
123380
Default Alt Text
show_techsupport_report.py (12 KB)
Attached To
Mode
T5137: show tech support command
Attached
Detach File
Event Timeline
Log In to Comment