[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
- Auto Login com ssh ( sem troca de chaves ),
Fabricio Lopes de Souza <=