
Desejo criar o seguinte script em .profile, para que cada sessão SSH vá diretamente para seu lugar:
- Verifique o host especificado (user@host).
- Se host = host1 -- cd /var/www/site1
etc.
Ajuda! :)
Responder1
Tenho certeza de que o SSH não envia o nome do host para o servidor (ele apenas o usa localmente para procurar um endereço IP e verificar chaves, etc.). Pelo menos, não de uma forma que possa ser usada em um script de shell.
Veja a saída de env
- o único nome de host é o canônico, independentemente do nome usado no comando ssh.
Alguns clientes SSH e alguns servidores SSH permitem que o cliente especifique um valor para uma ou mais variáveis de ambiente, possivelmente você poderia usar isso para informar ao servidor para qual diretório alternar. Por exemplo, veja Massaconfiguração, conexão, dadosou OpenSSHEnviarEnvopção.
Caso contrário, você terá um ID de usuário para cada site com um nome de domínio diferente ou terá que oferecer um menu ao usuário.
Responder2
Sua pergunta não está clara: você está acessando o mesmo host por meio de vários aliases? Você está alcançando hosts diferentes que compartilham um .profile
? Você está tentando executar comandos com base no nome do host de origem ou nos nomes do host de destino?
Se você quiser efeitos diferentes em diferentes hosts remotos, basta testar o nome do host remoto:
case "$(hostname)" in
host1) cd /var/www/site1;;
esac
Se você quiser efeitos diferentes no mesmo host, você pode usar as SendEnv
diretivas no seu~/.ssh/config
para enviar variáveis de ambiente (supondo que você esteja usando oOpenSSHcliente). Eles precisam ser habilitados com umAcceptEnv
diretiva no lado do servidor, o que muitas vezes não é o caso. No entanto, LC_*
as variáveis normalmente são permitidas, portanto você pode passar informações usando-as. No lado do cliente, execute LC_VIRTUAL_HOST=site1 ssh common-host.provider.com
. No seu .profile
servidor, escreva
case "$LC_VIRTUAL_HOST" in
host1) cd /var/www/site1;;
esac