diff options
author | Christian Breunig <christian@breunig.cc> | 2024-06-28 10:05:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-28 10:05:35 +0200 |
commit | 7a312936e06fe64c545c3fd0d01c5a9b61cbf7d0 (patch) | |
tree | 69e96f17eb24d18652ebb208d1532f1a9483a026 | |
parent | 5f6e4bc06d02ec363158fd2291ab84b65c5bd34e (diff) | |
parent | e5c0b56f42cbca2460c383cc0304167dc5c8548e (diff) | |
download | vyos-1x-7a312936e06fe64c545c3fd0d01c5a9b61cbf7d0.tar.gz vyos-1x-7a312936e06fe64c545c3fd0d01c5a9b61cbf7d0.zip |
Merge pull request #3734 from vyos/mergify/bp/circinus/pr-3731
op-mode: T5633, T6465: fix error when op cmd interrupted, updates some system call syntax (backport #3731)
-rw-r--r-- | src/op_mode/show_techsupport_report.py | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/op_mode/show_techsupport_report.py b/src/op_mode/show_techsupport_report.py index 230fb252d..32cf67778 100644 --- a/src/op_mode/show_techsupport_report.py +++ b/src/op_mode/show_techsupport_report.py @@ -14,10 +14,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +import os +import sys from typing import List -from vyos.utils.process import rc_cmd from vyos.ifconfig import Section from vyos.ifconfig import Interface +from vyos.utils.process import rc_cmd def print_header(command: str) -> None: @@ -50,7 +52,15 @@ def execute_command(command: str, header_text: str) -> None: print_header(header_text) try: rc, output = rc_cmd(command) - print(output) + # Enable unbuffered print param to improve responsiveness of printed + # output to end user + print(output, flush=True) + # Exit gracefully when user interrupts program output + # Flush standard streams; redirect remaining output to devnull + # Resolves T5633: Bug #1 and 3 + except (BrokenPipeError, KeyboardInterrupt): + os.dup2(os.open(os.devnull, os.O_WRONLY), sys.stdout.fileno()) + sys.exit(1) except Exception as e: print(f"Error executing command: {command}") print(f"Error message: {e}") @@ -155,13 +165,13 @@ def show_route() -> None: "show ip route supernets-only", "show ip route table all", "show ip route vrf all", - "show ipv6 route bgp | head 108", + "show ipv6 route bgp | head -108", "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 ospfv3", "show ipv6 route rip", "show ipv6 route static", "show ipv6 route summary", @@ -179,8 +189,9 @@ def show_firewall() -> None: def show_system() -> None: """Prints system parameters.""" - execute_command(op('show system image version'), 'Show System Image Version') - execute_command(op('show system image storage'), 'Show System Image Storage') + execute_command(op('show version'), 'Show System Version') + execute_command(op('show system storage'), 'Show System Storage') + execute_command(op('show system image details'), 'Show System Image Details') def show_date() -> None: |