summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2025-07-30 21:40:11 +0100
committerChristian Breunig <christian@breunig.cc>2025-07-30 21:40:11 +0100
commitfba27cac855cf196a394ac4bb955f9f7402982cb (patch)
treec939b43b7157c3924d53604380e472bbdfad2d85 /python
parent2ac530f45d9d5f2ab7bafcc1de65284d8eef85bb (diff)
downloadvyos-1x-fba27cac855cf196a394ac4bb955f9f7402982cb.tar.gz
vyos-1x-fba27cac855cf196a394ac4bb955f9f7402982cb.zip
serial: T7484: treat unavailable serial console devices as non-fatal
Instead of failing or starting agetty on an invalid device, we now check whether the specified serial console device is a valid TTY. If it's not, we display a warning to the user and skip starting the agetty process.
Diffstat (limited to 'python')
-rw-r--r--python/vyos/utils/serial.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/python/vyos/utils/serial.py b/python/vyos/utils/serial.py
index 68aad676e..36b483e91 100644
--- a/python/vyos/utils/serial.py
+++ b/python/vyos/utils/serial.py
@@ -116,3 +116,16 @@ def restart_login_consoles(prompt_user=False, quiet=True, devices: List[str]=[])
cmd(f'systemctl stop {unit_name}')
return True
+
+def is_tty(name: str) -> bool:
+ """ Check if a given device file (e.g. /dev/ttyS0) is a TTY (teletypewriter)
+ device in Linux
+ """
+ import os
+ path_tty = f'/dev/{name}'
+ if os.path.exists(path_tty):
+ with open(path_tty, 'rb') as f:
+ fd = f.fileno()
+ # True if filename is a TTY
+ return os.isatty(fd)
+ return False