Carregar script no login do ssh (não interativo)

0

Estou tentando carregar módulos de ambiente de uma sessão remota não-interativa e definir as variáveis de ambiente de acordo.

Por exemplo, no meu bashrc eu normalmente chamo

module load /path/to/cmake/3.x.x

e quando eu executo "cmake --version" de um shell de login eu vejo

cmake v3.x.x

No entanto, quando executo isso com uma sessão remota não interativa, vejo o cmake v2.xxx como o surdo.

ssh me@machine 'cmake --version'

Para contornar isso, eu tentei atualizar meu / etc / ssh / sshd_config para "PermitUserEnvironment yes"

Dentro do meu arquivo ~ / .ssh / environment, eu sou capaz de definir variáveis de ambiente de acordo, e atualizar meu $ PATH. Isso funciona e, ao executar comandos remotamente por ssh, posso ver que meu caminho é atualizado. ou seja,

ssh me@machine 'echo $PATH'

Eu também criei um arquivo ~ / .ssh / rc que eu posso confirmar que é chamado. No entanto, apesar de eu ter colocado o mesmo "module load /path/to/cmake/3.x.x", ainda vejo o carregamento da v2. O mesmo acontece se eu atualizar e exportar meu PATH dentro do meu .ssh / rc. Ele atualiza, mas parece que está aplicando a um shell diferente do que está sendo usado remotamente.

Eu não entendo porque ~ / .ssh / environment modifica as coisas para o shell atual, mas ~ / .ssh / rc modifica as coisas para um shell aparentemente diferente.

Alguma idéia de como eu posso usar módulos de ambiente remotamente?

Obrigado

    
por Jordan 30.07.2017 / 16:40

1 resposta

0

Na minha experiência, certamente com o RHEL e o Fedora, o ~ / .bashrc é executado no tipo de conexão SSH "não-interativa" a que você está se referindo. Eu também uso o sistema de módulos (no RHEL), e não tenho nenhum problema com o carregamento de módulos do meu ~ / .bashrc quando eu executo um comando via SSH.

De acordo com a seguinte pergunta / respostas do site do UNIX / Linux StackExchange, algumas distros contêm código em seu padrão .bashrc (de / etc / skel) para abortar se não forem interativas - pode ser que você tenha algo assim em coloque perto do topo do seu? Também há discussão que parece confirmar que o bash, quando executado a partir do SSHD, executará o ~ / .bashrc.

link

    
por 31.07.2017 / 09:38