{"id":2244,"date":"2022-03-31T20:28:41","date_gmt":"2022-03-31T17:28:41","guid":{"rendered":"http:\/\/kifarunix.com\/?p=2244"},"modified":"2024-03-09T10:29:19","modified_gmt":"2024-03-09T07:29:19","slug":"install-and-use-clusterssh-on-ubuntu","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/install-and-use-clusterssh-on-ubuntu\/","title":{"rendered":"Install and Use ClusterSSH on Ubuntu 22.04\/Ubuntu 20.04"},"content":{"rendered":"\n

This guide describes how to install and use ClusterSSH on Ubuntu 22.04\/Ubuntu 20.04. ClusterSSH<\/a> is a cluster administration tool that allows system admins to manage multiple Linux servers from a single administration console for example running a similar command across a cluster of systems. When run, ClusterSSH opens up an administration console and xterm terminals on every other host in a cluster. Any text typed into the administration console is replicated to all terminals. One can also type into all the windows directly. This tools is so handy in the sense that it reduces the laden of having to run similar commands on each host.<\/p>\n\n\n\n

Install and Use ClusterSSH on Ubuntu 22.04|20.04<\/h2>\n\n\n\n

Install ClusterSSH on Ubuntu 22.04\/Ubuntu 20.04<\/h3>\n\n\n\n

ClusterSSH is available on the default Ubuntu repositories. Thus you can simply install by running the command below;<\/p>\n\n\n\n

apt update<\/code><\/pre>\n\n\n\n
apt install clusterssh nux-tools<\/code><\/pre>\n\n\n\n

ClusterSSH Command Line Syntax and Options<\/h3>\n\n\n\n

cssh<\/strong><\/code> is the command line ClusterSSH utility. The command line syntax for cssh command is;<\/p>\n\n\n\n

\ncssh [-a '<command>'] [-K <seconds>] [-q] [-c '<filename>'] [-x <cols>]\n[-C '<filename>'] [--debug [[...] || <INTEGER>]] [-d] [-e\n'<[user@]<host>[:port]>'] [--fillscreen] [-f '<font>'] [-h] [-L '[tag]']\n[-H] [-o '<STRING>'] [-p <port>] [-Q] [-y <rows>] [-s] [-r '<filename>']\n[-t '<STRING>'] [-g] [-T '<title>'] [-u] [-?] [-A] [-l '<username>']\n[-v]\n<\/code><\/pre>\n\n\n\n

You can get a description of the command line options from the help page;<\/p>\n\n\n\n

cssh -h<\/code><\/pre>\n\n\n\n
Options:\n    Some of these options may also be defined within the configuration file.\n    Default options are shown as appropriate.\n\n    --action '<command>', -a '<command>'\n        Run the command in each session, e.g. \"-a 'vi \/etc\/hosts'\" to drop\n        straight into a vi session.\n\n    --autoclose <seconds>, -K <seconds>\n        Number of seconds to wait before closing finished terminal windows.\n\n    --autoquit, -q\n        Toggle automatically quitting after the last client window has\n        closed (overriding the config file).\n\n    --cluster-file '<filename>', -c '<filename>'\n        Use supplied file as additional cluster file (see also \"FILES\").\n\n    --cols <cols>, -x <cols>\n        Number of columns\n\n    --config-file '<filename>', -C '<filename>'\n        Use supplied file as additional configuration file (see also\n        \"FILES\").\n\n    --debug [[...] || <INTEGER>]\n        Enable debugging. Either a level can be provided or the option can\n        be repeated multiple times. Maximum level is 9.\n\n    --dump-config, -d\n        Dump the current configuration in the same format used by the\n        $HOME\/.clusterssh\/config file.\n\n    --evaluate '<[user@]<host>[:port]>', -e '<[user@]<host>[:port]>'\n        Display and evaluate the terminal and connection arguments to\n        display any potential errors. The <hostname> is required to aid the\n        evaluation.\n\n    --fillscreen\n        Resize terminal windows to fill the whole available screen\n\n    --font '<font>', -f '<font>'\n        Specify the font to use in the terminal windows. Use standard X font\n        notation such as \"5x8\".\n\n    --help, -h\n        Show basic help text and exit\n\n    --list '[tag]', -L '[tag]'\n        List available cluster tags. Tag is optional. If a tag is provided\n        then hosts for that tag are listed. NOTE: format of output changes\n        when using \"--quiet\" or \"-Q\" option.\n\n    --man, -H\n        Show full help text (the man page) and exit\n\n    --options '<STRING>', -o '<STRING>'\n        Specify arguments to be passed to ssh when making the connection.\n        NOTE: options for ssh should normally be put into the ssh\n        configuration file; see \"ssh_config\" and $HOME\/.ssh\/config for more\n        details.\n\n        Default: -x -o ConnectTimeout=10\n\n    --port <port>, -p <port>\n        Specify an alternate port for connections.\n\n    --quiet, -Q\n        Do not output extra text when using some options\n\n    --rows <rows>, -y <rows>\n        Number of rows\n\n    --show-history, -s\n        Show history within console window.\n\n    --tag-file '<filename>', -r '<filename>'\n        Use supplied file as additional tag file (see also \"FILES\")\n\n    --term-args '<STRING>', -t '<STRING>'\n        Specify arguments to be passed to terminals being used.\n\n    --tile, -g\n        Toggle window tiling (overriding the config file).\n\n    --title '<title>', -T '<title>'\n        Specify the initial part of the title used in the console and client\n        windows.\n\n    --unique-servers, -u\n        Toggle connecting to each host only once when a hostname has been\n        specified multiple times.\n\n    --usage, -?\n        Show synopsis and exit\n\n    --use-all-a-records, -A\n        If a hostname resolves to multiple IP addresses, toggle whether or\n        not to connect to all of them, or just the first one (see also\n        config file entry).\n\n    --username '<username>', -l '<username>'\n        Specify the default username to use for connections (if different\n        from the currently logged in user). NOTE: will be overridden by\n        <user>@<host>.\n\n    --version, -v\n        Show version information and exit\n\nArguments:\n    The following arguments are supported:\n\n    [user@]<hostname>[:port] ...\n        Open an xterm to the given hostname and connect to the\n        administration console. The optional port number can be used if the\n        server is not listening on the standard port.\n\n    <tag> ...\n        Open a series of xterms defined by <tag> in one of the supplementary\n        configuration files (see \"FILES\").\n\n        Note: specifying a username on a cluster tag will override any\n        usernames defined in the cluster.\n<\/code><\/pre>\n\n\n\n

Manage Multiple Linux Systems using ClusterSSH<\/h3>\n\n\n\n

ClusterSSH can be used to manage multiple systems via SSH as already mentioned.<\/p>\n\n\n\n

In this setup, I have three Linux systems;<\/p>\n\n\n\n

    \n
  • The management Ubuntu system with cssh command installed<\/li>\n\n\n\n
  • Debian and Rocky Linux remote systems to manage using ClusterSSH.<\/li>\n<\/ul>\n\n\n\n

    Example administrative usage of ClusterSSH<\/p>\n\n\n\n

    SSH to Multiple Servers at Once using ClusterSSH<\/h4>\n\n\n\n

    To login to multiple servers via SSH using ClusterSSH, simply run the command below;<\/p>\n\n\n\n

    cssh -l kifarunix 192.168.58.43 192.168.59.38<\/code><\/pre>\n\n\n\n

    When you run the command, two terminals are launched including a small screen that enables you to type the commands in to the shells launched.<\/p>\n\n\n\n

    See the screenshot below (I have just re-arranged the screens to make it easy to see on the screenshot).<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    As usual, if it is the first time you are login into a server as a user, you are prompted on whether to continue with authentication. in most case, the answer would be yes<\/strong>. Thus, type yes<\/strong> in the small screen provided. Whatever you type is propagated across all terminal windows launched.<\/p>\n\n\n\n

    If the passwords for the user used for remote login is not same, then click each system terminal and enter the password individually.<\/strong><\/p>\n\n\n\n

    To run similar commands on the remote hosts, just type the commands on the small window.<\/p>\n\n\n\n

    You can also login to multiple servers using different users via CSSH;<\/p>\n\n\n\n

    cssh koromicha@192.168.58.43 kifarunix@192.168.59.38<\/code><\/pre>\n\n\n\n

    To login, click on the terminal for each host and enter the respective user password.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    As much as you can run same commands on multiple servers after login, it is also possible to login and automatically run specific commands on all remote hosts;<\/p>\n\n\n\n

    This can be achieved via the cssh --action 'command'<\/strong><\/code>, or -a 'command'<\/code><\/strong> command line option.<\/p>\n\n\n\n

    For example, to login and automatically run a ping test;<\/p>\n\n\n\n

    cssh -a 'ping -c 4 google.com' koromicha@192.168.58.43 kifarunix@192.168.59.38<\/code><\/pre>\n\n\n\n
    \"\"<\/figure>\n\n\n\n

    Configure ClusterSSH Clusters<\/h3>\n\n\n\n

    There are two kinds of cluster configurations that you can create;<\/p>\n\n\n\n

      \n
    • the user-specific and the\n
        \n
      • The user-specific configuration can be set on the user’s home directory<\/li>\n\n\n\n
      • The configuration file is ~\/.clusterssh\/config<\/strong><\/code>.<\/li>\n\n\n\n
      • The cluster file is ~\/.clusterssh\/clusters<\/strong><\/code>.<\/li>\n<\/ul>\n<\/li>\n\n\n\n
      • global cluster configuration.\n
          \n
        • while the global configuration sets system-wide cluster.<\/li>\n\n\n\n
        • The configuration file is \/etc\/clusters<\/code><\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n

          The clusters enable you define remote systems to access.<\/p>\n\n\n\n

          To use user specific cluster configuration, simply create the ~\/.clusterssh\/clusters<\/strong><\/code> file and update it as follows;<\/p>\n\n\n\n

          vim ~\/.clusterssh\/clusters<\/code><\/pre>\n\n\n\n

          The format is as follows:<\/p>\n\n\n\n

          <tag> [user@]<server>[:port] [user@]<server>[:port] [...]<\/code><\/pre>\n\n\n\n

          For example, if you have multiple servers to login to e.g from Web apps, database servers, you would have an entry like;<\/p>\n\n\n\n

          web kifarunix@192.168.58.43 kifarunix@192.168.58.38\ndatabase koromicha@192.168.59.38<\/code><\/pre>\n\n\n\n

          So you can simply login to Web servers like;<\/p>\n\n\n\n

          cssh web<\/code><\/pre>\n\n\n\n

          You can also update the CSSH configuration options by updating the file;<\/p>\n\n\n\n

          cat ~\/.clusterssh\/config<\/code><\/pre>\n\n\n\n

          Default options;<\/p>\n\n\n\n

          \n#auto_close=5\n#auto_quit=yes\n#auto_wm_decoration_offsets=no\n#cols=-1\n#command=\n#command_post=\n#command_pre=\n#comms=ssh\n#console=console\n#console_args=\n#console_position=\n#external_cluster_command=\n#external_command_mode=0600\n#external_command_pipe=\n#extra_cluster_file=\n#extra_tag_file=\n#fillscreen=no\n#hide_menu=0\n#history_height=10\n#history_width=40\n#key_addhost=Control-Shift-plus\n#key_clientname=Alt-n\n#key_history=Alt-h\n#key_localname=Alt-l\n#key_macros_enable=Alt-p\n#key_paste=Control-v\n#key_quit=Alt-q\n#key_retilehosts=Alt-r\n#key_user_1=Alt-1\n#key_user_2=Alt-2\n#key_user_3=Alt-3\n#key_user_4=Alt-4\n#key_username=Alt-u\n#lang=en\n#macro_hostname=%h\n#macro_newline=%n\n#macro_servername=%s\n#macro_user_1=%1\n#macro_user_1_command=\n#macro_user_2=%2\n#macro_user_2_command=\n#macro_user_3=%3\n#macro_user_3_command=\n#macro_user_4=%4\n#macro_user_4_command=\n#macro_username=%u\n#macro_version=%v\n#macros_enabled=yes\n#max_addhost_menu_cluster_items=6\n#max_host_menu_items=30\n#menu_host_autotearoff=0\n#menu_send_autotearoff=0\n#mouse_paste=Button-2\n#rows=-1\n#rsh=rsh\n#rsh_args=\n#screen_reserve_bottom=60\n#screen_reserve_left=0\n#screen_reserve_right=0\n#screen_reserve_top=0\n#send_menu_xml_file=\/home\/kifarunix\/.clusterssh\/send_menu\n#sftp=sftp\n#sftp_args=\n#show_history=0\n#ssh=ssh\n#ssh_args=\n#telnet=telnet\n#telnet_args=\n#terminal=xterm\n#terminal_allow_send_events=-xrm '*.VT100.allowSendEvents:true'\n#terminal_args=\n#terminal_bg_style=dark\n#terminal_colorize=1\n#terminal_decoration_height=10\n#terminal_decoration_width=8\n#terminal_font=6x13\n#terminal_reserve_bottom=0\n#terminal_reserve_left=5\n#terminal_reserve_right=0\n#terminal_reserve_top=5\n#terminal_size=80x24\n#terminal_title_opt=-T\n#title=CSSH\n#unique_servers=0\n#unmap_on_redraw=no\n#use_all_a_records=0\n#use_hotkeys=yes\n#use_natural_sort=0\n#user=\n#window_tiling=yes\n#window_tiling_direction=right\n\n<\/code><\/pre>\n\n\n\n

          For more information on configuration, see FILES section of man cssh<\/strong>.<\/p>\n\n\n\n

          man cssh<\/code><\/pre>\n\n\n\n
          \/etc\/clusters, $HOME\/.clusterssh\/clusters\nThese files contain a list of tags to server names mappings.  When any name is used on\nthe command line it is checked to see if it is a tag.  If it is a tag, then the tag is\nreplaced with the list of servers.  The format is as follows:\n\n<tag> [user@]<server>[:port] [user@]<server>[:port] [...]\n\ne.g.\n\n    # List of servers in live\n    live admin1@server1 admin2@server2:2022 server3 server4\n\nAll comments (marked by a #) and blank lines are ignored.  Tags may be nested, but be\naware of using recursive tags as they are not checked for.\n\nExtra cluster files may also be specified either as an option on the command line (see\n\"cluster-file\") or in the user's $HOME\/.clusterssh\/config file (see\n\"extra_cluster_file\" configuration option).\n\nNOTE: the last tag read overwrites any pre-existing tag of that name.\n\nNOTE: there is a special cluster tag called \"default\" - any tags or hosts included\nwithin this tag will be automatically opened if nothing is specified on the command\nline.\n\n       \/etc\/tags, $HOME\/.clusterssh\/tags\nVery similar to clusters files but the definition is reversed.  The format is:\n\n<host> <tag> [...]\n\nThis allows one host to be specified as a member of a number of tags.  This format can\nbe clearer than using clusters files.\n\nExtra tag files may be specified either as an option (see \"tag-file\") or within the\nuser's $HOME\/.clusterssh\/config file (see \"extra_tag_file\" configuration option).\n\nNOTE: All tags are added together\n\n       \/etc\/csshrc & $HOME\/.clusterssh\/config\nThis file contains configuration overrides - the defaults are as marked.  Default\noptions are overwritten first by the global file, and then by the user file.\n\nNOTE: values for entries do not need to be quoted unless it is required for passing\narguments, e.g.\n\n\"terminal_allow_send_events=\"-xrm '*.VT100.allowSendEvents:true'\"\"\n\nshould be written as\n\n\"terminal_allow_send_events=-xrm '*.VT100.allowSendEvents:true'\"\n\nauto_close = 5\n    Close terminal window after this many seconds.  If set to 0 will instead wait on\n    input from the user in each window before closing. See also --autoclose and\n    --no-autoclose\n\nauto_quit = 1\n    Automatically quit after the last client window closes.  Set to 0 to disable.  See\n    also --autoquit\n\ncomms = ssh\n    Sets the default communication method (initially taken from the name of the\n    program, but can be overridden here).\n\nconsole_position = <null>\n    Set the initial position of the console - if empty then let the window manager\n    decide.  Format is '+<x>+<y>', i.e. '+0+0' is top left hand corner of the screen,\n    '+0-70' is bottom left hand side of screen (more or less).\n\nexternal_cluster_command = <null>\n    Define the full path to an external command that can be used to resolve tags to\n    host names.  This command can be written in any language.  The script must accept\n    a list of tags to resolve and output a list of hosts (space separated on a single\n    line).  Any tags that cannot be resolved should be returned unchanged.\n\n    A non-0 exit code will be counted as an error, a warning will be printed and\n    output ignored.\n\n    If the external command is given a \"-L\" option it should output a list of tags\n    (space separated on a single line) it can resolve\n\nextra_cluster_file = <null>\n    Define an extra cluster file in the format of \/etc\/clusters.  Multiple files can\n    be specified, separated by commas.  Both ~ and $HOME are acceptable as a reference\n    to the user's home directory, e.g.\n\n    \"extra_cluster_file = ~\/clusters, $HOME\/clus\"\n\nkey_addhost = Control-Shift-plus\n    Default key sequence to open AddHost menu.  See \"KEY SHORTCUTS\" for more\n    information.\n\nkey_clientname = Alt-n\n    Default key sequence to send cssh client names to client.  See \"KEY SHORTCUTS\" for\n    more information.\n\nkey_localname = Alt-l\n    Default key sequence to send hostname of local server to client.  See \"KEY\n    SHORTCUTS\" for more information.\n\nkey_paste = Control-v\n    Default key sequence to paste text into the console window.  See \"KEY SHORTCUTS\"\n    for more information.\n\nkey_quit = Control-q\n    Default key sequence to quit the program (will terminate all open windows).  See\n    \"KEY SHORTCUTS\" for more information.\n\nkey_retilehosts = Alt-r\n    Default key sequence to retile host windows.  See \"KEY SHORTCUTS\" for more\n    information.\n\nkey_username = Alt-u\n    Default key sequence to send username to client.  See \"KEY SHORTCUTS\" for more\n    information.\n\nmacro_servername = %s\nmacro_hostname = %h\nmacro_username = %u\nmacro_newline = %n\nmacro_version = %v\n    Change the replacement macro used when either using a 'Send' menu item, or when\n    pasting text into the main console.\n\nmacros_enabled = yes\n    Enable or disable macro replacement.  Note: this affects all the \"macro_*\"\n    variables above.\n\nmax_addhost_menu_cluster_items = 6\n    Maximum number of entries in the 'Add Host' menu cluster list before scrollbars\n    are used\n\nmax_host_menu_items = 30\n    Maximum number of hosts to put into the host menu before starting a new column\n\nmenu_host_autotearoff = 0\nmenu_send_autotearoff = 0\n    When set to non-0 will automatically tear-off the host or send menu at program\n    start\n\nmouse_paste = Button-2 (middle mouse button)\n    Default key sequence to paste text into the console window using the mouse.  See\n    \"KEY SHORTCUTS\" for more information.\n\nrsh = \/path\/to\/rsh\nssh = \/path\/to\/ssh\ntelnet = \/path\/to\/telnet\n    Set the path to the specific binary to use for the communication method, else uses\n    the first match found in $PATH\n\nrsh_args = <blank>\nssh_args = \"-x -o ConnectTimeout=10\"\ntelnet_args = <blank>\n    Sets any arguments to be used with the communication method (defaults to ssh\n    arguments).\n\n    NOTE: The given defaults are based on OpenSSH, not commercial ssh software.\n\n    NOTE: Any \"generic\" change to the method (e.g., specifying the ssh port to use)\n    should be done in the medium's own config file (see \"ssh_config\" and\n    $HOME\/.ssh\/config).\n\nscreen_reserve_top = 0\nscreen_reserve_bottom = 60\nscreen_reserve_left = 0\nscreen_reserve_right = 0\n    Number of pixels from the screen's side to reserve when calculating screen\n    geometry for tiling.  Setting this to something like 50 will help keep cssh from\n    positioning windows over your window manager's menu bar if it draws one at that\n    side of the screen.\n\nterminal = \/path\/to\/xterm\n    Path to the X-Windows terminal used for the client.\n\nterminal_args = <blank>\n    Arguments to use when opening terminal windows.  Otherwise takes defaults from\n    $HOME\/.Xdefaults or $HOME\/.Xresources file.\n\nterminal_chdir = 0\n    When non-0, set the working directory for each terminal as per\n    'terminal_chdir_path'\n\nterminal_chdir_path = $HOME\/.clusterssh\/work\/%s\n    Path to use as working directory for each terminal when 'terminal_chdir' is\n    enabled.  The path provided is passed through the macro parser (see the section\n    above on 'macros_enabled'.\n\nterminal_font = 6x13\n    Font to use in the terminal windows.  Use standard X font notation.\n\nterminal_reserve_top = 5\nterminal_reserve_bottom = 0\nterminal_reserve_left = 5\nterminal_reserve_right = 0\n    Number of pixels from the terminal's side to reserve when calculating screen\n    geometry for tiling.  Setting these will help keep cssh from positioning windows\n    over your scroll and title bars or otherwise overlapping the windows too much.\n\nterminal_colorize = 1\n    If set to 1 (the default), then \"-bg\" and \"-fg\" arguments will be added to the\n    terminal invocation command-line.  The terminal will be colored in a pseudo-random\n    way based on the host name; while the color of a terminal is not easily predicted,\n    it will always be the same color for a given host name.  After a while, you will\n    recognize hosts by their characteristic terminal color.\n\nterminal_bg_style = dark\n    If set to \"dark\", the terminal background will be set to black and the foreground\n    to the pseudo-random color.  If set to \"light\", then the foreground will be black\n    and the background the pseudo-random color.  If terminal_colorize is \"zero\", then\n    this option has no effect.\n\nterminal_size = 80x24\n    Initial size of terminals to use. NOTE: the number of lines (24) will be decreased\n    when resizing terminals for tiling, not the number of characters (80).\n\nterminal_title_opt = -T\n    Option used with \"terminal\" to set the title of the window\n\nterminal_allow_send_events = -xrm '*.VT100.allowSendEvents:true'\n    Option required by the terminal to allow XSendEvents to be received\n\ntitle = cssh\n    Title of windows to use for both the console and terminals.\n\nunmap_on_redraw = no\n    Tell Tk to use the UnmapWindow request before redrawing terminal windows.  This\n    defaults to \"no\" as it causes some problems with the FVWM window manager.  If you\n    are experiencing problems with redraws, you can set it to \"yes\" to allow the\n    window to be unmapped before it is repositioned.\n\nuse_all_a_records = 0\n    If a hostname resolves to multiple IP addresses, set to 1 to connect to all of\n    them, not just the first one found.  See also \"--use-all-a-records\"}\n\nuse_hotkeys = 1\n    Setting to 0 will disable all hotkeys.\n\nuse_natural_sort = 0\n    Windows will normally sort in alphabetical order, i.e.: host1, host11, host2.\n    Setting to this 1 will change the sort order, i.e.: host1, host2, host11. NOTE:\n    You must have the perl module Sort::Naturally installed.\n\nuser = $LOGNAME\n    Sets the default user for running commands on clients.\n\nwindow_tiling = 1\n    Perform window tiling (set to 0 to disable)\n\nwindow_tiling_direction = right\n    Direction to tile windows, where \"right\" means starting top left and moving right\n    and then down, and anything else means starting bottom right and moving left and\n    then up\n\nNOTE: The key shortcut modifiers must be in the form \"Control\", \"Alt\" or \"Shift\", e.g.\nwith the first letter capitalised and the rest lower case.  Keys may also be disabled\nindividually by setting to the word \"null\".\n\n       $HOME\/.clusterssh\/send_menu\nThis (optional) file contains items to populate the send menu.  The default entry\ncould be written as:\n\n  <send_menu>\n    <menu title=\"Use Macros\">\n        <toggle\/>\n        <accelerator>ALT-p<\/accelerator>\n    <\/menu>\n    <menu title=\"Remote Hostname\">\n        <command>%s<\/command>\n        <accelerator>ALT-n<\/accelerator>\n    <\/menu>\n    <menu title=\"Local Hostname\">\n        <command>%s<\/command>\n        <accelerator>ALT-l<\/accelerator>\n    <\/menu>\n    <menu title=\"Username\">\n        <command>%u<\/command>\n        <accelerator>ALT-u<\/accelerator>\n    <\/menu>\n    <menu title=\"Test Text\">\n        <command>echo \"ClusterSSH Version: %v%n<\/command>\n    <\/menu>\n  <\/send_menu>\n\nSubmenus can also be specified as follows:\n\n  <send_menu>\n    <menu title=\"Default Entries\">\n      <detach>yes<\/detach>\n      <menu title=\"Hostname\">\n          <command>%s<\/command>\n          <accelerator>ALT-n<\/accelerator>\n      <\/menu>\n    <\/menu>\n  <\/send_menu>\n\nCaveats:\n\nThere is currently no strict format checking of this file.\nThe format of the file may change in the future\nIf the file exists, the default entry (Hostname) is not added\n\nThe following replacement macros are available (note: these can be changed in the\nconfiguration file):\n\n%s  Hostname part of the specific connection string to each client, minus any username\n    or port\n\n%u  Username part of the connection string to each client\n\n%h  Hostname of server where cssh is being run from\n\n%n  \"RETURN\" code\n\nNOTE: requires XML::Simple to be installed\n<\/code><\/pre>\n\n\n\n

          And that is it on how to install and use ClusterSSH on Ubuntu.<\/p>\n\n\n\n

          Other Tutorials<\/h3>\n\n\n\n

          Install and Setup ZSH and Oh-My-Zsh on Ubuntu 20.04\/Ubuntu 22.04<\/a><\/p>\n\n\n\n

          Install i3 Windows Manager on Ubuntu 22.04<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"

          This guide describes how to install and use ClusterSSH on Ubuntu 22.04\/Ubuntu 20.04. ClusterSSH is a cluster administration tool that allows system admins to manage<\/p>\n","protected":false},"author":1,"featured_media":12049,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[121,362],"tags":[4806,4809,4807,4808,4803,4804,4805],"class_list":["post-2244","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","category-ssh","tag-automatically-run-commands-over-ssh-on-many-servers","tag-clusters","tag-clusterssh","tag-cssh","tag-install-and-use-clusterssh-on-ubuntu-22-04-ubuntu-20-04","tag-login-to-multiple-servers-at-once-on-linux","tag-run-commands-on-multiple-linux-servers","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/2244"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=2244"}],"version-history":[{"count":13,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/2244\/revisions"}],"predecessor-version":[{"id":20418,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/2244\/revisions\/20418"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/12049"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=2244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=2244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=2244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}