Useful Python3 and bash shell scripts for macOS/BSD and *NIX. Useful to me, at any rate. YMMV.
Replaces the old Scripnix0 project which had grown crufty and was not macOS-friendly.
Scripnix was born during my Linux server admin days when I wanted all of my aliases and scriplets to follow me from machine to machine. Packaging everything together made installing and keeping up-to-date that much easier. Writing it was also a bash scripting learning exercise, although I soon grew to loathe space-containing-filenames and all of the quoting that implied.
As I moved more to MacOS, the BSD version of most commands clashed with the GNU/Linux versions that Scripnix assumed. Still wanting those handy aliases and scriplets on MacOS, I resurrected Scripnix, but with many more of the commands written in Python, and with Homebrew-supplied GNU versions of my favourite utilities. The Python rewrite sidestepped much of the silly bash quoting and syntax, and made testing practical.
Licensed under the GNU General Public License, version 3. Refer to the attached LICENSE file or see http://www.gnu.org/licenses/ for details.
The current version is 0.1.12. Scripnix is semver-ish in its versioning scheme.
Scripnix is currently an alpha release, so expect many many breaking changes. Once ready for prime time, the major version number will jump to 2 to reflect that this is actually the second incarnation of Scripnix.
Following installation using one of the methods below, you may also want to run the install-scripnix
command as the root user to setup the
system-wide configuration.
Any other users that also wish to use Scripnix should also run that command.
The install-scripnix
command will also suggest changes to your ~/.bashrc
or ~/.profile
files to persist Scripnix in your environment.
It will also suggest changes to the /etc/sudoers
file (vi visudo
) so that the Scripnix commands can be run via sudo
when necessary.
On macOS, Homebrew will take care of installing any dependencies, including Python 3.
brew tap yukondude/tap
brew install scripnix
install-scripnix
On *NIX, you will first need to install Python 3.3 (or higher) using your preferred method.
pip3 install scripnix
install-scripnix
- Install Scripnix, as above, so that all of its dependencies are available.
- Create a Python 3 virtualenv for Scripnix:
mkvirtualenv --python=$(which python3) Scripnix
- Clone the Scripnix repo:
git clone https://github.com/yukondude/Scripnix.git
- Install dependencies:
pip install -r requirements.txt -r requirements-dev.txt -r requirements-test.txt
- Install the project in development mode:
./setup.py develop
- Run the unit tests to make sure everything is copacetic:
./setup.py test
- Pour a snifter of Martell XO and light up a Bolivar Belicoso.
The following command descriptions were generated by describe-scripnix
on February 6, 2017.
Usage: backup-file [OPTIONS] [FILE]...
Backup the given file(s) by making a copy of each with an appended
modification date (yyyymmdd). Append a number if the backup file name
already exists. Remove any SUID or executable permissions from the backup
file.
Options:
-D, --dry-run Show what would happen without actually doing it.
-V, --version Show version and exit.
-h, --help Show this message and exit.
Usage: command-for-pid [OPTIONS] [PID]
Return the command name for the given Process ID (PID). If a PID is not
specified, use the current process.
Options:
-V, --version Show version and exit.
-h, --help Show this message and exit.
Usage: common-netmask [OPTIONS] [IPADDR]...
Given any number of full or partial dotted-quad IPv4 addresses, display
the netmask (and bit length) that matches all of the addresses.
Options:
-V, --version Show version and exit.
-h, --help Show this message and exit.
Usage: describe-scripnix [OPTIONS]
Generate descriptions of all of the Scripnix commands in Markdown format,
suitable for appending to the Scripnix project's README.md file.
Options:
-V, --version Show version and exit.
-h, --help Show this message and exit.
Usage: find-grep [<directory>] <regexp>
Search through the file contents in the specified directory (or the current
directory if not given), and below, for lines that match the given regular
expression.
Usage: gather-cron-jobs [OPTIONS]
Gather all of the system and user crontab scheduled jobs and display them
in a consolidated table (tab-delimited by default): minute (m), hour (h),
day of the month (dom), month (mon), day of the week (dow), user, and
command. Optionally, the results may be sorted (as well as possible) by
the scheduled hour and minute.
Must be run as the root user.
Options:
-d, --delimiter TEXT Column delimiter character(s). [default: tab]
-H, --no-header Don't display the table header row.
-r, --run-parts Display commands in a run-parts target directory as if
they were individually scheduled.
-s, --sort Sort table (approximately) by scheduled time.
-V, --version Show version and exit.
-h, --help Show this message and exit.
Usage: hyphenate [OPTIONS] [TEXT]...
Translate the given text argument(s) (or use the input lines from STDIN)
into the equivalent, filesystem-safe, hyphenated versions.
Options:
-d, --delimiter TEXT Word delimiter character(s). [default: -]
-V, --version Show version and exit.
-h, --help Show this message and exit.
Usage: install-scripnix [OPTIONS]
Install Scripnix for the current user. Global configuration settings (once
installed by the root user) are stored under the /etc/scripnix/ directory.
Per-user configuration settings, including for the root user, are stored
under the ~/.scripnix/ directory and override the global settings. The
installation can be re-run repeatedly, but will not overwrite existing
configuration settings (however file and directory permissions will be
reset).
Options:
--yes Confirm the action without prompting.
-v, --verbose Display the commands as they are being executed.
-D, --dry-run Show what would happen without actually doing it.
-V, --version Show version and exit.
-h, --help Show this message and exit.
Usage: is-remote-cnx
Detects whether this terminal is a remote SSH connection. Exit code will be
zero if it is.
Usage: locate-ll <regexp>
Locate files matching the given regular expression and display matches in a
a long list format. (Requires that [g]updatedb be run periodically to build
the database.)
Usage: os-name [OPTIONS]
Return the operating system platform name.
Options:
-T, --no-translate Do not translate the original operating system string to
its more familiar name.
-V, --version Show version and exit.
-h, --help Show this message and exit.
Usage: show-cron-jobs
Gather all of the system and user crontab scheduled jobs and display them
in a consolidated table, sorted approximately by the scheduled time.
Usage: top-level-pid [OPTIONS] [PID]
Return the top-level parent (below the init or launchd process) Process ID
(PID) for the given PID. If a PID is not specified, use the current
process.
Options:
-V, --version Show version and exit.
-h, --help Show this message and exit.
Usage: whereis-scripnix [OPTIONS]
Return the full, absolute path to the Scripnix package.
Options:
-V, --version Show version and exit.
-h, --help Show this message and exit.