Como obter o valor do Host dentro de ~ / .ssh / config

2

Em um arquivo ~/.ssh/config ou ssh_config , %h fornecerá o valor HostName , mas como você obtém o valor Host ("alias")?

Por que eu iria querer fazer isso? Bem, aqui está um exemplo

  Host some_host_alias
    HostName 1.2.3.4
    User my_user_name
    PasswordAuthentication no
    IdentityFile ~/.ssh/some_host_alias.rsa.id
    LocalCommand some_script.sh %h    # <---- this is the critical line

Se eu passar %h para o script, ele usará o 1.2.3.4, que não fornece todas as opções necessárias para se conectar a essa máquina. Preciso passar some_host_alias , mas não consigo encontrar a variável % para isso.

(E: sim! Estou ciente do risco de recursão. Isso é resolvido dentro do roteiro.)

UPDATE: Kenster apontou que eu poderia apenas codificar o valor do host como um argumento para o script. É claro que isso funcionará no exemplo que dei, mas não funcionará se eu estiver usando correspondência de padrões para o Host .

    
por iconoclast 22.08.2014 / 20:21

2 respostas

3

Não sei qual versão foi adicionada, mas acho que você deseja usar %n em vez de %h . Na página man do ssh_config (5):

LocalCommand
    Specifies a command to execute on the local machine after successfully
    connecting to the server. The command string extends to the end of the
    line, and is executed with the user's shell. The following escape character
    substitutions will be performed: ‘%d’ (local user's home directory), ‘%h’
    (remote host name), ‘%l’ (local host name), ‘%n’ (host name as provided on
    the command line), ‘%p’ (remote port), ‘%r’ (remote user name) or ‘%u’
    (local user name).
    
por 22.08.2014 / 23:23
0

Parece que você já tem o alias. O que há de errado com isso?

Host some_host_alias
    [...]
    LocalCommand some_script.sh some_host_alias
    
por 22.08.2014 / 22:53

Tags