shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Auto Login com ssh ( sem troca de chaves )


From: Fabricio Lopes de Souza
Subject: Auto Login com ssh ( sem troca de chaves )
Date: Tue, 6 Dec 2005 09:33:35 -0200

Para quem queria , eu fiz um negocinho bem simples usando expect ,
ainda estou deixando ele mais bunitinho e completo pra no final ser
uma aplicacao que pra mim vai gerenciar a imensidao de ips de clientes
que tenho que decorar :

[code auto_ssh.sh]
#!/bin/bash

lista="/usr/auto_ssh/autossh.list"
expect="/usr/auto_ssh/auto_ssh.exp"
listar()
{
   awk 'BEGIN {FS=";" ; printf
"\n\n+------------------------------------------------------+\n"
}{printf "| %-2s | %-15s | %-13s | %-13s |\n",$1,$2,$3,$5 } END { 
printf "+------------------------------------------------------+\n\n"}'
$lista

   echo "Pressione qualquer tecla para continuar ..."
   read -n1
}

add()
{
   clear
   echo "Digite o ip da maquina (max 16 digitos): "
   read -n 16 ip
   echo ""
   echo "Digite o Usuario da maquina (max 13 digitos): "
   read -n 13 user
   echo ""
   echo "Digite a Senha da maquina : "
   read -s pass
   echo ""
   echo "Digite a Descricao da maquina (max 13 digitos): "
   read -n 13 desc
   echo ""
   id=$(expr $(tail -n1 $lista | cut -d";" -f1) + 1)
   echo "$id;$ip;$user;$pass;$desc" >> $lista
   echo ""
   echo "$desc recebeu id : $id"
   echo ""
   echo "Usuario adicionado com sucesso !! "
}

delete()
{
   clear
   listar
   echo "Digite o numero do registro que voce quer deletar"
   read del
   egrep -v ^$del "$lista" > "${lista}.tmp"
   mv "${lista}.tmp" "${lista}"
   echo ""
   echo "Registro de numero $del deletado com sucesso!"
}
connect()
{
   listar
   echo ""
   echo "Digite o id da maquina a se conectar"
   read id
   ip=$(grep $id $lista | cut -d";" -f2)
   user=$(grep $id $lista | cut -d";" -f3)
   pass=$(grep $id $lista | cut -d";" -f4)
# Aqui eh o mais importante , a chamada do expect que faz o login
automatico , o resto eh soh enfeite .
   exec expect -c "set ip $ip ; set user $user ; set pass $pass" $expect
}
opcoes()
{
   clear
   echo "--- OPCOES ---"
   echo ""
   echo ""
   echo "1) Listar "
   echo "2) Conectar "
   echo "3) Adicionar "
   echo "4) Apagar "
   echo "5) Sair"
   echo ""
   echo "Digite a opcao desejada : "
   read opc

   case $opc in
         1) listar ; opcoes ;;
         2) connect ; opcoes ;;
         3) add ; opcoes;;
         4) delete ; opcoes;;
         5) exit 0 ;;
         *) echo "Opcao Invalida" ; sleep 2 ; opcoes ;;
   esac
}
opcoes

[/code auto_ssh.sh]

[code autossh.exp]
#!/usr/bin/expect

spawn ssh $ip -l $user
expect "*password:"
send "$pass\r"
expect -re "Last login:*"
send_user "\n\n"
send_user 
"==========================================================\n==========================================================\n||
    Bem-Vindo ao auto-ssh         ||\n"
send_user "==========================================================\n"
send_user "==========================================================\n"
send_user "\n\n"
# Esse interact e para  o expect deixar vc usar  o prompt e tambem ser
possivel fazer alguns alias , binds e etc ... puramente ilustrativo os
a seguir
interact {
         "exit" {
                  send_user "\nTecle \"s\" para sair e \"n\" para continuar\n"
                  expect_user {
                               "s" { send "exit\r"}
                               "n" { send "\n" }
                              }
                }
         "help"  {
                  send_user "\n\n========= OPCOES =========\n"
                  send_user "exit -> Fecha a coneccao\n"
                  send_user "help -> Mostra esse menu\n"
                  send "\r\r\r"
                 }
}
[/code autossh.exp]

[code modelo auto_ssh.list]
id;Ip;Usuario;Senha;Descricao\
--;---------------;-------------;------------;-------------;
1;10.10.10.104;maria;joao;pedro
2;20.20.20.20;come;odeia;gosta
3;30.30.30.30;banana;maria;depepino
[/code modelo auto_ssh.list]


//-----------------------------------------------------------------------

Aproveitando vai uma duvida

 Queria implementar um jeito de que ninguem conseguisse editar o
arquivo auto_ssh.list , apenas  o script , pois la vai ter todas
senhas sem estar criptografadas ( seguranca = 0 huhu) , como? ;/

Bom sei que nao deve estar taoooooooooooo bom o script , mas espero
que ajude alguem , se alguem tiver sugestoes , mande :)

Abracos


reply via email to

[Prev in Thread] Current Thread [Next in Thread]