polysh


Namepolysh JSON
Version 0.14 PyPI version JSON
download
home_pagehttp://github.com/innogames/polysh/
SummaryControl thousands of ssh sesions from a single prompt
upload_time2023-06-07 07:11:40
maintainerInnoGames System Administration
docs_urlNone
author
requires_python>=3.5
license
keywords gsh group shell cluster ssh multiplexer
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            .. image:: https://travis-ci.org/innogames/polysh.svg?branch=master
    :target: https://travis-ci.org/innogames/polysh

Polysh
======

Polysh (formerly called Group Shell or gsh) is a remote shell multiplexer.
It lets you control many remote shells at once in a single shell.  Unlike
other commands dispatchers, it is interactive, so shells spawned on
the remote hosts are persistent.  It requires only a SSH server on the remote
hosts, or some other way to open a remote shell.

Python >= 3.5 is required.

Usage::

    polysh [OPTIONS]... HOSTS...

Prompt
------

The `polysh` prompt shows either `ready (X)>` or `waiting (X/Y)>`.
The `ready` prompt means that all enabled remote shells are ready to receive
commands and there are X such remote shells.  Failing that, the `waiting`
prompt is shown, meaning that X remote shells are not yet ready to receive
commands.  Either way, all the readline editing features like navigation in
the history, searching in the history, and completion are available.

Commands prefixed by an exclamation mark are executed locally.  Signals
`Ctrl-C` and `Ctrl-D` are forwarded to the remote shells.

The prompt supports completion by pressing the Tab key.  Completion results
are taken from the command line history, paths from the local filesystem and
commands from the user `$PATH`.

Hostnames with numbers can be generated by `polysh` using the `<START-END>`
syntax.  The generated numbers will be zero padded according to the number
of zeroes in the `START` and `END` numbers.

Options
-------

`--version`
    Show program`s version number and exit

`-h, --help`
    Show the help message and exit

`--hosts-file=FILE`
    Read hostnames from given file, one per line

    Hostnames are given on
    the command line, but they can also be read from files.  The format is
    one hostname per line, `#` comments and blank lines are skipped.

`--command=CMD`
    Command to execute on the remote shells

    This starts `polysh` in
    non-interactive mode.  It will start the remote shells, send the command,
    print the output and exit when the command is completed on all remote
    shells.  This is the same as piping a command on the standard input.
    Exit codes from the remote shells will be aggregated (taking the max)
    to form `polysh`'s exit code.

`--ssh=SSH`
    Command to use for SSH

    By default, `exec ssh -oLogLevel=Quiet -t %(host)s %(port)s`.
    `polysh` spawns ssh for each connection which may spawn your default login
    shell on the remote, but another shell command can be specified here. For
    example, with `--ssh='usleep $((RANDOM*50)); exec ssh'` a delay will be
    introduced to avoid all hosts accessing a NFS server at the same time.  If
    the hostname should not be added at the end of the command, the macro
    `%(host)s` can be inserted where the hostname should be placed.  Also, make
    sure the command you use launches a `pty`, this may need the `-t` option for
    `ssh`.

`--user=USER`
    Remote user to log in as

    When specified, `polysh` will ssh to
    USER@HOST instead of simply HOST.

`--no-color`
    Disable colored hostnames, enabled by default

    When specified, `polysh` will not
    use tty colors for the hostname prefix.

`--password-file=FILE`
    Read a password from the specified file

    `-` is the tty.  This can be
    used when public key authentication is not available, either write
    the password in a file, or set FILE to `-` so that `polysh` will prompt
    for a password.

`--log-file=LOG_FILE`
    File to log each machine conversation

    If specified, `polysh`
    will log all executed commands and their output in the file.  The logging
    destination can be dynamically changed with the `:set_log` control
    command.

`--abort-errors`
    Abort if some shell fails to initialize

    By default, `polysh`
    just logs an error when it cannot successfully open a remote shell.
    With this option, it exits with a failure.

`--debug`
    Print debugging information

    Use this option to see exactly what is
    transferred between `polysh` and the remote shells.  This option can be
    dynamically toggled using the `:set_debug` command in the control shell.

Control Commands
----------------

Control commands are special purpose commands prefixed by a colon and
directed at `polysh` itself instead of the remote shells.  These commands are:

`:add NAMES...`
    Add one or many remote shells

`:chdir LOCAL_PATH`
    Change the current directory of `polysh` (not the remote shells)

`:disable [SHELLS...]`
    Disable sending commands to remote shells

    If the command would have
    no effect, it changes all other shells to the inverse enable value.
    That is, if you disable only already disabled shells, it will first
    enable all other shells.  The special characters `*`, `?`, and `[]` work
    as expected.

`:enable [SHELLS...]`
    Enable sending commands to remote shells.  If the command would have
    no effect, it changes all other shells to the inverse enable value.
    That is, if you enable only already enabled shells, it will first
    disable all other shells.  The special characters `*`, `?`, and `[]` work
    as expected.

`:export_vars`
    Export some environment variables on enabled remote shells

    `POLYSH_NR_SHELLS` is the total number of enabled shells.  `POLYSH_RANK`
    uniquely identifies each shell with a number between `0` and
    `POLYSH_NR_SHELLS - 1`.  `POLYSH_NAME` is the hostname as specified on
    the command line and `POLYSH_DISPLAY_NAME` the hostname as displayed
    by `:list` (most of the time the same as `POLYSH_NAME`).

`:hide_password`
    Do not echo the next typed line

    This is useful when entering password.
    If debugging or logging is enabled, it will be disabled to avoid
    displaying a password. Therefore, you will have to re-enable logging or
    debugging afterwards if need be.

`:list [SHELLS...]`
    List remote shells and their states

    The output consists of:
    `<hostname> <enabled?> <state>: <last printed line>`.  The special
    characters `*`, `?`, and `[]` work as expected.

`:purge [SHELLS...]`
    Delete disabled remote shells

    This helps to have a shorter list.
    The special characters `*`, `?`, and `[]` work as expected.

`:quit`
    Quit `polysh`

`:reconnect [SHELLS...]`
    Try to reconnect to disconnected remote shells

    The special characters `*`, `?`, and `[]` work as expected.

`:rename [NEW_NAME]`
    Rename all enabled remote shells with the argument

    The argument will
    be shell expanded on the remote processes.  With no argument, the original
    hostname will be restored as the displayed name.

`:reset_prompt [SHELLS...]`
    Change the prompt to be recognized by `polysh`

    The special characters `*`, `?`, and `[]` work as expected.

`:send_ctrl LETTER [SHELLS...]`
    Send a control character to remote shells

    The first argument is the control character to send `c` or `d`.  Note that
    these control characters can also be sent simply by typing them.
    The remaining optional arguments are the destination shells.  The special
    characters `*`, `?`, and `[]` work as expected.

`:set_debug y|n [SHELLS...]`
    Enable or disable debugging output for remote shells

    The first
    argument is `y` to enable the debugging output, `n` to disable it.
    The remaining optional arguments are the selected shells. The special
    characters `*`, `?`, and `[]` work as expected.

`:set_log [LOCAL_PATH]`
    Duplicate every console I/O into the given local file

    If `LOCAL_PATH` is not given, restore the default behaviour of not logging.

`:show_read_buffer [SHELLS...]`
    Print the data read by remote shells

    The special characters `*`, `?`, and `[]` work as expected.

History
-------

The tool is authored by Guillaume Chazarain <guichaz@gmail.com>.  The first
version released in 2006.  It has been maintained by InnoGames GmbH
since 2018.

            

Raw data

            {
    "_id": null,
    "home_page": "http://github.com/innogames/polysh/",
    "name": "polysh",
    "maintainer": "InnoGames System Administration",
    "docs_url": null,
    "requires_python": ">=3.5",
    "maintainer_email": "it@innogames.com",
    "keywords": "gsh group shell cluster ssh multiplexer",
    "author": "",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/3e/5f/6e9e0f7cd72976f99c036a31e0d6a4a0b4714f770453ee87de3abbcf9b8a/polysh-0.14.tar.gz",
    "platform": null,
    "description": ".. image:: https://travis-ci.org/innogames/polysh.svg?branch=master\n    :target: https://travis-ci.org/innogames/polysh\n\nPolysh\n======\n\nPolysh (formerly called Group Shell or gsh) is a remote shell multiplexer.\nIt lets you control many remote shells at once in a single shell.  Unlike\nother commands dispatchers, it is interactive, so shells spawned on\nthe remote hosts are persistent.  It requires only a SSH server on the remote\nhosts, or some other way to open a remote shell.\n\nPython >= 3.5 is required.\n\nUsage::\n\n    polysh [OPTIONS]... HOSTS...\n\nPrompt\n------\n\nThe `polysh` prompt shows either `ready (X)>` or `waiting (X/Y)>`.\nThe `ready` prompt means that all enabled remote shells are ready to receive\ncommands and there are X such remote shells.  Failing that, the `waiting`\nprompt is shown, meaning that X remote shells are not yet ready to receive\ncommands.  Either way, all the readline editing features like navigation in\nthe history, searching in the history, and completion are available.\n\nCommands prefixed by an exclamation mark are executed locally.  Signals\n`Ctrl-C` and `Ctrl-D` are forwarded to the remote shells.\n\nThe prompt supports completion by pressing the Tab key.  Completion results\nare taken from the command line history, paths from the local filesystem and\ncommands from the user `$PATH`.\n\nHostnames with numbers can be generated by `polysh` using the `<START-END>`\nsyntax.  The generated numbers will be zero padded according to the number\nof zeroes in the `START` and `END` numbers.\n\nOptions\n-------\n\n`--version`\n    Show program`s version number and exit\n\n`-h, --help`\n    Show the help message and exit\n\n`--hosts-file=FILE`\n    Read hostnames from given file, one per line\n\n    Hostnames are given on\n    the command line, but they can also be read from files.  The format is\n    one hostname per line, `#` comments and blank lines are skipped.\n\n`--command=CMD`\n    Command to execute on the remote shells\n\n    This starts `polysh` in\n    non-interactive mode.  It will start the remote shells, send the command,\n    print the output and exit when the command is completed on all remote\n    shells.  This is the same as piping a command on the standard input.\n    Exit codes from the remote shells will be aggregated (taking the max)\n    to form `polysh`'s exit code.\n\n`--ssh=SSH`\n    Command to use for SSH\n\n    By default, `exec ssh -oLogLevel=Quiet -t %(host)s %(port)s`.\n    `polysh` spawns ssh for each connection which may spawn your default login\n    shell on the remote, but another shell command can be specified here. For\n    example, with `--ssh='usleep $((RANDOM*50)); exec ssh'` a delay will be\n    introduced to avoid all hosts accessing a NFS server at the same time.  If\n    the hostname should not be added at the end of the command, the macro\n    `%(host)s` can be inserted where the hostname should be placed.  Also, make\n    sure the command you use launches a `pty`, this may need the `-t` option for\n    `ssh`.\n\n`--user=USER`\n    Remote user to log in as\n\n    When specified, `polysh` will ssh to\n    USER@HOST instead of simply HOST.\n\n`--no-color`\n    Disable colored hostnames, enabled by default\n\n    When specified, `polysh` will not\n    use tty colors for the hostname prefix.\n\n`--password-file=FILE`\n    Read a password from the specified file\n\n    `-` is the tty.  This can be\n    used when public key authentication is not available, either write\n    the password in a file, or set FILE to `-` so that `polysh` will prompt\n    for a password.\n\n`--log-file=LOG_FILE`\n    File to log each machine conversation\n\n    If specified, `polysh`\n    will log all executed commands and their output in the file.  The logging\n    destination can be dynamically changed with the `:set_log` control\n    command.\n\n`--abort-errors`\n    Abort if some shell fails to initialize\n\n    By default, `polysh`\n    just logs an error when it cannot successfully open a remote shell.\n    With this option, it exits with a failure.\n\n`--debug`\n    Print debugging information\n\n    Use this option to see exactly what is\n    transferred between `polysh` and the remote shells.  This option can be\n    dynamically toggled using the `:set_debug` command in the control shell.\n\nControl Commands\n----------------\n\nControl commands are special purpose commands prefixed by a colon and\ndirected at `polysh` itself instead of the remote shells.  These commands are:\n\n`:add NAMES...`\n    Add one or many remote shells\n\n`:chdir LOCAL_PATH`\n    Change the current directory of `polysh` (not the remote shells)\n\n`:disable [SHELLS...]`\n    Disable sending commands to remote shells\n\n    If the command would have\n    no effect, it changes all other shells to the inverse enable value.\n    That is, if you disable only already disabled shells, it will first\n    enable all other shells.  The special characters `*`, `?`, and `[]` work\n    as expected.\n\n`:enable [SHELLS...]`\n    Enable sending commands to remote shells.  If the command would have\n    no effect, it changes all other shells to the inverse enable value.\n    That is, if you enable only already enabled shells, it will first\n    disable all other shells.  The special characters `*`, `?`, and `[]` work\n    as expected.\n\n`:export_vars`\n    Export some environment variables on enabled remote shells\n\n    `POLYSH_NR_SHELLS` is the total number of enabled shells.  `POLYSH_RANK`\n    uniquely identifies each shell with a number between `0` and\n    `POLYSH_NR_SHELLS - 1`.  `POLYSH_NAME` is the hostname as specified on\n    the command line and `POLYSH_DISPLAY_NAME` the hostname as displayed\n    by `:list` (most of the time the same as `POLYSH_NAME`).\n\n`:hide_password`\n    Do not echo the next typed line\n\n    This is useful when entering password.\n    If debugging or logging is enabled, it will be disabled to avoid\n    displaying a password. Therefore, you will have to re-enable logging or\n    debugging afterwards if need be.\n\n`:list [SHELLS...]`\n    List remote shells and their states\n\n    The output consists of:\n    `<hostname> <enabled?> <state>: <last printed line>`.  The special\n    characters `*`, `?`, and `[]` work as expected.\n\n`:purge [SHELLS...]`\n    Delete disabled remote shells\n\n    This helps to have a shorter list.\n    The special characters `*`, `?`, and `[]` work as expected.\n\n`:quit`\n    Quit `polysh`\n\n`:reconnect [SHELLS...]`\n    Try to reconnect to disconnected remote shells\n\n    The special characters `*`, `?`, and `[]` work as expected.\n\n`:rename [NEW_NAME]`\n    Rename all enabled remote shells with the argument\n\n    The argument will\n    be shell expanded on the remote processes.  With no argument, the original\n    hostname will be restored as the displayed name.\n\n`:reset_prompt [SHELLS...]`\n    Change the prompt to be recognized by `polysh`\n\n    The special characters `*`, `?`, and `[]` work as expected.\n\n`:send_ctrl LETTER [SHELLS...]`\n    Send a control character to remote shells\n\n    The first argument is the control character to send `c` or `d`.  Note that\n    these control characters can also be sent simply by typing them.\n    The remaining optional arguments are the destination shells.  The special\n    characters `*`, `?`, and `[]` work as expected.\n\n`:set_debug y|n [SHELLS...]`\n    Enable or disable debugging output for remote shells\n\n    The first\n    argument is `y` to enable the debugging output, `n` to disable it.\n    The remaining optional arguments are the selected shells. The special\n    characters `*`, `?`, and `[]` work as expected.\n\n`:set_log [LOCAL_PATH]`\n    Duplicate every console I/O into the given local file\n\n    If `LOCAL_PATH` is not given, restore the default behaviour of not logging.\n\n`:show_read_buffer [SHELLS...]`\n    Print the data read by remote shells\n\n    The special characters `*`, `?`, and `[]` work as expected.\n\nHistory\n-------\n\nThe tool is authored by Guillaume Chazarain <guichaz@gmail.com>.  The first\nversion released in 2006.  It has been maintained by InnoGames GmbH\nsince 2018.\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Control thousands of ssh sesions from a single prompt",
    "version": "0.14",
    "project_urls": {
        "Homepage": "http://github.com/innogames/polysh/"
    },
    "split_keywords": [
        "gsh",
        "group",
        "shell",
        "cluster",
        "ssh",
        "multiplexer"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3e5f6e9e0f7cd72976f99c036a31e0d6a4a0b4714f770453ee87de3abbcf9b8a",
                "md5": "fefaea9bf68dfe5c1b9d14e7503cd75b",
                "sha256": "49533909d7dafd8948cdb4ef1422a70de619754afe1bbd378e7b996d6b01a0b7"
            },
            "downloads": -1,
            "filename": "polysh-0.14.tar.gz",
            "has_sig": false,
            "md5_digest": "fefaea9bf68dfe5c1b9d14e7503cd75b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.5",
            "size": 32015,
            "upload_time": "2023-06-07T07:11:40",
            "upload_time_iso_8601": "2023-06-07T07:11:40.325337Z",
            "url": "https://files.pythonhosted.org/packages/3e/5f/6e9e0f7cd72976f99c036a31e0d6a4a0b4714f770453ee87de3abbcf9b8a/polysh-0.14.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-07 07:11:40",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "innogames",
    "github_project": "polysh",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": false,
    "lcname": "polysh"
}
        
Elapsed time: 0.07409s