Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.82 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #########################################
  4.  
  5. # Original script by Errol Byrd
  6.  
  7. # Copyright (c) 2010, Errol Byrd <errolbyrd@gmail.com>
  8.  
  9. #########################################
  10.  
  11. # Modified by Robin Parisi
  12.  
  13. # Contact at parisi.robin@gmail.com
  14.  
  15. # Github https://github.com/robinparisi/ssh-manager
  16.  
  17. # github.io Page https://robinparisi.github.io/ssh-manager/
  18.  
  19.  
  20.  
  21. #================== Globals ==================================================
  22.  
  23.  
  24.  
  25. # Version
  26.  
  27. VERSION="0.6"
  28.  
  29.  
  30.  
  31. # Configuration
  32.  
  33. HOST_FILE="$HOME/.ssh_servers"
  34.  
  35. SERVER="165.227.222.43"
  36.  
  37. USER="john"
  38.  
  39. PASSWORD="QASEN12Da"
  40.  
  41. SSH_DEFAULT_PORT=22
  42.  
  43. DATA_DELIM=":"
  44.  
  45. DATA_ALIAS=1
  46.  
  47. DATA_HUSER=2
  48.  
  49. DATA_HADDR=3
  50.  
  51. DATA_HPORT=4
  52.  
  53. PING_DEFAULT_TTL=20
  54.  
  55.  
  56.  
  57.  
  58.  
  59. #================== Functions ================================================
  60.  
  61.  
  62.  
  63. function exec_ping() {
  64.  
  65. case $(uname) in
  66.  
  67. MINGW*)
  68.  
  69. ping -n 1 -i $PING_DEFAULT_TTL $@
  70.  
  71. ;;
  72.  
  73. *)
  74.  
  75. ping -c1 -t$PING_DEFAULT_TTL $@
  76.  
  77. ;;
  78.  
  79. esac
  80.  
  81. }
  82.  
  83.  
  84.  
  85. function test_host() {
  86.  
  87. exec_ping $* > /dev/null
  88.  
  89. if [ $? != 0 ] ; then
  90.  
  91. echo -n "["
  92.  
  93. cecho -n -red "KO"
  94.  
  95. echo -n "]"
  96.  
  97. else
  98.  
  99. echo -n "["
  100.  
  101. cecho -n -green "UP"
  102.  
  103. echo -n "]"
  104.  
  105. fi
  106.  
  107. }
  108.  
  109.  
  110.  
  111. function separator() {
  112.  
  113. echo -e "----\t----\t----\t----\t----\t----\t----\t----"
  114.  
  115. }
  116.  
  117.  
  118.  
  119. function list_commands() {
  120.  
  121. separator
  122.  
  123. echo -e "Availables commands"
  124.  
  125. separator
  126.  
  127. echo -e "$0 cc\t<alias> [username]\t\tconnect to server"
  128.  
  129. echo -e "$0 add\t<alias>:<user>:<host>:[port]\tadd new server"
  130.  
  131. echo -e "$0 del\t<alias>\t\t\t\tdelete server"
  132.  
  133. echo -e "$0 export\t\t\t\t\texport config"
  134.  
  135. }
  136.  
  137.  
  138.  
  139. function probe ()
  140.  
  141. {
  142.  
  143. als=$1
  144.  
  145. grep -w -e $als $HOST_FILE > /dev/null
  146.  
  147. return $?
  148.  
  149. }
  150.  
  151.  
  152.  
  153. function get_raw ()
  154.  
  155. {
  156.  
  157. als=$1
  158.  
  159. grep -w -e $als $HOST_FILE 2> /dev/null
  160.  
  161. }
  162.  
  163.  
  164.  
  165. function get_addr ()
  166.  
  167. {
  168.  
  169. als=$1
  170.  
  171. get_raw "$als" | awk -F "$DATA_DELIM" '{ print $'$DATA_HADDR' }'
  172.  
  173. }
  174.  
  175.  
  176.  
  177. function get_port ()
  178.  
  179. {
  180.  
  181. als=$1
  182.  
  183. get_raw "$als" | awk -F "$DATA_DELIM" '{ print $'$DATA_HPORT'}'
  184.  
  185. }
  186.  
  187.  
  188.  
  189. function get_user ()
  190.  
  191. {
  192.  
  193. als=$1
  194.  
  195. get_raw "$als" | awk -F "$DATA_DELIM" '{ print $'$DATA_HUSER' }'
  196.  
  197. }
  198.  
  199. function server_add() {
  200.  
  201. probe "$alias"
  202.  
  203. if [ $? -eq 0 ]; then
  204.  
  205. as echo "$0: alias '$alias' is in use"
  206.  
  207. else
  208.  
  209. echo "$alias$DATA_DELIM$user" >> $HOST_FILE
  210.  
  211. echo "new alias '$alias' added"
  212.  
  213. fi
  214.  
  215. }
  216.  
  217.  
  218.  
  219. function cecho() {
  220.  
  221. while [ "$1" ]; do
  222.  
  223. case "$1" in
  224.  
  225. -normal) color="\033[00m" ;;
  226.  
  227. -black) color="\033[30;01m" ;;
  228.  
  229. -red) color="\033[31;01m" ;;
  230.  
  231. -green) color="\033[32;01m" ;;
  232.  
  233. -yellow) color="\033[33;01m" ;;
  234.  
  235. -blue) color="\033[34;01m" ;;
  236.  
  237. -magenta) color="\033[35;01m" ;;
  238.  
  239. -cyan) color="\033[36;01m" ;;
  240.  
  241. -white) color="\033[37;01m" ;;
  242.  
  243. -n) one_line=1; shift ; continue ;;
  244.  
  245. *) echo -n "$1"; shift ; continue ;;
  246.  
  247. esac
  248.  
  249. shift
  250.  
  251. echo -en "$color"
  252.  
  253. echo -en "$1"
  254.  
  255. echo -en "\033[00m"
  256.  
  257. shift
  258.  
  259. done
  260.  
  261. if [ ! $one_line ]; then
  262.  
  263. echo
  264.  
  265. fi
  266.  
  267. }
  268.  
  269.  
  270.  
  271. #=============================================================================
  272.  
  273.  
  274.  
  275. cmd=$1
  276.  
  277. alias=$2
  278.  
  279. user=$3
  280.  
  281.  
  282.  
  283. # if config file doesn't exist
  284.  
  285. if [ ! -f $HOST_FILE ]; then touch "$HOST_FILE"; fi
  286.  
  287.  
  288.  
  289. # without args
  290.  
  291. if [ $# -eq 0 ]; then
  292.  
  293. separator
  294.  
  295. echo "List of availables servers for user $(whoami) "
  296.  
  297. separator
  298.  
  299. while IFS=: read label user ip port
  300.  
  301. do
  302.  
  303. test_host $ip
  304.  
  305. echo -ne "\t"
  306.  
  307. cecho -n -blue $label
  308.  
  309. echo -ne ' ==> '
  310.  
  311. cecho -n -red $user
  312.  
  313. cecho -n -yellow "@"
  314.  
  315. cecho -n -white $ip
  316.  
  317. echo -ne ' -> '
  318.  
  319. if [ "$port" == "" ]; then
  320.  
  321. port=$SSH_DEFAULT_PORT
  322.  
  323. fi
  324.  
  325. cecho -yellow $port
  326.  
  327. echo
  328.  
  329. done < $HOST_FILE
  330.  
  331.  
  332.  
  333. list_commands
  334.  
  335.  
  336.  
  337. exit 0
  338.  
  339. fi
  340.  
  341.  
  342.  
  343. case "$cmd" in
  344.  
  345. # Connect to host
  346.  
  347. cc )
  348.  
  349. probe "$alias"
  350.  
  351. if [ $? -eq 0 ]; then
  352.  
  353. if [ "$user" == "" ]; then
  354.  
  355. user=$(get_user "$alias")
  356.  
  357. fi
  358.  
  359. addr=$(get_addr "$alias")
  360.  
  361. port=$(get_port "$alias")
  362.  
  363. # Use default port when parameter is missing
  364.  
  365. if [ "$port" == "" ]; then
  366.  
  367. port=$SSH_DEFAULT_PORT
  368.  
  369. fi
  370.  
  371. echo "connecting to '$alias' ($addr:$port)"
  372.  
  373. ssh $user@$addr -p $port
  374.  
  375. else
  376.  
  377. echo "$0: unknown alias '$alias'"
  378.  
  379. exit 1
  380.  
  381. fi
  382.  
  383. ;;
  384.  
  385.  
  386.  
  387. # Add new alias
  388.  
  389. add )
  390.  
  391. server_add
  392.  
  393. ;;
  394.  
  395. # Export config
  396.  
  397. export )
  398.  
  399. echo
  400.  
  401. cat $HOST_FILE
  402.  
  403. ;;
  404.  
  405. # Delete ali
  406.  
  407. del )
  408.  
  409. probe "$alias"
  410.  
  411. if [ $? -eq 0 ]; then
  412.  
  413. cat $HOST_FILE | sed '/^'$alias$DATA_DELIM'/d' > /tmp/.tmp.$$
  414.  
  415. mv /tmp/.tmp.$$ $HOST_FILE
  416.  
  417. echo "alias '$alias' removed"
  418.  
  419. else
  420.  
  421. echo "$0: unknown alias '$alias'"
  422.  
  423. fi
  424.  
  425. ;;
  426.  
  427. * )
  428.  
  429. echo "$0: unrecognised command '$cmd'"
  430.  
  431. exit 1
  432.  
  433. ;;
  434.  
  435. esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement