Skip to main content

With each user

The with_each_user command is basically nothing but a shortcut/replacement for constructs like:

root:~# ls /home | xargs -i su - {} -c "whoami"

That is, its goal is to execute the same command for all users in the system in a row. The line above can be rewritten with:

root:~# with_each_user whoami

Additionally, you can filter out unneeded users by their logins, shells and uid, run commands simultaneously, interactively, and store script outputs in log files in a separate directory.

See usage for details.

Usage

This is the with_each_user --help output:

usage: with_each_user [-h] [-m MASK] [-s SHELL] [-u MIN_UID] [-U MAX_UID]
                      [-c CONCURRENCY] [-d CURRENT_DIRECTORY] [-i]
                      [-L LOG_DIRECTORY]
                      command [command ...]

Execute a command for a number users in the server

positional arguments:
  command               Shell command to execute

optional arguments:
  -h, --help            show this help message and exit
  -m MASK, --mask MASK  Filter users by their logins. Globbing is here
                        allowed, you can type, for example, "user*"
  -s SHELL, --shell SHELL
                        Filter users by their shells. For example, you can
                        exclude the majority of system users by issuing
                        "/bin/bash" here
  -u MIN_UID, --min-uid MIN_UID
                        Filter users by their minimal uid.
  -U MAX_UID, --max-uid MAX_UID
                        Filter users by their max uid (to filter out "nobody",
                        for example
  -c CONCURRENCY, --concurrency CONCURRENCY
                        Number of processes to run simultaneously
  -d CURRENT_DIRECTORY, --current-directory CURRENT_DIRECTORY
                        Script working directory (relative to user's home)
  -p, --preserve-environment
                        Preserve root environment. Arguments match the same of
                        "su" command
  -f, --format          Format command line with variables custom for every
                        user. Supported variables: {user}, {uid}, {gid},
                        {home}, {shell}, {gecos}.
  -r, --root            Run command with root privileges (do not "su" to
                        selected user). Option "--format" is helpful there
  -i, --interactive     Interactive execution. Set this flag to run processes
                        interactively
  -L LOG_DIRECTORY, --log-directory LOG_DIRECTORY
                        Directory to store log for all executions. Omit this
                        argument if you want just to print everything to
                        stdout/stderr

Metadata

Release files for with-each-user 0.9.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for with-each-user 0.9.2
File Size Uploaded
with-each-user-0.9.2.tar.gz 4.2 kB Details

Release files / with-each-user-0.9.2.tar.gz

Download URL with-each-user-0.9.2.tar.gz
Size 4.2 kB
Tags Source
SHA-256 checksum
How to use checksums
0252648503c511edeaf58e5efbaffbcb0fc574ab2811f7184392bf298240c828
BLAKE2b-256 checksum
How to use checksums
4a88ae60c0c354cd875bf707f00fcfcf21f76487b227ac9d525db1da44a03cc5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.9.2 This release

1 release file

0.9.1

1 release file

0.9

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page