RUMIA - Remote Unit MonItoring Application
This is a little but extensible, handy cross-platform BASH script that may be
used, at the moment, to monitor several stuff (availability, uptime, disk
consistency, CPU/HDD temperatures, battery charge level) on several remote
computers using only the text console (either computer screen or ssh session),
without a requirement of any compiler or build system (and also without ability
of doing this through SNMP, IPMI or HTTP/HTTPS, but you should rethink your life
if you are up to do it with plain bash
+ coreutils
and virtually nothing
more).
Additionally, it contains another script that can execute arbitrary command on the chosen remote computers.
- bash
- coreutils
- ssh
- an ANSI-compatible UTF-8 console (e.g. putty/xterm)
- anything you specify in
require
file for certain computer(s)
You should prepare a config file (see rumia.conf.example
as an example)
as following:
-
PREFIX
should be a path where RUMIA is installed. It should contain language files, and, in typical installation,computers.d
andtemplates.d
dirs. -
COMPUTERS_D
should be a path tocomputers.d
directory. May be relative toPREFIX
if BASH variable substitution is used. -
LOGFILE
should be a path to log file which will be appended with a complete temperature information assembled during each shot. May be relative toPREFIX
if BASH variable substitution is used. Log file consists of lines that have the current time of a shot, followed by several tab-separated records in format likehostname:N=T
, wherehostname
is a hostname of a machine,N
is a number of the temperature sensor, andT
is a temperature that has been read from this sensor. Log file remains closed all time except the exact moments when information is appended to it, so you may freely delete or move it even when RUMIA is running: no stalled file handles will be left there. -
RUMIA_LANG
should be set according to a desired language. Currently available languages areen_US
andru_RU
. The correspondinglanguage.$RUMIA_LANG
file must exist in$PREFIX
. -
NAME_LENGTH
should be a length of computer's name column. If not defined, not numerical, or less than 8, defaults to 8. -
MARKER
should be a name of a marker file that makes a computer visible to RUMIA. Usually this istemp_enabled
. For further information, see below for a meaning oftemp_enabled
file. -
SMARKER
should be a name of a marker file that makes a computer visible toexecute_cmd
. Usually this isssh_enabled
. For further information, see below for a meaning ofssh_enabled
file. -
DELAY
should be set to a seconds between end of one shot and begin of the following (Note: it's not the time between start of each shot, so actual period time is equal to time consumed by one shot and this delay). -
SSH_OPTS
should be a bunch of additional options passed to each call tossh
command. Used primarily for setting timeouts.
All variables are set using generic BASH syntax, e.g. no spaces should be between variable name, "=" sign, and variable value; values containing spaces must be enclosed in double or single quotes; BASH variable substitutions are allowed, etc.
In the example of rumia.conf
, any of these variables may be redefined while
starting rumia
. For example, if RUMIA is configured to use Russian language,
but you want to launch it in one shot mode with English output, you may run:
RUMIA_LANG=en_US ./rumia --oneshot
Unless --config
specified in command line, RUMIA reads the following files
as its config files (if any of them exist):
/etc/rumia.conf
: system-wide RUMIA config file~/.config/rumia.conf
: user-specific RUMIA config file~/.rumiarc
: user-specific additions to RUMIA config file./rumia.conf
: directory-specific RUMIA config file
Each next file take precedence over the previous ones (overriding the definitions made in it).
For each monitored computer, a specific subdirectory should be made inside
computers.d
directory (there are various examples of it inside
computers.d.example
subdirectory of RUMIA). Directory should have a name
that consists of 2-digit order mark, then a hyphen, and then a hostname
of a machine to which this directory is related (like 12-example
). This
directory may contain the following files or symbolic links:
-
Marker files. These files are generally zero-sized and made by
touch
command, and removed byrm
(obviously).-
temp_enabled
: Let RUMIA poll this computer at all. Every computer that does not have this marker is skipped while gathering information. The name of this marker file might be redefined by aMARKER
variable in the config file or in the command line; thus you may have the singlecomputers.d
directory for different polling strategies. E.g. you may have a generic marker,temp_enabled
, andhigh_attention
for several computers that need high attention, and so, high polling rate. Then you just may have two sessions (e.g.tty1
andtty2
), and runDELAY=600 /opt/rumia/rumia
intty1
, andMARKER=high_attention DELAY=60 /opt/rumia/rumia
intty2
, and then, intty1
you'll have all your computers that havetemp_enabled
in their directories, and intty2
you'll have a subset of them, of those who havehigh_attention
marker file in their directories, and the latter will be polled ten times more often. Of course, it might be not a subset, but a completely different set that may or may not have a non-empty intersection with the first one. -
ssh_enabled
: The same forexecute_cmd
. Every computer that does not have this marker is skipped whenssh_enabled is called
. As well as withtemp_enabled
, the name of this marker file might be redefined by aSMARKER
variable in the config file or in the command line; thus you may have the singlecomputers.d
directory for different SSH commands. E.g. you may have a generic marker,ssh_enabled
, andssh_full_enabled
for several computers that have more advanced set of binaries available. Then you just may call/opt/rumia/execute_cmd
for generic SSH commands, andSMARKER=ssh_full_enabled /opt/rumia/execute_cmd
for more advanced commands to execute on computers that support them. -
absent
: Let RUMIA know that this computer is intentionally absent. If it can't be reached byping_cmd
, it produces "Sleep" message in the table instead of "Dead", so it could be considered not a failure that needs attention. -
other
*_enabled
files: useful when runningexecute_cmd
orrumia
with non-default marker files by usingMARKER
andSMARKER
variables.
-
-
Data files. These files are generally symlinks to data files inside
templates.d
subdirectory, except when a file is supposed to be unique (e.g. SSH private key or computer's fancy name).-
key
: private SSH key to use while connecting to computer. To successfully connect to computer, you must have public key of specified user in his/herauthorized_keys
file, and host fingerprint inknown_hosts
on the host where you run RUMIA. For latter one, you could just connect once from host where you run RUMIA, to the desired computer, and accept the certificate. -
fancyname
: a fancy name for a computer that may be used instead of its hostname in the table (unless--nofancynames
is specified, or this file doesn't exist). For example, it may be a short form of hostname (e.g. "div193-host195.organization.com" could have a fancy name of "Host 195"); or it could be a beautifized name using symbols that are not allowed in a typical hostname (e.g. host "twilight-sparkle" may have fancy name of "Твайлайт" in Russian language). If fancy name or hostname (when fancy name is not used) is longer than 8 characters, it will be truncated. -
temp_nodes
: Number of temperatures that are readable from a computer. If missing, no temperature or battery level check is performed. Usually it is a symlink to../../templates.d/nodes.*
file which contains the desired number. -
temp_alert
: Alerting temperature value. Temperatures lower that that are shown in gray, higher (but below critical) are shown in yellow. Has no effect iftemp_enabled
ortemp_nodes
is missing. Usually it is a symlink to../../templates.d/temp_alert.*
file which contains the desired temperature. -
temp_crit
: As above, but a critical temperature value. Temperatures higher that that are shown in red. Has no effect iftemp_enabled
ortemp_nodes
is missing. Usually it is a symlink to../../templates.d/temp_crit.*
file which contains the desired temperature. -
require
: A list of binaries (one for a line) which is to be checked for existence on the host where RUMIA is running when a certain computer is polled. Each of them is examined usingwhich
command, and if at least one of them isn't found, then polling of this computer is skipped, and the corresponding message is displayed in the table. -
ssh_user
: User name for SSH session. Has an effect only ifssh_cmd
is a symlink tossh_cmd.sshpass
. -
ssh_password
: User password for SSH session. Has an effect only ifssh_cmd
is a symlink tossh_cmd.sshpass
. -
vpngw_host
: A host to whichssh
must connect to achieve access to the specified computer. Has an effect only ifssh_cmd
is a symlink tossh_cmd.gateway
,ssh_cmd.recursive
, orssh_cmd.gateway+recursive
script, and/orping_cmd
is a symlink toping_cmd.recursive
, orping_cmd.gateway+recursive
. -
vpngw_port
: A port to whichssh
must connect to achieve access to the specified computer. Has an effect only ifssh_cmd
is a symlink tossh_cmd.gateway
orssh_cmd.gateway+recursive
script, and/orping_cmd
is a symlink toping_cmd.gateway+recursive
. -
vpngw_user
: An username using whichssh
must connect to achieve access to the specified computer. Has an effect only ifssh_cmd
is a symlink tossh_cmd.gateway
orssh_cmd.gateway+recursive
script, and/orping_cmd
is a symlink toping_cmd.gateway+recursive
. -
vpngw_keydir
: A directory on gateway where public keys for subordinate computers are located. Should be full path, but should not contain trailing slash. Has an effect only ifssh_cmd
is a symlink tossh_cmd.gateway+recursive
script.
-
-
Command files. These files are generally symlinks to the files inside
templates.d
subdirectory which are bash scripts (they should have appropriate permissions) that perform some command on a remote computer. each of them could use the following three exported environment variables:$MACHINE
(a name of computer, as it is specified in the name of corresponding directory insidecomputers.d
),$SCRIPTPATH
(which is the actual path to subdirectory related to this computer undercomputers.d
), and$SSH_OPTS
(which is the additional options passed to SSH command, if used). If you have a specific requirement, you may put your own script(s) intemplates.d
, and link these files to it.-
ssh_cmd
: Prints a string to execute SSH command on remote computer. Should never fail on properly configured RUMIA. Could be symlinked to:-
../../templates.d/ssh_cmd.local
: a simple SSH to remote computer as useruser
(if not exist, defaults toroot
), usingkey
as a private key. -
../../templates.d/ssh_cmd.gateway
: SSH to remote computer using a specific host, port and user, that are specified invpngw_host
,vpngw_port
, andvpngw_user
(if not exist, defaults toroot
), correspondingly.key
is stll a private key. -
../../templates.d/ssh_cmd.recursive
: SSH through other SSH tunnel. First we connect tovpngw_host
usingkey
(if exists) as uservpngw_user
(if not exist, defaults toroot
), and then, after we connected, we proceed to connect to specified hostname as useruser
(if not exist, defaults toroot
), using$MACHINE.pk
key, which is located onvpngw_host
in directoryvpngw_keydir
(if not exist, defaults to/root/keys
). -
../../templates.d/ssh_cmd.gateway+recursive
: a combination of above two methods. First we connect tovpngw_host
portvpngw_port
as uservpngw_user
(if not exist, defaults toroot
), usingkey
, and then, after we connected, we proceed to connect to specified hostname as useruser
(if not exist, defaults toroot
), using$MACHINE.pk
key, which is located onvpngw_host
in directoryvpngw_keydir
(if not exist, defaults to/root/keys
). -
../../templates.d/ssh_cmd.sshpass
: a simple SSH to remote computer asssh_user
(if not exist, defaults toroot
) usingssh_password
as SSH password. Obvioulsy it is absolutely insecure, avoid using this method by any measures. Note:require
should contain "sshpass
" for this, andsshpass
utility should be installed on the computer where RUMIA is running.
-
-
ping_cmd
: Check an availability of remote computer. If machine is unavailable, then no further polling is performed. Should print nothing, and return 0 on success and non-null on failure. Could be symlinked to:-
../../templates.d/ping_cmd.generic
: a generic ping of remote computer. -
../../templates.d/ping_cmd.by_ssh
: "pinging" a machine by opening an SSH session to it (usingssh_cmd
's output) and checking ifsudo
call intosudo_user
(if not exist, defaults toroot
) is successful. Useful if you connect to it through a gateway (usingssh_cmd.gateway
script). -
../../templates.d/ping_cmd.recursive
: a ping through SSH tunnel. First we connect tovpngw_host
usingkey
as uservpngw_user
(if not exist, defaults toroot
), and then, after we connected, we just ping specified hostname. Useful if you connect to it recursively (usingssh_cmd.recursive
script). -
../../templates.d/ping_cmd.gateway+recursive
: a ping through SSH tunnel via gateway. First we connect tovpngw_host
portvpngw_port
usingkey
as uservpngw_user
(if not exist, defaults toroot
), and then, after we connected, we just ping specified hostname. Useful if you connect to it recursively through gateway (usingssh_cmd.gateway+recursive
script).
-
-
uptime_cmd
: Print an uptime of remote computer. Return value does not matter. Could be symlinked to:-
../../templates.d/uptime_cmd.generic
: calling GNUuptime
command through an SSH session to remote computer (usingssh_cmd
's output). Also checks the correctness of remote clock; output of the command is colorized according to it: light gray if OK, yellow if clock skew is undetermined, red if it is more than 10 seconds. -
../../templates.d/uptime_cmd.windows
: calling Windowsuptime.exe
command through an SSH session to remote computer (usingssh_cmd
's output). You may download the correspondinguptime.exe
binary here. It is not the one made by Microsoft, since Microsoft's one doesn't work if being run by unprivileged user. Does not check the correctness of remote clock, output is uncolorized. -
../../templates.d/uptime_cmd.procfs
: using data from/proc/uptime
file obtained through an SSH session to remote computer (usingssh_cmd
's output). Useful if you have BASH with enabled procfs on Windows, but don't have any suitableuptime.exe
. Also checks the correctness of remote clock; output of the command is colorized according to it: light gray if OK, yellow if clock skew is undetermined, red if it is more than 10 seconds.
-
-
cpuget_cmd
: Print a CPU utilization of remote computer. Return value does not matter. Should print exactly 6 characters, of which leading and trailing ones are spaces, and should not produce a newline after that (so actual output should look like what commandsecho -n " 95 % "
,echo -n " 2 % "
, orecho -n " 100% "
produce. Could be symlinked to:-
../../templates.d/cpuget_cmd.mpstat
: callingmpstat
command through an SSH session to remote computer (usingssh_cmd
's output). Output will be colorized: 0..9% is light gray, 10..79% is cyan, 80..100% is bright white. -
../../templates.d/cpuget_cmd.csvlog
: analyzing files specified inlogfile
through an SSH session to remote computer (usingssh_cmd
's output).logfile
may contain wildcards, like/c/PerfLogs/cpulog_*.csv
, but may not contain spaces. Useful if you have Windows and uselogman
to dump CPU load to specified files in format like"09/22/2023 23:35:39.309","69.829614488284107665"
. Output will be colorized: 0..9% is light gray, 10..79% is cyan, 80..100% is bright white.
-
-
tempget_cmd
: Print a temperature of remote computer's sensor number$1
, starting from 0, or print "99.9
" on error. Should print exactly 4 characters (but may produce a newline). Return value does not matter. Maximum 7 temperature sensors are now supported, and 6 if the last position is occupied by battery sensor. Actual number of sensors are specified intemp_nodes
file inside computer's subdirectory incomputers.d
. Could be symlinked to:-
../../templates.d/tempget_cmd.generic
: Callget_temperature
by SSH (usingssh_cmd
's output) passing the first parameter to it. -
../../templates.d/tempget_cmd.hdd
: Query/dev/sda
(if first parameter is 0) or/dev/sdb
(if first parameter is 1) for its temperature usingsmartctl
. Note:smartctl
utility should be installed on the remote computer. -
../../templates.d/tempget_cmd.csvlog
: Analyze a file specified intemplogfile
through an SSH session to remote computer (usingssh_cmd
's output).templogfile
may not contain wildcards and spaces, and should look like/c/PerfLogs/GPU-Z_Sensor_Log.txt
. First parameter is the index of temperature column in that file. Useful if you have Windows and use GPU-Z to dump GPU/CPU temperatures to a file in CSV-like (but with indents and without quotes) format like2023-09-22 23:36:08 , 54.0 , 80.3 ,
. -
../../templates.d/tempget_cmd.difflog
: Analyze two files specified incputempfile
andgputempfile
correspondingly, through an SSH session to remote computer (usingssh_cmd
's output).*tempfile
may contain wildcards (in that case the first file found not older than 10 min by modification time is analyzed); if it contains spaces,(
or)
, these characters must be escaped. E.g, it may look like/c/Program\ Files\ \(x86\)/SpeedFan/SFLog*.csv
. If first parameter is 0,cputempfile
is analyzed, and format is treated as SpeedFan log format: number of seconds since midnight, and then temperature in format like12.3
or45,6
. If first parameter is 1,gputempfile
is analyzed, and its format treated as withtempget_cmd.csvlog
, with the index of temperature column being 0. Useful if you have Windows and use SpeedFan to dump CPU temperature, and GPU-Z to dump GPU temperature to these two files.
-
-
gethdd_cmd
: Check a consistency of remote computer's disk. Should return 0 on success and non-null on failure. On success, should print either nothing,OK
, or percentage of used space on disk (without the percent sign). In the latter case, rumia will display it and colorize the output: 0..70% is light gray, 71..90% is yellow, 91..100% is bright red.
Could be symlinked to:
* `../../templates.d/gethdd_cmd.sda`: Check remote computer's `/dev/sda` by SSH (using `ssh_cmd`'s output and calling `get_hdd_state`). Deprecated, not recommended to use. Doesn't show used space. * `../../templates.d/gethdd_cmd.nvme`: Do the same, but for `/dev/nvme0n1`. Deprecated, not recommended to use. Doesn't show used space. * `../../templates.d/gethdd_cmd.rootfs`: Do the same, but for a device containing partition that is mounted as the rootfs. This is the only script that checks consistency of disk *and* shows used space. If `watchfs` file does not exist, it shows user space on rootfs; otherwise it checks all filesystems from there and displays the one with most used percentage. Empty `watchfs` is considered an error, it is displayed as 100% being used. * `../../templates.d/gethdd_cmd.mingw`: Don't check remote computer's disk, just show used space on it. You could use this script with Windows remote machines that have ssh access to them enabled and mingw-like bash is running there. Doesn't require `get_hdd_state` to be uploaded to remote machine. The `watchfs` file is used the same way as with `gethdd_cmd.rootfs` (note that typical mingw filesystem names usually are `/c`, `/d`, etc. for drives like `C:`, `D:`, etc.)
-
battery_cmd
: Print a battery level of remote computer. Return value does not matter. Should print exactly 6 characters, of which leading and trailing ones are spaces, and should not produce a newline after that (so actual output should look like what commandsecho -n " 95 % "
,echo -n " 2 % "
, orecho -n " 100% "
produce. Could be symlinked to:-
../../templates.d/battery_cmd.uncolored
: Print remote computer's battery level, connecting to it by SSH (usingssh_cmd
's output) and callingget_battery
. -
../../templates.d/battery_cmd.colored
: Do the same, but colorize output: 0..20% is bright red, 21..50% is yellow, 51..100% is cyan.
-
-
Note: if you wish to place a separator between two lines, name a directory
using empty hostname. E.g., 31-
will place a separator after 30-...
,
but before 32-...
. The contents of directory, which is used as a separator
mark, is ignored by rumia
, except for chosen marker file (see temp_enabled
above), and totally ignored by execute_cmd
. For example, to appear in generic
run of rumia
, such separator's directory should contain temp_enabled
marker.
For RUMIA to be able to monitor computer's availability, this computer
should be able to reply to ping (if you're using ping_cmd.generic
or
ping_cmd.recursive
), or let SSH clients be connected to it (if you're using
ping_cmd.by_ssh
.
Other things require execution of some commands in a SSH session.
For RUMIA to be able to monitor uptime of remote computer, it should have
uptime
command (most POSIX-compliant OS do).
For RUMIA to be able to monitor CPU load of remote computer, it should have
mpstat
command (in most Debian and Red Hat based OS it is contained within
the sysstat
package).
For RUMIA to be able to check HDD state, and unless you're using
gethdd_cmd.mingw
for it, you should copy remote_scripts/get_hdd_state
to the remote computer as get_hdd_state
into any directory from $PATH
.
Note: if you modified ssh_cmd
so you log in as user other than root,
you might need to add that user to sudoers
file. Also, if you're using
gethdd_cmd.rootfs
command file, be sure that stat
and bc
commands
are available on remote computer.
For RUMIA to be able to check battery value, you should copy one of the
remote_scripts/get_battery_*
scripts to the remote computer as get_battery
into any directory from $PATH
. Note: if you modified ssh_cmd
so you
log in as user other than root, you might need to add that user to sudoers
file. If none of these scripts are useful for you, you may write your own based
on supplied scripts as examples. It should read the battery value of your
system and print it as a decimal value from 0 to 100, or print 0 on error.
Output should not contain leading and trailing spaces, but may contain
a trailing newline.
For RUMIA to be able to check CPU temperatures, you should copy one of the
remote_scripts/get_temperature_*
scripts to the remote computer as
get_temperature
into any directory from $PATH
. In most cases, best
choice is get_temperature_configurable
, edited according to structure of
hwmon
sysfs facility (note the comments inside this file). Note: if you
modified ssh_cmd
so you log in as user other than root, you might need to
add that user to sudoers
file. If none of these scripts are useful for you,
you may write your own based on supplied scripts as examples. It should read
the value of temperature sensor with number specified in $1
(starting from 0)
and print it as a fixed point value from 0.0
to 99.9
, or print 99.9
on error. Output should not contain leading and trailing spaces, but may
contain a trailing newline.
To run monitoring system, just run rumia
.
You can specify the following parameters:
-
--nofancynames
: Don't use fancy names for computers, use actual hostnames (as in directory names insidecomputers.d
) instead. -
--oneshot
: Perform only one shot and immediately exit. Don't write anything into a log file. -
--noclear
: Don't clear console screen on start, or when USR1 or USR2 is signaled; don't reposition cursor to the top of the screen on each new shot. Print new shot data just after the previous. -
--config <configfile>
: Use predefined config file instead of default. Note: no other config files is read if this parameter is specified. The only parameter in command line that has a meaning, is the last one. -
--help
: Show usage and exit. -
--version
: Show version and exit.
Additionally, you may specify MACHINES
environment variable to run RUMIA on
a subset of computers defined in computers.d
which have temp_enabled
marker. For example, if you have 01-compA
, 02-compB
, 03-compC
, and
04-compD
subdirectories there, and first three have temp_enabled
inside
them, then by default RUMIA would poll compA, compB and compC. But you may want
to run RUMIA like:
MACHINES="compA compC" ./rumia --oneshot
Then it will poll just compA and compB, and nothing else. Specifying
MACHINES="compA compD"
, by the way, won't let compD to be polled; it is
implied that if a computer doesn't have its own temp_enabled
, then RUMIA
has no knowledge of how to gather information from it.
It is useful to run rumia
on some machine inside a tmux
or screen
session, and if you're about to check computers' status, you might connect
to it, attach to session and check whatever you need, then detach and
disconnect, but tmux
or screen
session then continues to run.
Once started, RUMIA clears screen (if not told not to do so) and starts
checking each computer for which directory is exist inside computers.d
.
Order of polling is determined by names of such directories. For example,
10-computerX
will be checked before 20-computerY
, and if you create
15-computerZ
directory, it will be checked in between.
Information gathered is printed on the screen in a fancy table. This phase (until the last computer is checked) is called a shot.
After all information is gathered, RUMIA enters pause state, which lasts
for a certain time specified in rumia.conf
.
Any change of contents of computers.d
is applied immediately, and will be
used during the very next shot (more precise, to the moment when this computer
is to be polled during the shot). Changes in rumia.conf
are applied, though,
once rumia
is restarted.
You may send SIGINT
to rumia
process (or just press Ctrl+C, if it's in
foreground) to stop performing its operation and exit.
If you ran it not in one shot mode, you may also send SIGUSR1
to it while
it's in pause state, and RUMIA will prematurely end the pause state, clear
the screen again, and immediately start next shot. The corresponding hint is
displayed in top of the screen (if not in one shot mode).
You may also send SIGUSR2
, and this will result in the same, but with
clearing most of config file variables, like PREFIX
, COMPUTERS_D
,
LOGFILE
, RUMIA_LANG
, MARKER
, DELAY
, and SSH_OPTS
, and re-reading
them from config file. It also means that if you're specified some of these
variables in command line or environment, e.g. running rumia like
DELAY=60 rumia
, thus overriding values specified in config file, these
overrides will be cancelled.
Note: if USR1
and USR2
are not signaled, RUMIA won't clear screen once
pause state is finished. Next shot will redraw each line separately, so even
when RUMIA performs a shot, you still have all information still available
on the screen, except the one for a computer currently being polled.
To execute a command you may want to run on several machines that are in your
computers.d
, there is a execute_cmd
script available. Generally, you may
run it just in the form like:
./execute_cmd command
Here, command
is a command that will be executed on every computer defined
inside the computers.d
directory that has specific marker file (it is named
ssh_enabled
by default).
You can specify the following RUMIA parameters (before the actual command you wish to execute):
--config <configfile>
;--help
;--version
.
They have the exact same meaning as for RUMIA itself.
Additionally, you may stop parsing parameters by specifying --
after all
execute_cmd
parameters. So, execute_cmd --help
will print help, but
execute_cmd -- --help
will try to run --help
binary instead (but it is
still useless in some cases, because bash and some other shells do not
recognize --help
as binary name). And execute_cmd -- --
will try to run
--
binary in the same manner, by the way. Parameter parsing is stopped
on the first unrecognized command line token, so execute_cmd bash --help
will execute bash --help
, and won't treat --help
as execute_cmd
parameter.
Additionally, you may specify MACHINES
environment variable to run
execute_cmd
for specific machines only, same as for RUMIA.
Note: the command will be executed only on machines that have ssh_enabled
marker file in their computers.d
subdirectories; other machines will be
skipped. You may redefine the name of this file by specifying it in SMARKER
variable, like this:
SMARKER=autofs_enabled ./execute_cmd ls /autofs/mounts
This command will list contents of /autofs/mounts
only on those computers
that have autofs_enabled
marker file in their computers.d
subdirectories.
Actually, Rumia is a youkai girl from Touhou Project series, and she is known for some of her gastronomic addictions and appetite; just like Rumia from Touhou consumes her victims, RUMIA consumes (and aggregates) information from computers configured.
Now live with this information. :-)