We have an internal system for allocating hardware to developers on a short term basis. While the software does have a web API, it is not enabled by default, nor in our deployment. Thus, we end up caching a local copy of the data about the machine. The machine names are a glom of architecture, and location. So I make a file with the name of the machine, and a symlink to the one I am currently using.
Continue readingCategory Archives: shell
ipmitool lan print
when run from inside a console/ssh session will tell you the ipmi address of the machine you are on.
One liner: Kill an unresponsive remote shell session
{enter} ~ . |
XPath for libvirt external snapshop path
The following xmllint XPath query will pull out the name of the backing file for a VM named fedora-server-36 and an external snapshot named fedora-36-post-install,
virsh snapshot-dumpxml fedora-server-36 fedora-server-36-post-install | xmllint --xpath "string(//domainsnapshot/disks/disk[@snapshot='external']/source/@file)" - |
The string function extracts the attribute value.
This value can be used in the process of using or deleting the snapshot.
Date format suitable for file names
It is rare that you want to write something without later wanting to be able to read it back. One common way of organizing files that are generated regularly is by time stamp. If you want to add a timestamp to a file name, you can do so using the date command.
In order for the filenames to sort in the right order, you want the name to go from largest unit to smallest.
Here is an example that creates a filename-suitable string formed Year->second. I remove all unnecessary formatting characters.
date --rfc-3339=seconds | sed -E -e 's! |-|:!!g' |
The date command reads the current date/time on the local system. –rfc-3339=seconds produces output that looks like this:
$ date --rfc-3339=seconds 2021-11-03 10:57:14-04:00 |
In order to keep the regular expression concise inside the sed command, the -E switch tells it to use extended regular expressions, including the alternation character ‘|’ . Thus, the regex ‘ |-|:’ matches a space, a dash, and a colon.
Shell variable expansion across ssh sessions
ssh allows you to run a command on a remote machine. You may want to use a shell variable in a remote command. You have to be aware of when that variable gets evaluated.
Continue readingQuerying hostnames from beaker
If you have requested a single host from beaker, the following one liner will tell the hostname for it.
bkr job-results $( bkr job-list -o $USER --unfinished | jq -r ".[]" ) | xpath -q -e string\(/job/recipeSet/recipe/roles/role/system/@value\) |
This requires jq and xpath, as well as the beaker command line packages.
For me on Fedora 33 the packages are:
- perl-XML-XPath-1.44-7.fc33.noarch
- jq-1.6-5.fc33.x86_64
- python3-beaker-1.10.0-9.fc33.noarch
- beaker-redhat-0.2.1-2.fc33eng.noarch
- beaker-common-28.2-1.fc33.noarch
- beaker-client-28.2-1.fc33.noarch
Type in the Sample Code
Labs are designed for learning. I learn by doing. While I can read, as they say in the local vernacular in my propinquity “Wicked Fast,” I don’t process read information to the depth that I need in order to retain it. I need to type in the code in order to learn. Here’s a technique I use to do that.
Continue readingManually Adding SSH Keys to a Cloud Image
Not all of my virtual machines run on OpenStack; I have to run a fair number of virtual machines on my personal workstation via libvirt. However, I like using the cloud versions of RHEL, as they most closely match what I do run in OpenStack. The disconnect is that the Cloud images are designed to accept cloud-init, which pulls the ssh public keys from a metadata web server. Without that, there are no public keys added to the cloud-user account, and the VM is unaccessable. Here is how I add the ssh keys manually.
Continue reading
Passwordless access to System libvirt on Fedora 28
I can connect to the system libvirtd on my system without password. I set this up some time ago, and forgot how, so figured I would document it.
Continue reading