summaryrefslogtreecommitdiff
path: root/sysutils/fabric
AgeCommit message (Collapse)AuthorFilesLines
2012-04-14Fix PLIST.gls2-2/+6
Thanks imil@!
2012-04-14Update sysutils/fabric to 1.4.1gls2-7/+6
Upstream changes: ----------------- 2012-04-04: released Fabric 1.4.1 2012-04-04: released Fabric 1.3.6 [Bug] #608: Add capture kwarg to rsync_project to aid in debugging rsync problems. [Bug] #607: Allow local to display stdout/stderr when it warns/aborts, if it was capturing them. [Bug] #395: Added an FAQ entry detailing how to handle init scripts which misbehave when a pseudo-tty is allocated. [Bug] #568: execute allowed too much of its internal state changes (to variables such as env.host_string and env.parallel) to persist after execution completed; this caused a number of different incorrect behaviors. execute has been overhauled to clean up its own state changes - while preserving any state changes made by the task being executed. [Bug] #584: upload_project did not take explicit remote directory location into account when untarring, and now uses cd to address this. Thanks to Ben Burry for the patch. [Bug] #458: with_settings did not perfectly match settings, re: ability to inline additional context managers. This has been corrected. Thanks to Rory Geoghegan for the patch. [Bug] #499: contrib.files.first used an outdated function signature in its wrapped exists call. This has been fixed. Thanks to Massimiliano Torromeo for catch & patch. [Bug] #551: --list output now detects terminal window size and truncates (or doesn't truncate) accordingly. Thanks to Horacio G. de Oro for the initial pull request. [Bug] #572: Parallel task aborts (as oppposed to unhandled exceptions) now correctly print their abort messages instead of tracebacks, and cause the parent process to exit with the correct (nonzero) return code. Thanks to Ian Langworth for the catch. [Bug] #306: Remote paths now use posixpath for a separator. Thanks to Jason Coombs for the patch. 2012-02-13: released Fabric 1.4.0 2012-02-13: released Fabric 1.3.5 2012-02-13: released Fabric 1.2.6 2012-02-13: released Fabric 1.1.8 [Bug] #495: Fixed documentation example showing how to subclass Task. Thanks to Brett Haydon for the catch and Mark Merritt for the patch. [Bug] #410: Fixed a bug where using the task decorator inside/under another decorator such as hosts could cause that task to become invalid when invoked by name (due to how old-style vs new-style tasks are detected.) Thanks to Dan Colish for the initial patch. [Feature] #559: rsync_project now allows users to append extra SSH-specific arguments to rsync`s --rsh flag. [Feature] #138: env.port may now be written to at fabfile module level to set a default nonstandard port number. Previously this value was read-only. [Feature] #3: Fabric can now load a subset of SSH config functionality directly from your local ~/.ssh/config if env.use_ssh_config is set to True. See Leveraging native SSH config files for details. Thanks to Kirill Pinchuk for the initial patch. [Feature] #12: Added the ability to try connecting multiple times to temporarily-down remote systems, instead of immediately failing. (Default behavior is still to only try once.) See env.timeout and env.connection_attempts for controlling both connection timeouts and total number of attempts. reboot has also been overhauled (but practically deprecated - see its updated docs.) [Feature] #474: execute now allows you to access the executed task's return values, by itself returning a dictionary whose keys are the host strings executed against. [Bug] #487: Overhauled the regular expression escaping performed in append and contains to try and handle more corner cases. Thanks to Neilen Marais for the patch. [Support] #532: Reorganized and cleaned up the output of fab --help. [Feature] #8: Added --skip-bad-hosts/env.skip_bad_hosts option to allow skipping past temporarily down/unreachable hosts. [Feature] #13: Env vars may now be set at runtime via the new --set command-line flag. [Feature] #506: A new output alias, commands, has been added, which allows hiding remote stdout and local "running command X" output lines. [Feature] #72: SSH agent forwarding support has made it into Fabric's SSH library, and hooks for using it have been added (disabled by default; use -A or env.forward_agent to enable.) Thanks to Ben Davis for porting an existing Paramiko patch to ssh and providing the necessary tweak to Fabric.
2012-03-15Bump PKGREVISION from default python to 2.7.obache1-1/+2
2012-02-12Update systutils/fabric to 1.3.4.gls4-26/+18
pkgsrc changes: - Adjust dependency chain. Now depends on security/py-ssh instead of security/py-paramiko. Upstream changes: The main new feature in Fabric 1.3.x is parallel tasks execution support (invoked by fab -P). Releases at the same time in the 1.2.x and 1.3.x branches, including the same bugfixes. Changes since the latest release in the 1.2.x branch (1.2.5), included in branch 1.3: 2012-01-12: released Fabric 1.3.4 [Bug] #492: @parallel did not automatically trigger linewise output, as was intended. This has been fixed. Thanks to Brandon Huey for the catch. [Bug] #510: Parallel mode is incompatible with user input, such as password/hostname prompts, and was causing cryptic Operation not supported by device errors when such prompts needed to be displayed. This behavior has been updated to cleanly and obviously abort instead. [Bug] #494: Fixed regression bug affecting some env values such as env.port under parallel mode. Symptoms included rsync_project bailing out due to a None port value when run under @parallel. Thanks to Rob Terhaar for the report. [Bug] #339: Don't show imported colors members in --list output. Thanks to Nick Trew for the report.
2011-12-04Update sysutils/fabric to 1.2.5gls3-7/+13
Upstream changes: 2011-11-23: released Fabric 1.2.5 2011-11-23: released Fabric 1.1.7 [Bug] #441: Specifying a task module as a task on the command line no longer blows up but presents the usual "no task by that name" error message instead. Thanks to Mitchell Hashimoto for the catch. [Bug] #475: Allow escaping of equals signs in per-task args/kwargs. [Bug] #450: Improve traceback display when handling "ImportError"s for dependencies. Thanks to David Wolever for the patches. [Bug] #446: Add QNX to list of secondary-case sed targets. Thanks to Rodrigo Madruga for the tip. [Bug] #443: exists didn't expand tildes; now it does. Thanks to Riccardo Magliocchetti for the patch. [Bug] #437: with_settings now correctly preserves the wrapped function's docstring and other attributes. Thanks to Eric Buckley for the catch and Luke Plant for the patch. [Bug] #400: Handle corner case of systems where pwd.getpwuid raises KeyError for the user's UID instead of returning a valid string. Thanks to Dougal Matthews for the catch. [Bug] #397: Some poorly behaved objects in third party modules triggered exceptions during Fabric's "classic or new-style task?" test. A fix has been added which tries to work around these. [Bug] #341: append incorrectly failed to detect that the line(s) given already existed in files hidden to the remote user, and continued appending every time it ran. This has been fixed. Thanks to Dominique Peretti for the catch and Martin Vilcans for the patch. [Bug] #342: Combining cd with put and its use_sudo keyword caused an unrecoverable error. This has been fixed. Thanks to Egor M for the report. [Bug] #482: Parallel mode should imply linewise output; omission of this behavior was an oversight. [Bug] #230: Fix regression re: combo of no fabfile & arbitrary command use. Thanks to Ali Saifee for the catch.
2011-11-23Update sysutils/fabric to 1.2.4gls4-10/+10
Upstream changes: 2011-11-07: released Fabric 1.2.4 [Support] #459: Update our setup.py files to note that PyCrypto released 2.4.1, which fixes the setuptools problems. [Support] #467: (also #468, #469) Handful of documentation clarification weaks. Thanks to Paul Hoffman for the patches.
2011-11-02Update sysutils/fabric to 1.2.3gls3-12/+12
Upstream changes since 1.2.2: :bug:`323` ~fabric.operations.put forgot how to expand leading tildes in the remote file path. This has been corrected. Thanks to Piet Delport for the catch. :bug:`182` During display of remote stdout/stderr, Fabric occasionally printed extraneous line prefixes (which in turn sometimes overwrote wrapped text.) This has been fixed. :bug:`430` Tasks decorated with ~fabric.decorators.runs_once printed extraneous 'Executing...' status lines on subsequent invocations. This is noisy at best and misleading at worst, and has been corrected. Thanks to Jacob Kaplan-Moss for the report. Update to 1.3 will require a new Python ssh library - forked from paramiko.
2011-10-04Update sysutils/fabric to 1.2.2gls2-6/+6
Full changelog is: https://github.com/fabric/fabric/blob/1.2.2/docs/changelog.rst Changelog: :release:`1.2.2 <2011-09-01>` :release:`1.1.4 <2011-09-01>` :release:`1.0.4 <2011-09-01>` :bug:`252` ~fabric.context_managers.settings would silently fail to set env values for keys which did not exist outside the context manager block. It now works as expected. Thanks to Will Maier for the catch and suggested solution. :support:`393` Fixed a typo in an example code snippet in the task docs. Thanks to Hugo Garza for the catch. :bug:`396` :option:`--shortlist` broke after the addition of :option:`--list-format <-F>` and no longer displayed the short list format correctly. This has been fixed. :bug:`373` Re-added missing functionality preventing :ref:`host exclusion <excluding-hosts>` from working correctly. :bug:`303` Updated terminal size detection to correctly skip over non-tty stdout, such as when running fab taskname | other_command. :release:`1.2.1 <2011-08-21>` :release:`1.1.3 <2011-08-21>` :release:`1.0.3 <2011-08-21>` :bug:`417` :ref:`abort-on-prompts` would incorrectly abort when set to True, even if both password and host were defined. This has been fixed. Thanks to Valerie Ishida for the report. :support:`416` Updated documentation to reflect move from Redmine to Github. :bug:`389` Fixed/improved error handling when Paramiko import fails. Thanks to Brian Luft for the catch.
2011-08-08Update sysutils/fabric to 1.2.0gls3-21/+10
Upstream changelog: ========= * :release:`1.2.0 <2011-07-12>` * :feature:`22` Enhanced `@task <fabric.decorators.task>` to add :ref:`aliasing <task-aliases>`, :ref:`per-module default tasks <default-tasks>`, and :ref:`control over the wrapping task class <task-decorator-and-classes>`. Thanks to Travis Swicegood for the initial work and collaboration. * :bug:`380` Improved unicode support when testing objects for being string-like. Thanks to Jiri Barton for catch & patch. * :support:`382` Experimental overhaul of changelog formatting & process to make supporting multiple lines of development less of a hassle. * :release:`1.1.2 <2011-07-07>` (see below for details) * :release:`1.0.2 <2011-06-24>` (see below for details) Prehistory ========== The content below this section comes from older versions of Fabric which wrote out changelogs to individual, undated files. They have been concatenated and preserved here for historical reasons, and may not be in strict chronological order. ---- Changes in version 1.1.2 (2011-07-07) ===================================== Bugfixes -------- * :issue:`375`: The logic used to separate tasks from modules when running ``fab --list`` incorrectly considered task classes implementing the mapping interface to be modules, not individual tasks. This has been corrected. Thanks to Vladimir Mihailenco for the catch.
2011-07-12Update sysutils/fabric to 1.1.1gls3-7/+23
Upstream changes highlights: Many, many bugfixes. In release 1.1, highlights are * #76: New-style tasks have been added. With the addition of the task decorator and the Task class, you can now "opt-in" and explicitly mark task functions as tasks, and Fabric will ignore the rest. The original behavior (now referred to as "classic" tasks) will still take effect if no new-style tasks are found. Major thanks to Travis Swicegood for the original implementation. * #56: Namespacing is now possible: Fabric will crawl imported module objects looking for new-style task objects and build a dotted hierarchy (tasks named e.g. web.deploy or db.migrations.run), allowing for greater organization. See Namespaces for details. Thanks again to Travis Swicegood.
2011-04-23Update sysutils/fabric to 1.0.1gls3-7/+8
Upstream changes: Bugfixes * #301: Fixed a bug in local?s behavior when capture=False and output.stdout (or .stderr) was also False. Thanks to Chris Rose for the catch. * #310: Update edge case in put where using the mode kwarg alongside use_sudo=True runs a hidden sudo command. The mode kwarg needs to be octal but was being interpolated in the sudo call as a string/integer. Thanks to Adam Ernst for the catch and suggested fix. * #311: append was supposed to have its partial kwarg's default flipped from True to False. However, only the documentation was altered. This has been fixed. Thanks to Adam Ernst for bringing it to our attention. * #312: Tweak internal I/O related loops to prevent high CPU usage and poor screen-printing behavior on some systems. Thanks to Kirill Pinchuk for the initial patch. * #320: Some users reported problems with dropped input, particularly while entering sudo passwords. This was fixed via the same change as for #312. Documentation * Added a missing entry for env.path in the usage documentation.
2011-03-08Update sysutils/fabric to 1.0.0gls4-14/+29
Pkgsrc changes: - Confirm it's working with python27 Upstream changes: Changes in version 1.0 This page lists all changes made to Fabric in its 1.0.0 release. Highlights * #7: run/sudo now allow full interactivity with the remote end. You can interact with remote prompts and similar interfaces, making certain tasks much easier, and freeing you from the need to find noninteractive solutions if you don't want to. See Interaction with remote programs for more on these changes. * put and get received many updates, including but not limited to: recursion, globbing, inline sudo capability, and increased control over local file paths. See the individual ticket line-items below for details. Erich Heine (sophacles on IRC) played a large part in implementing and/or collecting these changes and deserves much of the credit. * Added functionality for loading fabfiles which are Python packages (directories) instead of just modules (single files). This allows for easier organization of nontrivial fabfiles and paves the way for task namespacing in the near future. See Fabfile discovery for details. * #185: Mostly of interest to those contributing to Fabric itself, Fabric now leverages Paramiko to provide a stub SSH and SFTP server for use during runs of our test suite. This makes quick, configurable full-stack testing of Fabric (and, to an extent, user fabfiles) possible. Backwards-incompatible changes The below changes are backwards incompatible and have the potential to break your 0.9.x based fabfiles! * contains and append previously had the filename argument in the second position, whereas all other functions in the contrib.files module had filename as the first argument. These two functions have been brought in line with the rest of the module. * sed now escapes single-quotes and parentheses in addition to forward slashes, in its before and after kwargs. Related to, but not entirely contained within, #159. * The user and pty kwargs in sudo's signature have had their order swapped around to more closely match run. * As part of the changes made in #7, run and sudo have had the default value of their pty kwargs changed from False to True. This, plus the addition of the combine_stderr kwarg/env var, may result in significant behavioral changes in remote programs which operate differently when attached to a tty. * #61: put and get now honor the remote current-working-directory changes applied by cd. Previously they would always treat relative remote paths as being relative to the remote home directory. * #79: get now allows increased control over local filenames when downloading single or multiple files. This is backwards incompatible because the default path/filename for downloaded files has changed. Thanks to Juha Mustonen, Erich Heine and Max Arnold for brainstorming solutions. * #88: local has changed the default value of its capture kwarg, from True to False. This was changed in order to be more intuitive, at the cost of no longer defaulting to the same rich return value as in run/sudo (which is still available by specifying capture=True.) * #121: put will no longer automatically attempt to mirror local file modes. Instead, you?ll need to specify mirror_local_mode=True to get this behavior. Thanks to Paul Smith for a patch covering part of this change. * #172: append has changed the default value of its partial kwarg from True to False in order to be safer/more intuitive. * #221: runs_once now memoizes the wrapped task's return value and returns that value on subsequent invocations, instead of returning None. Thanks to Jacob Kaplan-Moss and Travis Swicegood for catch + patch. Feature additions * Prerelease versions of Fabric (starting with the 1.0 prereleases) will now print the Git SHA1 hash of the current checkout, if the user is working off of a Git clone of the Fabric source code repository. * Added path context manager for modifying commands? effective $PATH. * Added convenience .succeeded attribute to the return values of run/sudo/local which is simply the opposite of the .failed attribute. (This addition has also been backported to Fabric's 0.9 series.) * Refactored SSH disconnection code out of the main fab loop into disconnect_all, allowing library users to avoid problems with non-fabfile Python scripts hanging after execution finishes. * #2: Added use_sudo kwarg to put to allow uploading of files to privileged locations. Thanks to Erich Heine and IRC user npmap for suggestions and patches. * #23: Added prefix context manager for easier management of persistent state across commands. * #27: Added environment variable (always_use_pty) and command-line flag (--no-pty) for global control over the run/sudo pty argument. * #28: Allow shell-style globbing in get. Thanks to Erich Heine and Max Arnold. * #55: run, sudo and local now provide access to their standard error (stderr) as an attribute on the return value, alongside e.g. .failed. * #148: local now returns the same 'rich' string object as run/sudo do, so that it is a string containing the command's stdout (if capture=True) or the empty string (if capture=False) which exposes the .failed and .return_code attributes, and so forth. * #151: Added a puts utility function, which allows greater control over fabfile-generated (as opposed to Fabric-generated) output. Also added fastprint, an alias to puts allowing for convenient unbuffered, non-newline-terminated printing. * #192: Added per-user/host password cache to assist in multi-connection scenarios. * #193: When requesting a remote pseudo-terminal, use the invoking terminal's dimensions instead of going with the default. * #217: get/put now accept file-like objects as well as local file paths for their local_path arguments. * #245: Added the lcd context manager for controlling local's current working directory and put/get's local working directories. * #274: put/get now have return values which may be iterated over to access the paths of files uploaded remotely or downloaded locally, respectively. These return values also allow access to .failed and .succeeded attributes, just like run and friends. (In this case, .failed is actually a list itself containing any paths which failed to transfer, which naturally acts as a boolean as well.) Bugfixes * N/A Documentation updates * API, tutorial and usage docs updated with the above new features. * README now makes the Python 2.5+ requirement up front and explicit; some folks were still assuming it would run on Python 2.4. * Added a link to Python?s documentation for string interpolation in upload_template's docstring. Changes in version 0.9.5 The following changes were implemented in Fabric 0.9.5: Bugfixes * #264: Fix edge case in reboot by gracefully clearing connection cache. * #268: Allow for @ symbols in usernames, which is valid on some systems. Fabric's host-string parser now splits username and hostname at the last @ found instead of the first.
2011-02-26Remove unused lines in Makefilegls1-4/+1
2011-02-24Update sysutils/fabric to version 0.9.4gls3-8/+11
Very minor release. pkgsrc changes: - switch MASTER_SITES to pypi.python.org upstream changes: * Added documentation for using Fabric as a library. * Mentioned our Twitter account on the main docs page. * #290: Added escape kwarg to append to allow control over previously automatic single-quote escaping.
2010-12-06Update fabric to 0.9.3gls4-19/+29
Pkgsrc changes: - add depends to py-crypto Upstream changes: 0.9.3 ===== Feature additions * #255: Added stderr and succeeded attributes to local. * #254: Backported the .stderr and .succeeded attributes on run/sudo return values, from the Git master/pre-1.0 branch. Please see those functions? API docs for details. Bugfixes * #228: We discovered that the pip + PyCrypto installation problem was limited to Python 2.5 only, and have updated our setup.py accordingly. * #230: Arbitrary or remainder commands (fab <opts> -- <run command here>) will no longer blow up when invoked with no fabfile present. Thanks to IRC user orkaa for the report. * #242: Empty string values in task CLI args now parse correctly. Thanks to Aaron Levy for the catch + patch. Documentation updates * #239: Fixed typo in execution usage docs. Thanks to Pradeep Gowda and Turicas for the catch. 0.9.2 ===== Feature additions * The reboot operation has been added, providing a way for Fabric to issue a reboot command and then reconnect after the system has restarted. * python setup.py test now runs Fabric?s test suite (provided you have all the prerequisites from the requirements.txt installed). Thanks to Eric Holscher for the patch. * Added functionality for loading fabfiles which are Python packages (directories) instead of just modules (single files.) See Fabfile discovery. * Added output lines informing the user of which tasks are being executed (e.g. [myserver] Executing task 'foo'.) * Added support for lazy (callable) role definition values in env.roledefs. * Added contrib.django module with basic Django integration. * env.local_user was added, providing easy and permanent access to the local system username, even if an alternate remote username has been specified. * #29: Added support for arbitrary command-line-driven anonymous tasks via fab [options] -- [shell command]. See Arbitrary remote shell commands. * #52: Full tracebacks during aborts are now displayed if the user has opted to see debug-level output. * #101: Added colors module with basic color output support. (#101 is still open: we plan to leverage the new module in Fabric?s own output in the future.) * #137: Commas used to separate per-task arguments may now be escaped with a backslash. Thanks to Erich Heine for the patch. * #144: hosts (and roles) will now expand a single, iterable argument instead of requiring one to use e.g. @hosts(*iterable). * #151: Added a puts utility function, which allows greater control over fabfile-generated (as opposed to Fabric-generated) output. Also added fastprint, an alias to puts allowing for convenient unbuffered, non-newline-terminated printing. * #208: Users rolling their own shell completion or who otherwise find themselves performing text manipulation on the output of --list may now use --shortlist to get a plain, newline-separated list of task names. Bugfixes * The interactive ?what host to connect to?? prompt now correctly updates the appropriate environment variables (hostname, username, port) based on user input. * Fixed a bug where Fabric?s own internal fabfile would pre-empt the user?s fabfile due to a PYTHONPATH order issue. User fabfiles are now always loaded at the front of the PYTHONPATH during import. * Disabled some DeprecationWarnings thrown by Paramiko when that library is imported into Fabric under Python 2.6. * #44, #63: Modified rsync_project to honor the SSH port and identity file settings. Thanks to Mitch Matuson and Morgan Goose. * #123: Removed Cygwin from the ?are we on Windows? test; now, only Python installs whose sys.platform says 'win32' will use Windows-only code paths (e.g. importing of pywin32). Documentation updates * Added a few new items to the FAQ. * #173: Simple but rather embarrassing typo fix in README. Thanks to Ted Nyman for the catch. * #194: Added a note to the install docs about a possible edge case some Windows 64-bit Python users may encounter. * #216: Overhauled the process backgrounding FAQ to include additional techniques and be more holistic. Packaging updates * #86, #158: Removed the bundled Paramiko 1.7.4 and updated the setup.py to require Paramiko >=1.7.6. This lets us skip the known-buggy Paramiko 1.7.5 while getting some much needed bugfixes in Paramiko 1.7.6.
2010-06-28Update to fabric 0.9.1gls3-8/+10
======================== Changes in version 0.9.1 ======================== The following changes were implemented in Fabric 0.9.1: Feature additions ================= :issue:`82`: `~fabric.contrib.files.append` now offers a `partial` kwarg allowing control over whether the "don't append if given text already exists" test looks for exact matches or not. Thanks to Jonas Nockert for the catch and discussion. :issue:`112`: `fab --list` now prints out the fabfile's module-level docstring as a header, if there is one. :issue:`141`: Added some more CLI args/env vars to allow user configuration of the Paramiko `connect` call -- specifically :ref:`no_agent` and :ref:`no_keys`. Bugfixes ======== :issue:`75`: `fab`, when called with no arguments or (useful) options, now prints help, even when no fabfile can be found. Previously, calling `fab` in a location with no fabfile would complain about the lack of fabfile instead of displaying help. :issue:`130`: Context managers now correctly clean up `env` if they encounter an exception. Thanks to Carl Meyer for catch + patch. :issue:`132`: `~fabric.operations.local` now calls `strip` on its stdout, matching the behavior of `~fabric.operations.run`/`~fabric.operations.sudo`. Thanks to Carl Meyer again on this one. :issue:`166`: `~fabric.context_managers.cd` now correctly overwrites `env.cwd` when given an absolute path, instead of naively appending its argument to `env.cwd`'s previous value. Documentation updates ===================== A number of small to medium documentation tweaks were made which had no specific Redmine ticket. The largest of these is the addition of :doc:`the FAQ <../faq>` to the Sphinx documentation instead of storing it as a source-only text file. (Said FAQ was also slightly expanded with new FAQs.) :issue:`17`: Added :ref:`note to FAQ <faq-daemonize>` re: use of `dtach` as alternative to `screen`. Thanks to Erich Heine for the tip. :issue:`64`: Updated :ref:`installation docs <downloads>` to clarify where package maintainers should be downloading tarballs from. Thanks to James Pearson for providing the necessary perspective. :issue:`95`: Added a link to a given version's changelog on the PyPI page (technically, to the `setup.py` `long_description` field). :issue:`110`: Alphabetized :ref:`the CLI argument command reference <command-line-options>`. Thanks to Erich Heine. :issue:`120`: Tweaked documentation, help strings to make it more obvious that fabfiles are simply Python modules. :issue:`127`: Added :ref:`note to install docs <pypm>` re: ActiveState's PyPM. Thanks to Sridhar Ratnakumar for the tip.
2010-05-26Fix HOMEPAGEgls1-2/+2
2010-05-26Get rid of useless commentsgls1-12/+2
2010-05-26Fix categoriesgls1-2/+2
2010-05-26Import fabric-0.9.0 as sysutils/fabric.gls6-0/+188
Fabric is a Python library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks. It provides a basic suite of operations for executing local or remote shell commands (normally or via sudo) and uploading/downloading files, as well as auxiliary functionality such as prompting the running user for input, or aborting execution.