Small bash script that builds a menu (via dialog) from your ~/.ssh/config.
Allows you to connect to your servers or run commands from menu. Available commands:
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
Clone\download this project, go to it's folder and run:
sudo cp sshto /usr/bin/ #and to unistall sudo rm /usr/bin/sshto
Tom Lawrens video guide about ssh config and sshto
Feel free to support the project!)
Send me some coins and I'll send you one big 'Thank You!' back!)
BTC: 1LxRxsyXP389YW3Ezw9YzNetE5VYj1RaJf

BCH: qqnssal30x6acrga6zt4pd4q2s2t8um3cyqvd37qs7

ETH: 0xd7e17A37DD936B211790ba70Aa985448277030E8

XMR: 484z9YpiD4VBd4BfsaG7jKGYGuJ84tYJyCJBX4ZnAPqQXsUWgTY14TKRH3JLosFSAsKsv75nyt9yWPkFMUJhryxi7zccHNB

LTC: LRVPYR7dvRVdNET23gg3fvTwDM9hotQkZw

DASH: Xtz7P6GasicE9yS8zXkH3PH2qAF2qWJADG



