Antes de tudo, meu conhecimento sobre Linux é limitado! Eu sou mais um desenvolvedor, que gerencia alguns servidores casualmente: -)
Então, estou operando em um farm de servidores RHEL5 / 6 (misto) e aqui está o que eu quero fazer: Eu tenho um programa Java em um servidor mestre, que executa comandos em algumas máquinas remotas. O programa Java envia meus comandos para o SO corretamente - os comandos locais podem ser executados sem problemas. Meu problema é a execução de comandos nos servidores remotos:
- Eu tenho as chaves SSH, que permitem ao meu mestre simplesmente obter privilégios de root nos escravos
- Meu comando funciona, se eu acioná-lo diretamente por meio de um terminal (por exemplo,
ssh [email protected] "cd /opt/bla"
)
- Eu tentei abordagens diferentes, com resultados diferentes - nenhum deles correto:)
Tentativa nº 1
$ ssh [email protected]
Pseudo-terminal will not be allocated because stdin is not a terminal.
Host key verification failed.
Então, estando familiarizado com o Google, li sobre o tty, que supostamente resolveria o problema, mas só levaria a:
Tentativa nº 2
$ ssh -t -t [email protected]
tcgetattr: Invalid argument
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
RSA key fingerprint is <somehex>.
Então, meu aplicativo ficou preso neste ponto, estranhamente depois do Ctrl + C'ing, vi o seguinte texto:
Are you sure you want to continue connecting (yes/no)? Killed by signal 2.
Então, estou assumindo que algo estava funcionando, mas ficou preso na entrada.
No entanto, não consegui encontrar nada de conclusivo sobre esse erro. Uma dica em algum lugar foi editar /etc/sudoers
e comentar (eu sei que não é recomendável)
# Defaults requiretty
que não fez nada, embora eu não tenha idéia se eu deveria mudar essa configuração no master e / ou no slave e se uma reinicialização ou algum reinício de um daemon é necessário.
Minha pergunta agora é: isso leva a algum lugar ou minhas tentativas são inúteis? Ou existe alguma maneira melhor de executar comandos remotos em escravos disparados por um programa na máquina mestre? Por favor, tenha em mente que não vou recompilar meu kernel ou fazer qualquer shenanigan complicado, já que eu simplesmente não tenho experiência com o Linux ..
A ajuda é muito apreciada!