Skip to main content

utility which helps to execute commands on behalf of all users in the system in a row

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

with-each-user-0.9.2.tar.gz (4.2 kB view details)

Uploaded Source

File details

Details for the file with-each-user-0.9.2.tar.gz.

File metadata

File hashes

Hashes for with-each-user-0.9.2.tar.gz
Algorithm Hash digest
SHA256 0252648503c511edeaf58e5efbaffbcb0fc574ab2811f7184392bf298240c828
MD5 cad3d0c312c8c65e9a027f8a387c7b3b
BLAKE2b-256 4a88ae60c0c354cd875bf707f00fcfcf21f76487b227ac9d525db1da44a03cc5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page