The tool presented here, „Simple Apt Update“ (simple-apt-update) is nothing more than a front-end to the non-interactive execution of apt-get update|full-upgrade and apt list --upgradeable. It can look like this:
A simple GUI for basic Package Management with Apt
29. Januar 2024 in Administration, GNU/Linux, Programmierung, Technik.
Maintaining Multi-Line „stat“ Formats using Bourne Again Shell
20. August 2023 in GNU/Linux, Programmierung.
The stat command from GNU core utilities features not only a --format FORMAT option but also a --printf FORMAT one, the difference being that the latter allows for backslash escapes such as \n.
This allows for custom per-file report formats containing newlines, for example:
stat --printf 'Name: %n\nSize: %s Bytes\n' /etc/passwd
If the format string becomes more complex, the command line soon becomes unwieldy, such as:
stat --printf 'Name: %n\nOwner ID: %u\nSize: %s Bytes\nLast accessed: %x\n' /etc/passwd
Make a Bourne Again Shell Script Log its Output to a File
20. August 2023 in Administration, GNU/Linux, Programmierung.
The Bourne Again Shell script presented in this article demonstrates techniques related to capturing and logging output (standard output and standard error stream) of a script into a log file while also delivering it to the regular output destinations (for example the terminal or whatever the caller has chosen to redirect to). Some questions are addressed:
- How to „clone“ standard output and standard error stream of a shell script to a single log file?
- Are the messages from both streams interleaved into a single file in the appropriate order?
- Can a script perform output cloning for some portions of its procedure while skipping it for others?
- Are there specific requirements for output that is to be cloned to a file?
- Are there best practices when a script modifies its own output redirections?
The example provided below has been tested on GNU/Linux using GNU „bash“ version 5 and „tee“ version 8.32 from GNU coreutils. It uses the Bash-only feature of process substitution. An implementation in POSIX Shell (possibly using only POSIX tools) would be more difficult.
Using sed or awk to ensure a specific last Line in a Text
20. August 2023 in GNU/Linux, Programmierung.
Given a file containing bytes of text with lines separated by the newline character (\n), one of these lines can be said to be „the last line of the file“; it is a sequence of bytes occurring in the file, for which holds:
- The sequence contains no newline character, and
- the sequence is followed by at most one newline character and no other bytes.
The task at hand is, using shell utilities, to write a procedure that makes sure that a given file contains a last line that contains a desired sequence of text characters.
Determine IPv4 Addresses of a Libvirt Qemu-KVM Domain
1. Juli 2023 in Administration, GNU/Linux, Technik.
In the VM, on Redhat-likes, make sure that the Qemu guest agent is installed:
dnf install qemu-guest-agent
On Debian-likes, execute:
apt install qemu-guest-agent
For Microsoft Windows guests, there are some tutorials on the web, see for example [1].
On the HV, execute:
virsh qemu-agent-command --domain myvm \
'{"execute":"guest-network-get-interfaces"}' | \
jq -r '
[.return[] | select(.name!="lo") | ."ip-addresses"] | flatten |
.[] | select(."ip-address-type"=="ipv4")."ip-address"
'
The output should be one IPv4 address per line.
If you are interested in IPv4 and IPv6 addresses instead, just skip the „select“ filter:
virsh qemu-agent-command --domain myvm \
'{"execute":"guest-network-get-interfaces"}' | \
jq -r '
[.return[] | select(.name!="lo") | ."ip-addresses"] | flatten |
.[]."ip-address" '
Two Paintings
19. Januar 2023 in Grafik, Multimedia, Sonstiges.
Did i mention that i like Blender?