Pessoal,
Eu consegui evoluir no script, porém estou achando que ele está muito lento para executar os procedimentos. Testei apenas com 3 hosts e o tempo está muito elevado. Então resolvi mudar para um modelo mais simples, onde eu valido dois arquivos, linha a linha (sem testar possíveis correlações).
No momento está assim:
hosts.txt:
host1
host2
host3
sehas.txt
senhahost1
senhahost2
senhahost3
arquivo de validação:
#Variaveis
HOSTS=$(cat /root/temp/hosts.txt)
PWDS=$(cat /root/temp/pws.txt)
DATA="" -lct /etc | tail -1 | awk '{print $6, $7, $8}'`
# Comando a ser executado
####### Contador para ler o arquivo de senhas linha a linha #######
i=0
for pd in $PWDS; do
pws[$i]=$pd;
i=`expr $i + 1`
done
####### Contador para ler o arquivo de hosts linha a linha e testar a senha usando o script expect #######
### Eh passado como parametro o servidor ($j) e a senha do mesmo ($pws)
i=0
for j in $HOSTS; do
/root/temp/pwtest.exp $j ${pws[$i]} ${DATA}
i=`expr $i + 1`
done
Arquivo do expect para receber as variaveis pwtest.exp:
######### Variaveis #########
set timeout 5
set HOST [lindex $argv 0]
set PASS [lindex $argv 1]
set DATA [lindex $argv 2]
log_user 1
## Inicializa a conexao SSH
spawn -noecho ssh -q -o StrictHostKeyChecking=no root@$HOST
send "$PASS\r"
expect " \n"
send_user "$DATA\r"
#expect -re "\n(\[^\r]*)\r" ;
expect " \n"
send "exit\r"
O que acontece é que na hora de tratar a variável data, só vem pra mim a primeira parte da data:
[root@br001vs0246 temp]# ls -lct /etc | tail -1 | awk '{print $6, $7, $8}'
Mar 1 2016
Porém, dentro do script, só vem "Mar" como valor. Alguém saberia dizer como eu concateno esses valores formando uma string?
Muito obrigado!