Aparentemente, não tenho reputação suficiente para comentar para pedir esclarecimentos, por isso vou adivinhar aqui e editar minha resposta conforme necessário, se estiver incompleta.
Eu não sei de nenhum desses plugins, mas escrever um não seria muito difícil. Seu caso de uso não é comum, então esse é provavelmente o caminho a seguir. Existem 5 maneiras diferentes de fazer isso.
Primeiro, porém, devo mencionar que é totalmente possível ter "aliases de host" no seu /etc/ssh/ssh_config
ou ~/.ssh/config
, o que torna fácil atribuir um alias de host específico a um conjunto de opções de configuração para SSH.
Abaixo está um exemplo.
Host router
Hostname 10.0.0.1
Port 222
User root
Isso tornaria a digitação ssh router
equivalente à digitação de ssh [email protected] -p 222
.
Isso provavelmente cobre uma quantidade significativa do seu caso de uso. Desculpe se você já sabia disso - estou apenas tentando cobrir todas as bases, aqui.
Se você realmente precisa do SSH para interpretar um comando SSH fixo de maneiras diferentes, você provavelmente precisará de um wrapper em torno do comando SSH que examine os argumentos de entrada, reconheça os principais (por exemplo, produção ou desenvolvimento), interprete-os, em seguida, escolhe um dos hosts possíveis (possivelmente pré-configurado na configuração do SSH), dependendo do valor de $PWD
.
Deixe-me saber se isso ajuda! ^. ^
Atualização: muito obrigado a @ fra-san, que apontou uma muito opção mais elegante! : D (No mínimo, muito mais elegante se você tiver relativamente poucos casos especiais ...)
Você pode simplesmente fazer:
Match host production, exec ssh_match_dir
Port 5555
Hostname foodev.biz
Onde ssh_match_dir
é um script em seu PATH que sai com status 0 quando detecta que a condição deve ser aplicada, da seguinte forma:
#!/usr/bin/env bash
if test "$PWD" = "/home/a/git"; then
exit 0
else
exit 1
fi
Não deixe de olhar para man ssh_config
e prestar atenção especial à seção TOKENS
- que inclui informações sobre argumentos que você pode dizer a ssh
para passar para o script para adicionar condições extras. Eu acredito que você poderia ter um único script para lidar com cada host com diferentes condições arbitrárias se você usasse exec ssh_match_dir %h
e adicionasse alguma análise de argumento ao script - dependendo do seu caso de uso.