Estou trabalhando com muitos hosts remotos do Ubuntu que estão mudando muito. Para ter um fluxo de trabalho simplificado em todos os hosts, estou baixando meus dotfiles pessoais com aliases bash, pequenos exes e configurações nesses servidores após o login e fonte dos novos arquivos bash. Para isso, aliasei meu comando ssh para isto:
ssh() {
command ssh -t -o RemoteCommand="git -C '/tmp/myuser/dotfiles' pull --rebase \
|| git clone https://github.com/MyUser/dotfiles.git '/tmp/myuser/dotfiles'; \
bash --rcfile '/tmp/myuser/dotfiles/.bashrc' -i" "$@"
}
Isso funcionou de forma confiável até agora, no entanto, o problema aqui é que esse alias às vezes atrapalha. Um caso é, por exemplo, se eu quiser executar um comando no host remoto da minha máquina local sem fazer login no host:
ssh foreign.host 'curl http://localhost:8888/say/hello'
Nesse caso, o ssh irá reclamar Cannot execute command-line and remote command.
(já que o comando remoto já foi dado).
Existe uma maneira de configurar o OpenSSh para que meus dotfiles sejam buscados e originados somente ao executar um shell de login bash em um host?
Não sei se você pode configurar o openSSH para isso, mas você tem duas opções mais simples:
Mude o nome da função. Tenha uma que faça o que você tem atualmente, e então apenas crie um alias ou escreva uma função que faça um ssh simples:
Modifique sua função existente para fazer coisas diferentes, dependendo se você dá a ela apenas um nome de host ou um nome de host e algo mais que é assumido como o comando que você deseja executar: