A versatile automation framework that models user actions on the terminal to automate command-line processes.
ShutIt is an automation framework that models a user's actions on a terminal, enabling automation of any process that can be run by a human on the command line. Originally designed for complex Docker builds, it has evolved into a general-purpose tool supporting bash, Docker, Vagrant, SSH, and arbitrary build contexts. It also serves as an educational tool for creating tutorials and reproducible environments.
Developers and sysadmins who prefer bash and command-line workflows but want structured automation without adopting full configuration management systems, as well as educators creating interactive tutorials or reproducible demos.
ShutIt provides a modular, programmer-friendly approach that wraps pexpect for terminal automation, allowing users to stay close to the command line while gaining automation capabilities. It uniquely supports multi-context environments (Docker, Vagrant, SSH) and can auto-generate modules from existing Dockerfiles.
Automation framework for programmers
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Wraps pexpect to automate any command-line process with minimal effort, as demonstrated in the simple file and directory creation example using expect patterns.
Works seamlessly with bash, Docker, Vagrant, and SSH, enabling automation across diverse build environments and infrastructural setups, such as multi-machine Vagrant clusters.
Creates interactive challenges (scales and free-form exercises) for skill development, shown in grep-scales and git-101-tutorial with state restoration via CTRL-G.
Provides a skeleton command to generate modules from scratch or existing Dockerfiles, speeding up containerization and reducing manual coding overhead.
Known issues with unusual shell prompts and escape sequences can cause automation failures, requiring manual fixes via shutit.setup_prompt() as admitted in the README.
Lacks the extensive community modules, plugins, and integrations found in mainstream automation tools like Ansible, limiting out-of-the-box solutions.
Relies on Python and pexpect, which may introduce complexity for users unfamiliar with these technologies, despite documentation; auto-generation helps but doesn't eliminate this.