conssh.sh - Frontend para SSH via proxy HTTP

Publicado por Flávio Augusto (última atualização em 07/11/2010)

[ Hits: 5.194 ]

Homepage: http://twitter.com/facmachado

Download conssh.sh




Frontend para SSH via Proxy HTTP. Requer o OpenSSH e o ProxyTunnel instalados na máquina. Testado inclusive com o Cygwin.

  



Esconder código-fonte

#!/bin/bash


################################################################################
##
##  *** conssh.sh ***
##
##  Autor:  Flavio Augusto Cardoso Machado
##
##  E-mail: facmachado arroba gmail ponto com
##
##  Data de criacao: 15/10/2010
##
##  Licenciado sob os termos da Control+C Control+V Public License (CCCV)
##
##  "JESUS TE AMA. USE LINUX!"
##
################################################################################
##
##  Descricao: Frontend para acessar o servidor SSH via servidor Proxy.
##             Requer o OpenSSH e o ProxyTunnel instalados
##
################################################################################


# Este programa
THIS=$(basename $0)

# Mensagens de erro
DOHELP="Usage: $THIS [-k keyfile] -u user -h host:port [-p proxy:port] [-t srcport:dstport] [-c \"cmd\"]"
NOPROG="$THIS: Are OpenSSH and ProxyTunnel installed?"
NOHOST="$THIS: Inform ssh server address"

# Verificando a existencia dos aplicativos
SSH=$(which ssh)
TUNNEL=$(which proxytunnel)
[ ! -x "$SSH" ] && echo "$NOPROG" && exit 1
[ ! -x "$TUNNEL" ] && echo "$NOPROG" && exit 1

# Definindo o servior ssh a ser acessado (endereco[:porta])
dohost() {
   if [ "$(echo $1|grep :)" ]; then
      _host=$(echo $1|cut -d: -f1)
      _port=$(echo $1|cut -d: -f2)
   else
      _host=$1
      _port=22
   fi
}

# Definindo o servidor proxy, opcional (endereco:porta)
doproxy() {
   read -p "Proxy user (hit <ENTER> for none): "  p_user
   read -s -p "Proxy password (hit <ENTER> for none): " p_pwd
   if [ "$p_user" ] && [ "$p_pwd" ]; then
      _proxy="-o 'ProxyCommand $TUNNEL -p $1 -P $p_user:$p_pwd -d $_host:$_port'"
   else
      _proxy="-o 'ProxyCommand $TUNNEL -p $1 -d $_host:$_port'"
   fi
}

# Definindo a porta a ser tunelada por ssh, tambem opcional (origem:destino)
dotunnel() { 
   if [ "$(echo $1|grep :)" ]; then
      s_port=$(echo $1|cut -d: -f1)
      d_port=$(echo $1|cut -d: -f2)
   else
      s_port=$1
      d_port=$1
   fi
   _tun="-L $s_port:127.0.0.1:$d_port"
}

# Mensagem do comando sem parametros
[ ! "$*" ] && echo "$DOHELP" && exit 0

# Loop para organizar os parametros do comando
while (("$#")); do
   case $1 in
      -c) if [ "$2" ]; then _cmd="$2"; fi ;;
      -p) if [ "$2" ]; then doproxy $2; fi ;;
      -t) if [ "$2" ]; then dotunnel $2; fi ;;
      -k) if [ "$2" ]; then _key="-i $2"; fi ;;
      -u) if [ "$2" ]; then _user="-l $2"; fi ;;
      -h) [ ! "$2" ] && echo "$NOHOST" && exit 1; dohost $2 ;;
   esac
   shift
done

# Agora, executar o programa
echo
bash -c "$SSH $_key $_user -p $_port $_proxy $_tun $_host '$_cmd'"
exit 0

Scripts recomendados

Descompactar vários arquivos ao mesmo tempo de um diretório específico

Twitter via linha de comando!

Backup avançado

Relatório analitico de VLANs no PHP-IPAM

iptables, sem frescuras!


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts