Eu tenho um grande número de sistemas que eu preciso conectar (hosts.txt) e atualizar as permissões do arquivo de chave autorizado antes de empurrar as chaves para os sistemas.
Eu herdei os arquivos que podem pressionar as teclas, verifique sub-redes para hosts que respondem ao 22 com um conjunto de nomes de usuários / senhas e verifique se o ssh pode se conectar com a nossa chave. A maioria deles está escrita na expectativa.
Agora preciso pegar a lista e enviar as permissões (0700 ou 0600?), se necessário, para os hosts que responderam à verificação da sub-rede, para que possamos enviar as chaves para os sistemas em massa.
Eu posso descobrir a parte do / ler read hosts.txt. A parte em que estou preso é a programação do ssh para o sistema de destino (use sshpass ou espera para automação de senha) com a execução do arquivo chmod 0700 ~ / .ssh / authorized_key.
Eu realmente gostaria de ver alguns códigos de retorno quando as falhas acontecem (os administradores antigos às vezes tornam o proprietário root do diretório ~ / .ssh ou até mesmo o diretório ~ para o usuário padrão que estamos ajustando.
Eu posso fazer manualmente o ssh user @ host. O usuário (e senha) permanecerá o mesmo, apenas o host mudará de acordo com o arquivo hosts.txt que estaremos carregando. Eu só estou tentando evitar isso centenas de vezes manualmente. Uma vez feito isso, poderei usar o pushkey.exp para automaticamente (fazer / while) atualizar todos os sistemas corrigidos.
Aqui está o que eu tenho até este ponto:
#!/bin/bash
# Permissions fix authorized_keys, using bash
#
# Usage: ./manage_host.sh
# -----------------------------------------------------------------------------
file="/home/user1/bin/hosts.txt"
while IFS= read -r host
do
expect -f
spawn ssh remoteuser@$host
expect "assword:"
send "ourpasswordhere\r"
if [ ! -d "~/.ssh"]; then mkdir -p ~/.ssh fi
if [ ! -f "~/.ssh/authorized_keys."]; then touch ~/.ssh/authorized_keys. fi
chown -R remoteuser:remoteuser ~/.ssh
# store exit status of chown
status=$?
# Error checking subroutine to post failures on manager server
if [ $status -ne 0 ]; then echo "'$host' ownership could not be set to svcsis." >> results.txt; fi
chmod 600 ~/.ssh/authorized_keys
exit
./push_key.exp remoteuser@$host
./keycheck.sh $host >>response.txt
done
Tags expect shell-script sshpass