Pergunta

É possível ter um script Perl aliases shell prazo? Eu estou correndo em uma situação onde temos um módulo Perl que eu não tenho acesso para modificar e uma das coisas que ele faz é registros em vários servidores via SSH para executar alguns comandos remotamente. Infelizmente alguns dos sistemas (que eu também não têm acesso para modificar) tem um servidor SSH de buggy que vai desligar assim que minhas tentativas do sistema para enviar uma chave pública SSH. Eu tenho o agente SSH correr, porque eu preciso dele para conectar a outros servidores.

Meu solução inicial foi a criação de um alias para set ssh para ssh -o PubkeyAuthentication = no, mas Perl corre o ssh binário que encontra no PATH em vez de tentar usar o alias.

Parece que as únicas soluções são desativar o agente SSH, enquanto eu estou ligando para os servidores de problema ou substituir o módulo Perl que faz a conexão real.

Foi útil?

Solução

Alter do PATH antes de executar o script perl, ou usar isso em seu .ssh / config

Host *
  PubkeyAuthentication no

Outras dicas

Talvez você poderia colocar um comando chamado ssh em PATH à frente da ssh que corre ssh como você quer que ele seja executado.

Por que você não pule o alias e apenas criar um script shell chamado ssh em algum lugar diretório, em seguida, altere o caminho para colocar esse diretório antes o que contém o ssh real?

Eu tive que fazer isso recentemente com iostat porque a nova saída versão um formato diferente que um produto de terceiros não poderia lidar com (é digitalizada a saída para gerar um relatório).

Acabei de criar um script shell iostat que chamou a iostat real (com o caminho codificado, mas você pode ser mais sofisticados), passando a saída através de um script awk a massageá-lo para o formato original. Então, eu mudei o caminho para o programa de terceiros e começou a trabalhar bem.

Você poderia declarar uma função em .bashrc (ou .profile ou qualquer outro) com esse nome. Ele poderia ser assim (pode quebrar):

function ssh {
  /usr/bin/ssh -o PubkeyAuthentication=no "$@"
}

Mas usando um arquivo de configuração pode ser a melhor solução no seu caso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top