Write Command to Virtual Terminal.
Project description
wrtty
wrtty is a Python script to write commands to a virtual terminal.
Note: wrtty elevates permissions with sudo
because it needs root permissions.
By "virtual terminal", it is meant what is often called the "console",
which is slightly different.
In this case it is the "virtual terminal" controlled by commands such
as chvt (e.g. sudo chvt 3).
Writing to the console can make text appear, but it won't make it execute
as a command in a shell.
Writing to the virtual terminal, such as /dev/tty1, commands can be
run, login on console, etc.
This may be used in a situation where you have ssh access to a machine, but no X/Wayland/VNC running, but you need to run as if you are in front of the machine. This in effect simulates an operator standing in front of a machine, typing on the local keyboard.
Install
Install from PyPI.
pip install wrtty
Help
Help output:
$ wrtty -h
usage: wrtty [-h] [-c CMD] [-t TTY]
write command to virtual terminal
options:
-h, --help show this help message and exit
-c CMD, --cmd CMD command to run (default echo)
-t TTY, --tty TTY TTY to use (default /dev/tty1)
Use
Use examples:
wrtty
wrtty -c "date -uR"
wrtty -t /dev/tty2 --cmd "clear"
Build
Developers build thusly.
Under Debian stable (Bookworm/12).
Python setup, suit to taste:
git clone https://spacecruft.org/deepcrayon/wrtty
cd wrtty/
pyenv local 3.11 # if pyenv
python -m venv venv
source venv/bin/activate
pip install -U setuptools pip wheel poetry
poetry install
Status
WORKSFORME.
Upstream
I don't know of another application that specifically does this. There are a few old snippets in perl, C, and Python in StackExchange and blogs, but just small examples.
Some linkies:
fcntl — The fcntl and ioctl system calls
Faking input with IOCTL/TIOCSTI
RichardBronosky writevt.c
Construct a command by putting a string into a tty
Unable to fake terminal input with termios.TIOCSTI
send command to another terminal
Can I send some text to the STDIN of an active process running in a screen session?
Linux Kernel Note
I see this configuration option and note in a 6.5 kernel:
CONFIG_LEGACY_TIOCSTI:
Historically the kernel has allowed TIOCSTI, which will push
characters into a controlling TTY. This continues to be used
as a malicious privilege escalation mechanism, and provides no
meaningful real-world utility any more. Its use is considered
a dangerous legacy operation, and can be disabled on most
systems.
Say Y here only if you have confirmed that your system's
userspace depends on this functionality to continue operating
normally.
Processes which run with CAP_SYS_ADMIN, such as BRLTTY, can
use TIOCSTI even when this is set to N.
This functionality can be changed at runtime with the
dev.tty.legacy_tiocsti sysctl. This configuration option sets
the default value of the sysctl.
Symbol: LEGACY_TIOCSTI [=y]
Type : bool
Defined at drivers/tty/Kconfig:152
Prompt: Allow legacy TIOCSTI usage
Depends on: TTY [=y]
Location:
-> Device Drivers
-> Character devices
-> Enable TTY (TTY [=y])
-> Allow legacy TIOCSTI usage (LEGACY_TIOCSTI [=y])
:)
License
MIT.
Copyright © 2023, 2024, Jeff Moe.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wrtty-0.6.0.tar.gz.
File metadata
- Download URL: wrtty-0.6.0.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f14c27c0c5eca3d98ab2aaeb3cc7eff8ee7223ad0f217f93fa384bd2a46e88ea
|
|
| MD5 |
7308157fb5dca74b3a2ff33a57751c10
|
|
| BLAKE2b-256 |
9e4d368bdd249e8352c1221e4a9bb98aefbe0ab8a4d79eda2c237e20581ebbd0
|
File details
Details for the file wrtty-0.6.0-py3-none-any.whl.
File metadata
- Download URL: wrtty-0.6.0-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11c32339aa6ecbb550b4eb849f7cf1d089822d2f4e534de5de26ff760ea2b643
|
|
| MD5 |
001bb61746ec41132e4766c22d18620b
|
|
| BLAKE2b-256 |
de9dcd4ef7d6af4862f2bc1f2a12f7d5fc176cfa854da4f1e17b645b6ef9aeea
|