davydany / sultan

Sultan: Command and Rule over your Shell
https://sultan.readthedocs.io/en/latest/
MIT License
680 stars 35 forks source link
bash bash-script cli command-line command-line-tool command-prompt compiler python2 python3 ssh terminal zsh

.. image:: https://raw.githubusercontent.com/aeroxis/sultan/master/docs/img/sultan-logo.png :alt: sultan logo :align: right

Command and Rule over your Shell

.. image:: https://badge.fury.io/py/sultan.svg :alt: PyPI Version :target: https://badge.fury.io/py/sultan

.. image:: https://travis-ci.org/aeroxis/sultan.svg?branch=master :alt: Travis Build Status :target: https://travis-ci.org/aeroxis/sultan

.. image:: http://img.shields.io/:license-mit-blue.svg :alt: MIT License :target: http://doge.mit-license.org

.. image:: https://readthedocs.org/projects/sultan/badge/?version=latest :alt: Documentation Status :target: http://sultan.readthedocs.io/en/latest/?badge=latest

Sultan now supports Python 2.7+ and 3.0+


Note

Your input is welcome! Please provide your feedback by creating issues on Github <https://github.com/aeroxis/sultan/issues>_


Install

.. code:: bash

pip install --upgrade sultan


Documentation

.. image:: https://readthedocs.org/projects/sultan/badge/?version=latest :alt: Documentation Status :target: http://sultan.readthedocs.io/en/latest/?badge=latest

Documentation is available on ReadTheDocs: http://sultan.readthedocs.io/en/latest/


What is Sultan?

Sultan is a Python package for interfacing with command-line utilities, like yum, apt-get, or ls, in a Pythonic manner. It lets you run command-line utilities using simple function calls.

The simplest way to use Sultan is to just call it:

.. code:: python

from sultan.api import Sultan s = Sultan() s.sudo("yum install -y tree").run()

Runs:

.. code:: bash

sudo yum install -y tree;


The recommended way of using Sultan is to use it in Context Management mode. Here is how to use Sultan with Context Management:

.. code:: python

from sultan.api import Sultan

with Sultan.load(sudo=True) as s: s.yum("install -y tree").run()

Runs:

.. code:: bash

sudo su - root -c 'yum install -y tree;'


What if we want to install this command on a remote machine? You can easily achieve this using context management:

.. code:: python

from sultan.api import Sultan

with Sultan.load(sudo=True, hostname="myserver.com") as sultan: sultan.yum("install -y tree").run()

Runs:

.. code:: bash

ssh root@myserver.com 'sudo su - root -c 'yum install -y tree;''


If you enter a wrong command, Sultan will print out details you need to debug and find the problem quickly.

Here, the same command was run on a Mac:

.. code:: python

from sultan.api import Sultan

with Sultan.load(sudo=True, hostname="myserver.com") as sultan: sultan.yum("install -y tree").run()

Yields:

.. code:: bash

sultan: sudo su - root -c 'yum install -y tree;' Password: sultan: --{ STDERR }------------------------------------------------------------------------------------------------------- sultan: | -sh: yum: command not found


Want to get started? Simply install Sultan, and start writing your clean code::

pip install --upgrade sultan

If you have more questions, check the docs! http://sultan.readthedocs.io/en/latest/