Giter Club home page Giter Club logo

sshto's Introduction

sshto

Small bash script that builds a menu (via dialog) from your ~/.ssh/config.
screeenshot
Allows you to connect to your servers or run commands from menu. Available commands:
cmds
Your commands can be easily added to this list. Just edit this part of the script:

cmdlist=(
    #Command#    #Description#
    "${slct[@]}" #De/Select command
    "Username"   "Change ssh username to \Z1$GUEST\Z0"
    "Add tab"    "Add terminal tab with \Z1sshto\Z0 for \Z4$target\Z0"
    "Ssh tab"    "Add terminal tab with \Z1ssh\Z0 to \Z4$target\Z0"
    ''           ''
    "ls -lah"    "List Files"
    "free -h"    "Show free memory"
    "df  -ih"    "Show free inodes"
    "df   -h"    "Show free disk space"
    "Custom"     "Run custom command on \Z4$target\Z0"
    "Script"     "Run custom script on \Z4$target\Z0"
    ''           ''
    'Yes'        "Say 'yes' to SSH"
    "Info"       "Full system info"
    'Fix_id'     "Update host in known_hosts"
    "Sshkey"     "Add my ssh key to \Z4$target\Z0"
    "Alias"      "Add my useful aliases to \Z4$target\Z0"
    "Copy"       "Copy selected file or dir to \Z4$target\Z0"
    ''           ''
    "Home"       "Change home folder \Z4$home\Z0 on local server"
    "Dest"       "Change destination folder \Z4$DEST\Z0 on \Z4$target\Z0"
    "Upload"     "Upload file or folder from \Z4$home\Z0 to \Z4$target:${DEST}\Z0"
    "Download"   "Download file or folder from \Z4$target:${DEST}\Z0 to \Z4$home\Z0"
    "Mount"      "Mount remote folder \Z4$target:$DEST\Z0 to \Z4$home\Z0"
    "Unmount"    "Unmount remote folder \Z4$target:$DEST\Z0 from \Z4$home\Z0"
    ''           ''
    "Local"      "Change local  port \Z1$LOCAL\Z0"
    "Remote"     "Change remote port \Z1$REMOTE\Z0"
    "Tunnel"     "Start portunneling from \Z4$target:$REMOTE\Z0 to \Z4localhost:$LOCAL\Z0"
    ''           ''
    "ShowConf"   "Show ssh config for this host"
    "EditConf"   "Edit ssh config for this host"
)

First collumn - command, second - description.
Simple commands like ls -la could be added as is.
A list of commands or a complicated logic should be added via function.
Empty values('') could be used as a delimiter.
You can quick jump to the selected server via CONNECT button.
To close ssh session press CTRL+D or run exit command, it'll bring you back to sshto commands section.

Optional hosts description could be added like this:

Host server1 #Description, it could be more than one word
HostName 192.168.0.1
Port 22
User admin

Optional start menu delimiters '---{ Group Name }---' could be added like this:

#Host DUMMY #Group Name#

If you are unhappy with this 'DUMMY' group name template, or you actually have a host named 'dummy', you can change this template by ajusting this variable group_id=dummy.
All these additions won't break your ssh configs coz they are considered as comments.


~/.ssh/config example:

#Host DUMMY #Rybinsk#

Host rybserver1 #First server
HostName localhost

Host rybserver2 #Second server
HostName localhost

Host rybserver3 #Third server
HostName localhost

#Host DUMMY #Moscow#

Host moserver1 #First server
HostName localhost

Host moserver2 #Second server
HostName localhost

Host moserver3 #Third server
HostName localhost

Script greps data from multiple config files via pattername config* in ~/.ssh dir.
So you can split config to multiple files and use them with Include directive, example:

Include config_moscow
Include config_rybinsk
Include config*

All preset variables and functions could be tweaked via ~/.sshtorc config file:

echo "REMOTE=9000  # Remote port for tunneling." >> ~/.sshtorc

You can customize dialog itself a bit by creating and editing its config file:

dialog --create-rc ~/.dialogrc
nano ~/.dialogrc

How to install

Clone\download this project, go to it's folder and run:

sudo cp sshto /usr/bin/

#and to unistall
sudo rm /usr/bin/sshto

See how it works at asciinema

ssh config guide
Tom Lawrens video guide about ssh config and sshto

paypal Feel free to support the project!)

BTC: 1LxRxsyXP389YW3Ezw9YzNetE5VYj1RaJf
btc

BCH: qqnssal30x6acrga6zt4pd4q2s2t8um3cyqvd37qs7
bch

ETH: 0xd7e17A37DD936B211790ba70Aa985448277030E8
eth

XMR: 484z9YpiD4VBd4BfsaG7jKGYGuJ84tYJyCJBX4ZnAPqQXsUWgTY14TKRH3JLosFSAsKsv75nyt9yWPkFMUJhryxi7zccHNB
mon

LTC: LRVPYR7dvRVdNET23gg3fvTwDM9hotQkZw
ltc

DASH: Xtz7P6GasicE9yS8zXkH3PH2qAF2qWJADG
dash

ZEC: t1ZDgHci8yDVkoGvUFG7QtxUNRuzsF1Qtse
zec

MKR: 0xd7e17A37DD936B211790ba70Aa985448277030E8
mkr

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.