Shell-Einstellungen vorübergehend auf Remote-SSH-Sitzung übertragen?

0

Ich bin neugierig, häufig möchte ich alle meine Shell-Einstellungen (Punktedateien) nur während meiner Sitzung auf eine Remote-Sitzung übertragen und sie dann beim Abmelden rückgängig machen lassen. Noch besser wäre es, diese nur in dieser Sitzung zu aktivieren, damit jeder andere, der sich anmeldet, auch die Standard- oder seine eigenen benutzerdefinierten Einstellungen für die Shell haben kann.

Gibt es eine Möglichkeit, dies zu tun, oder würde es eine benutzerdefinierte Lösung erfordern, bei der ich diese Funktionalität selbst schreibe? Ich sehe derzeit keine wirklichen Optionen, um dies zu erreichen.

ylluminate
quelle

Antworten:

2

Sie müssen nicht viel schreiben (nur ein Shell-Skript). Die Werkzeuge sind schon da. Verwenden Sie diese, um nur das zu exportieren, was Sie benötigen, um die Shell-Funktionen anderer zu reparieren.

(set; alias) |
ssh -l root 10.3.0.8 'mkdir ~/tmp 2>/dev/null; cat > ~/tmp/.import'

Dies ist nicht ausfallsicher. Probieren Sie die Ausgabe aus, bis Sie der Meinung sind, dass sie ordnungsgemäß funktioniert.

(set; alias) > ~/tmp/import
bash -n tmp/import

tmp/import: line 6085: syntax error near unexpected token `('
tmp/import: line 6085: `        !(?(*/)python*([0-9.])|-?))'

Dies ist bei Umgebungsvariablen weniger problematisch, da ein analysierbares Format leicht erzwungen werden kann:

env | sed -Ee "
      s/'/\\\\'/g;
      s/=(.*)/='\1'/
      " > tmp/export.vars-only

Und so können Sie nur Ihre Funktionen exportieren.

declare -f `grep  ^function ~/.functions | awk '{print $2}'`

Wenn Sie die moo() { true;}Syntax verwenden, um sie oder eine Variation davon zu deklarieren, können Sie es versuchengrep -Eoe '^\w+' ~/.functions

Ярослав Рахматуллин
quelle
1

Je nachdem, was Sie brauchen, gibt es verschiedene Lösungen.

  1. Wenn Sie die Konfiguration des openssh-Servers steuern können, können Sie AcceptENV auf dem Server einrichten. Anschließend sendet SendENV im Client bestimmte Umgebungsvariablen.

  2. Wenn dies nicht ausreicht und Sie die Schlüsselauthentifizierung verwenden, können Sie authorized_keys-Einträge verwenden, um bestimmte Befehle auszuführen, z. B. das Laden von Einstellungsdateien, die Sie bereits übertragen haben.

  3. Wenn beides für Sie nicht funktioniert, müssen Sie Ihr Skript / Ihren Befehl nur mit einem Wrapper umschließen, der Ihre Umgebung einrichtet.

johnshen64
quelle
0

Ich fürchte, Sie müssen etwas Angepasstes schreiben ... etwas in der Art eines einfachen cp-Befehls für die beteiligten Verzeichnisse und Dateien.

mdpc
quelle