Shell Script para logar em SSH em vários servidores (não é ao mesmo tempo) [RESOLVIDO]

1. Shell Script para logar em SSH em vários servidores (não é ao mesmo tempo) [RESOLVIDO]

Deilson Oliveira
deilsoncso

(usa Ubuntu)

Enviado em 06/06/2018 - 17:10h

Olá a todos,

Estou a horas quebrando a cabeça pra tentar criar um shell script na qual eu consiga logar automaticamente no root via ssh de onde trabalho. Um antigo funcionário conseguiu criar um script que era possível (porém a máquina foi limpa após o desligamento) e queria que o script funcionasse dessa forma:

Nossa empresa tem vários clientes, mas alguns prefixos no SSH são o mesmo para todos, por exemplo, minha empresa chama 'Systems' e tenho 5 clientes, e esses 5 clientes possuem contratado com minha empresa o suporte no servidor de e-mail e firewall ok?

Então meus clientes são:
Cliente1, Cliente2, Cliente3, Cliente4, Cliente5.
e no SSH logamos da seguinte forma:

Para o cliente 1 quando é e-mail usamos:
root@cliente1.email.systems.com.br
e quando é firewall usamos:
root@cliente1.firewall.systems.com.br

Para o cliente 2 quando é e-mail usamos:
root@cliente2.email.systems.com.br
e quando é firewall usamos:
root@cliente2.firewall.systems.com.br


então a ideia era logar automaticamente no SSH informando apenas o nome do cliente e o tipo de suporte, por exemplo o script para logar nos SSH de email seria "gomail" ai eu inseria: $ gomail cliente1 ou se fosse para logar no SSH de firewall seria "gofire" então inseria: $gofire cliente1, e assim por diante, ou seja, seria um shell para logar em todos os SSH que sejam para e-mail e outro para firewall, assim seria mais simples, porque o que muda é apenas o nome do cliente, pois o root e o restante do host (systems.com.br) é tudo igual.

OBS: quando consegui ler uma unica vez o script desse funcionário a muito tempo eu tinha visto um CURL na linha de comando, (eu acho, não tenho certeza) então ele atribuiu mais linguagens dentro do shell.

Se puderem me ajudar iria agradecer DEMAIS, porque aqui sempre precisamos toda hora acessar o servidor do cliente, ai saimos de um logamos no outro, saimos de um e logamos no outro, e ficar toda hora inserindo ssh -p root@host.com.br é um saco.

Obrigado a todos!


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 07/06/2018 - 22:52h

AzuosDX escreveu:

msoliver escreveu:

AzuosDX escreveu:

Olá a todos,

Estou a horas quebrando a cabeça pra tentar criar um shell script na qual eu consiga logar automaticamente no root via ssh de onde trabalho. Um antigo funcionário conseguiu criar um script que era possível (porém a máquina foi limpa após o desligamento) e queria que o script funcionasse dessa forma:

Nossa empresa tem vários clientes, mas alguns prefixos no SSH são o mesmo para todos, por exemplo, minha empresa chama 'Systems' e tenho 5 clientes, e esses 5 clientes possuem contratado com minha empresa o suporte no servidor de e-mail e firewall ok?

Então meus clientes são:
Cliente1, Cliente2, Cliente3, Cliente4, Cliente5.
e no SSH logamos da seguinte forma:

Para o cliente 1 quando é e-mail usamos:
root@cliente1.email.systems.com.br
e quando é firewall usamos:
root@cliente1.firewall.systems.com.br

Para o cliente 2 quando é e-mail usamos:
root@cliente2.email.systems.com.br
e quando é firewall usamos:
root@cliente2.firewall.systems.com.br


então a ideia era logar automaticamente no SSH informando apenas o nome do cliente e o tipo de suporte, por exemplo o script para logar nos SSH de email seria "gomail" ai eu inseria: $ gomail cliente1 ou se fosse para logar no SSH de firewall seria "gofire" então inseria: $gofire cliente1, e assim por diante, ou seja, seria um shell para logar em todos os SSH que sejam para e-mail e outro para firewall, assim seria mais simples, porque o que muda é apenas o nome do cliente, pois o root e o restante do host (systems.com.br) é tudo igual.

OBS: quando consegui ler uma unica vez o script desse funcionário a muito tempo eu tinha visto um CURL na linha de comando, (eu acho, não tenho certeza) então ele atribuiu mais linguagens dentro do shell.

Se puderem me ajudar iria agradecer DEMAIS, porque aqui sempre precisamos toda hora acessar o servidor do cliente, ai saimos de um logamos no outro, saimos de um e logamos no outro, e ficar toda hora inserindo ssh -p root@host.com.br é um saco.

Obrigado a todos!

Boa noite AzuosDX.
Verifique se atende a necessidade.

#!/bin/bash
CV="\e[0;38;5;196m"
CF="\e[m"

USO() { echo -e "$CV Argumento Inválido/Faltante.\n \$1 (mail|fire)\n \$2 Nome_do_Cliente$CF\n" ; }

INICIO() {
if (($# == 2));then
case $1 in
mail) echo "root@$2.email.systems.com.br" ;;
fire) echo "root@$2.firewall.systems.com.br" ;;
*) USO ;;
esac
else
USO
fi
}
INICIO $1 $2


OBS.: Coloquei a SAÍDA do "case" com "echo", somente para efeito de testes, retire-o e também as aspas.
Para usar, faça:
NomeDoScript Serviço NomeDoCliente,
Serviço é "mail" ou "fire".
Se o script for útil e atender a sua necessidade, marque o tópico como resolvido,
e a minha resposta como a melhor...

Att.:
Marcelo Oliver



Esse deu super certo, alterei a saída do echo para ssh, e funcionou perfeitamente, a dúvida é será que na segunda vez que eu usar, ele ira logar automaticamente? ou precisa colocar algo dentro do script para que ele salve as senhas (ou a chave pública da conexão do ssh) quando logado pela primeira vez?


Boa noite AzuosDX.
Quanto a senha, pode colocar no script....
A chave pública está no seu micro....

Respondendo o email....
As variáveis:
CV="\e[0;38;5;196m"
CF="\e[m"
Referem-se a cor usada na função USO.....
Falando em cores, segue um script com 512 cores...

#!/bin/bash
#V13-Nov/2016
COLS=$(tput cols)
COLS2=$((COLS/2))
COR1="\x1B[1;38;5;190m"
COR2="\x1B[1;38;5;196m"
FC="\x1B[m"

MSGERRO_01() {
Linha
echo -e "\n$COR2 OPÇãO INVáLIDA$FC\n DIGITE UM Nº De \"000\" a \"511\"\n"
Linha
ESCOLHA
}

Linha() { printf '%*s' "$COLS2" '' | sed "s/ /—/g" ;echo; }

ESCOLHA() {
read -p " ESCOLHA A COR: " -e -n3
[ $REPLY ] || MSGERRO_01
[[ $REPLY == +(XXX|xxx) ]] && { echo -e "$COR1\n •• ENCERRADO •• $FC\n";exit 0; }
[ $(egrep '^[0-9]+$' <<< "$REPLY") ] || MSGERRO_01
REPLY=$((10#$REPLY))
if (($REPLY<0)) || (($REPLY>=512));then MSGERRO_01
else
COR=$((REPLY/2))
ATB=$((REPLY%2))
CE="\x1B[$ATB;38;5;${COR}m"
printf "$CE %03d => $FC" "$REPLY" ; echo "\x1B[$ATB;38;5;${COR}m"|tee -a COR_ESCOLHIDA.txt
Linha
ESCOLHA
fi
}
printf '\033\143'
DIV=$((COLS/7))
printf "\n TABELA DE CORES: [DIGITE (XXX|xxx) p/ SAIR]\n"
IND=0
for COR in {0..255};do for ATB in 0 1;do
if (($(($IND%DIV))==0));then
printf " %b&#9632;%03d&#9632;%b " "\x1B[${ATB};38;05;${COR}m" "$((IND++))" "\x1B[m\n"
else
printf " %b&#9632;%03d&#9632;%b " "\x1B[${ATB};38;05;${COR}m" "$((IND++))" "\x1B[m"
fi
done;done
echo -e "\n"
ESCOLHA

marcelo oliver



3. Re: Shell Script para logar em SSH em vários servidores (não é ao mesmo tempo) [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/06/2018 - 20:29h

AzuosDX escreveu:

Olá a todos,

Estou a horas quebrando a cabeça pra tentar criar um shell script na qual eu consiga logar automaticamente no root via ssh de onde trabalho. Um antigo funcionário conseguiu criar um script que era possível (porém a máquina foi limpa após o desligamento) e queria que o script funcionasse dessa forma:

Nossa empresa tem vários clientes, mas alguns prefixos no SSH são o mesmo para todos, por exemplo, minha empresa chama 'Systems' e tenho 5 clientes, e esses 5 clientes possuem contratado com minha empresa o suporte no servidor de e-mail e firewall ok?

Então meus clientes são:
Cliente1, Cliente2, Cliente3, Cliente4, Cliente5.
e no SSH logamos da seguinte forma:

Para o cliente 1 quando é e-mail usamos:
root@cliente1.email.systems.com.br
e quando é firewall usamos:
root@cliente1.firewall.systems.com.br

Para o cliente 2 quando é e-mail usamos:
root@cliente2.email.systems.com.br
e quando é firewall usamos:
root@cliente2.firewall.systems.com.br


então a ideia era logar automaticamente no SSH informando apenas o nome do cliente e o tipo de suporte, por exemplo o script para logar nos SSH de email seria "gomail" ai eu inseria: $ gomail cliente1 ou se fosse para logar no SSH de firewall seria "gofire" então inseria: $gofire cliente1, e assim por diante, ou seja, seria um shell para logar em todos os SSH que sejam para e-mail e outro para firewall, assim seria mais simples, porque o que muda é apenas o nome do cliente, pois o root e o restante do host (systems.com.br) é tudo igual.

OBS: quando consegui ler uma unica vez o script desse funcionário a muito tempo eu tinha visto um CURL na linha de comando, (eu acho, não tenho certeza) então ele atribuiu mais linguagens dentro do shell.

Se puderem me ajudar iria agradecer DEMAIS, porque aqui sempre precisamos toda hora acessar o servidor do cliente, ai saimos de um logamos no outro, saimos de um e logamos no outro, e ficar toda hora inserindo ssh -p root@host.com.br é um saco.

Obrigado a todos!

Boa noite AzuosDX.
Verifique se atende a necessidade.

#!/bin/bash
CV="\e[0;38;5;196m"
CF="\e[m"

USO() { echo -e "$CV Argumento Inválido/Faltante.\n \$1 (mail|fire)\n \$2 Nome_do_Cliente$CF\n" ; }

INICIO() {
if (($# == 2));then
case $1 in
mail) echo "root@$2.email.systems.com.br" ;;
fire) echo "root@$2.firewall.systems.com.br" ;;
*) USO ;;
esac
else
USO
fi
}
INICIO $1 $2


OBS.: Coloquei a SAÍDA do "case" com "echo", somente para efeito de testes, retire-o e também as aspas.
Para usar, faça:
NomeDoScript Serviço NomeDoCliente,
Serviço é "mail" ou "fire".
Se o script for útil e atender a sua necessidade, marque o tópico como resolvido,
e a minha resposta como a melhor...

Att.:
Marcelo Oliver



4. Re: Shell Script para logar em SSH em vários servidores (não é ao mesmo tempo) [RESOLVIDO]

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 06/06/2018 - 20:30h

Opa!

Publiquei um artigo de como gerar scripts para SSH no Python 3.
Esse script Python deve te atender.

https://www.linkedin.com/pulse/criando-scripts-ssh-com-phyton-diego-mendes-rodrigues/

Abraço,
Diego M. Rodrigues


5. Re: Shell Script para logar em SSH em vários servidores (não é ao mesmo tempo) [RESOLVIDO]

Deilson Oliveira
deilsoncso

(usa Ubuntu)

Enviado em 07/06/2018 - 13:58h

msoliver escreveu:

AzuosDX escreveu:

Olá a todos,

Estou a horas quebrando a cabeça pra tentar criar um shell script na qual eu consiga logar automaticamente no root via ssh de onde trabalho. Um antigo funcionário conseguiu criar um script que era possível (porém a máquina foi limpa após o desligamento) e queria que o script funcionasse dessa forma:

Nossa empresa tem vários clientes, mas alguns prefixos no SSH são o mesmo para todos, por exemplo, minha empresa chama 'Systems' e tenho 5 clientes, e esses 5 clientes possuem contratado com minha empresa o suporte no servidor de e-mail e firewall ok?

Então meus clientes são:
Cliente1, Cliente2, Cliente3, Cliente4, Cliente5.
e no SSH logamos da seguinte forma:

Para o cliente 1 quando é e-mail usamos:
root@cliente1.email.systems.com.br
e quando é firewall usamos:
root@cliente1.firewall.systems.com.br

Para o cliente 2 quando é e-mail usamos:
root@cliente2.email.systems.com.br
e quando é firewall usamos:
root@cliente2.firewall.systems.com.br


então a ideia era logar automaticamente no SSH informando apenas o nome do cliente e o tipo de suporte, por exemplo o script para logar nos SSH de email seria "gomail" ai eu inseria: $ gomail cliente1 ou se fosse para logar no SSH de firewall seria "gofire" então inseria: $gofire cliente1, e assim por diante, ou seja, seria um shell para logar em todos os SSH que sejam para e-mail e outro para firewall, assim seria mais simples, porque o que muda é apenas o nome do cliente, pois o root e o restante do host (systems.com.br) é tudo igual.

OBS: quando consegui ler uma unica vez o script desse funcionário a muito tempo eu tinha visto um CURL na linha de comando, (eu acho, não tenho certeza) então ele atribuiu mais linguagens dentro do shell.

Se puderem me ajudar iria agradecer DEMAIS, porque aqui sempre precisamos toda hora acessar o servidor do cliente, ai saimos de um logamos no outro, saimos de um e logamos no outro, e ficar toda hora inserindo ssh -p root@host.com.br é um saco.

Obrigado a todos!

Boa noite AzuosDX.
Verifique se atende a necessidade.

#!/bin/bash
CV="\e[0;38;5;196m"
CF="\e[m"

USO() { echo -e "$CV Argumento Inválido/Faltante.\n \$1 (mail|fire)\n \$2 Nome_do_Cliente$CF\n" ; }

INICIO() {
if (($# == 2));then
case $1 in
mail) echo "root@$2.email.systems.com.br" ;;
fire) echo "root@$2.firewall.systems.com.br" ;;
*) USO ;;
esac
else
USO
fi
}
INICIO $1 $2


OBS.: Coloquei a SAÍDA do "case" com "echo", somente para efeito de testes, retire-o e também as aspas.
Para usar, faça:
NomeDoScript Serviço NomeDoCliente,
Serviço é "mail" ou "fire".
Se o script for útil e atender a sua necessidade, marque o tópico como resolvido,
e a minha resposta como a melhor...

Att.:
Marcelo Oliver



Esse deu super certo, alterei a saída do echo para ssh, e funcionou perfeitamente, a dúvida é será que na segunda vez que eu usar, ele ira logar automaticamente? ou precisa colocar algo dentro do script para que ele salve as senhas (ou a chave pública da conexão do ssh) quando logado pela primeira vez?


6. Re: Shell Script para logar em SSH em vários servidores (não é ao mesmo tempo) [RESOLVIDO]

Deilson Oliveira
deilsoncso

(usa Ubuntu)

Enviado em 07/06/2018 - 13:59h

diegomrodrigues escreveu:

Opa!

Publiquei um artigo de como gerar scripts para SSH no Python 3.
Esse script Python deve te atender.

https://www.linkedin.com/pulse/criando-scripts-ssh-com-phyton-diego-mendes-rodrigues/

Abraço,
Diego M. Rodrigues


Eu li e reli novamente mas não consegui entender, acho que é porque apenas li e não cheguei a praticar, vou tentar fazer na prática pra ver se irá dar certo.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts