2016-04-19 3 views
0

Das Environment Modules Paket wird für die dynamische Änderung einer Benutzerumgebung verwendet (Debian-Paketenvironment-modules).Wie Verwenden von Umgebungsmodul in einer SSH-Befehlszeile?

Ich möchte module direkt von einer ssh Befehlszeile verwenden. Der Zweck besteht darin, Befehle auf verschiedenen Knoten von einem Bash-Skript ausführen zu können, das auf einem Frontknoten ausgeführt wird. Ich möchte PATH und LD_LIBRARY_PATH Umgebungsvariablen nicht explizit für jede unterschiedliche Knotenkonfiguration aktualisieren.

Wenn ich an den Knoten direkt verbinden und dann module vom Knoten aufrufen, wird es offensichtlich funktioniert:

jyvet> ssh mynode 
[email protected]> module load gcc-6.0 
[email protected]> gcc --version 
gcc (GCC) 6.0.1 

Aber der folgende Ansatz versagt:

jyvet> ssh mynode "module load gcc-6.0; gcc --version" 
command not found: module 
gcc-4.8 (Debian 4.8.4-1) 4.8.4 

Antwort

1

module von /etc/profile.d/modules.sh initialisiert wird, die wird von /etc/profile (die die Umgebungsvariablen beim Start der Shell setzt) ​​aufgerufen.

Die ssh Befehlsausführung Shell ist ein nicht-interaktiv Shell und weder /etc/profile nicht nennen, noch Konfigurationsdateien lesen. Hier

ist die Lösung:

jyvet> ssh mynode "source /etc/profile; module load gcc-6.0; gcc --version" 
gcc (GCC) 6.0.1 
1

Sie können auch eine Login-Instanz bash so aufrufen, dass die /etc/profile.d/modules.sh ist source -Ed automatisch während Login:

ssh mynode "bash -lc 'module load gcc-6.0; gcc --version'" 
Verwandte Themen