Wenn man als Admin oft auf vielen verschiedenen Unixsystemen zu Gange ist und auf diesen Systemen sogar noch sehr oft die SystemUser wechselt gibt es oft eine Menge Gründe die gegen das Konfigurieren eigener Einstellungen sprechen:
- die Policy verbietet es (wenn verschiedene Admins auf dem System administrieren, sich aber die selben User teilen)
- man arbeitet nur temporär auf dem System um ein Problem zu beheben
- manche Benutzer werden von mehreren Personen gleichzeitig verwendet
(z.B. ein DB2 Instanzuser) - es ist mühsam das Profil regelmäßig auf einigen hundert Systemen zu aktualisieren
- durch eigene Profile können Daemons die den selben Systemuser verwenden unter Umständen negativ beeinflusst werden
(z.B. bei Verwendung LC_* oder LANG-Umgebungsvariablen werden beim Durchstarten des Prozesses diese Variablen an den gestarteteten Prozess vererbt)
Viele Admins beschränken daher nur auf die Funktionalität die man bei einer typischen Shell-Sitzung antrifft und setzen die unabdingbaren Einstellungen (wie z.B. eine passende TERM-Variable) bei jeder Session neu.
Eine Lösung für dieses Problem ist, sich die passenden Kommandos in eine Datei zu schreiben und den Inhalt bei Bedarf in das gerade geöffnete Shellfenster per Cut & Paste zu übertragen.
Bei mir sieht diese Datei wie folgt aus (ich administriere einige Solaris und Linux Systeme):
--- ~/.remote-profile
[ "$BASH_VERSION" = "" ] && bash
export PS1='$(EXC=$?;if [ $EXC != 0 ] ;then echo \[\e[31m\]ERR "$EXC : " ; fi)\[\e]0;\w\a\]\[\e[32m\]\u@\H(\t) \[\e[33m\]\w\[\e[0m\] \n\$ \[\e]2;\u@\H \w\a'
alias DATE='date "+%Y-%m-%d_%H-%M-%S"';
if(uname |grep -v Linux);then
alias screen="SHELL=/usr/bin/bash TERM=vt100 screen"; alias less="less -n"
alias gdiff="/usr/local/bin/diff";
export TERM=vt220; alias bps="/usr/ucb/ps"; alias ggrep="/usr/local/bin/grep"; stty erase ^?
export EXINIT="set autoindent showmode showmatch ignorecase flash notimeout"
fi
type -p less >/dev/null 2>&1 && export PAGER=less
lspath(){
CURR="`/usr/*bin/nslookup $(uname -n) 2>/dev/null|awk '/'$(uname -n)'/{print $2}'`"
if ( echo $1|egrep "^/" >/dev/null 2>&1); then
echo -e "\n '${LOGNAME}@${CURR}:$1\n"
else
echo -e "\n '${LOGNAME}@${CURR}:${PWD}/$1\n"
fi
}
type vim >/dev/null 2>&1 && alias vi="vim"
alias l="ls -la"; alias ll="ls -l" ; alias lf="ls -Fa"; alias sl="ls"; alias lt="ls -latr";
---
Nun ist es schon etwas mühsam, bei jedem Login ein File zu öffnen und dessen Inhalt via Cut & Paste in die neue Shell zu übertragen. Eine ganz relativ elegante Lösung für dieses Problem bieten die verschiedenen "Selection Buffer" des X11 Servers. Da der "SECONDARY" Selection Buffer eigentlich nur selten in Verwendung ist, kann man diesen als dauerhaften Zwischenspeicher für das Profil verwenden.
Mann kann den Inhalt der Profil Datei mit dem Werkzeug "xsel" (z.B. verfügbar als Paket
"xsel" in Debian) automatisiert in den den Buffer befördern:
--- z.B. in ~/.xinitrc
cat ~/.remote-profile|xsel -s -i
---
Nun benötigt man nur noch eine elegante Möglichkeit den Inhalt des "SECONDARY" Selection Buffer in eine laufend Shell-Session zu befördern. Elegant geht dies z.B. mit folgender Einstellung für das Standard XTerm:
--- ~/.Xresources
# execute 'xrdb -merge ~/.Xresources' to activate
XTerm*.Translations: #override \
Ctrl<p><key>X: insert-selection(SECONDARY)
---
Auf diese Weise kann man durch die Tastenkomination "Ctrl + x" jederzeit das Profil
schnell in eine Shellsession pasten. Schon nach kurzer Zeit geht dieses Vorgehen ins Rückenmark
über ....
Alternativ kann man den Cut&Paste des Remoteprofils auch in Screen verdrahten - dies ist vor allem nützlich wenn Screen auf dem Rechner läuft von dem man sich auf den zu administrierenden Kisten einloggt (z.B. ein kassischer Jumphost). Mit folgender Anweisung kann man dann Cut&Paste des Profils relativ bequem im aktuellen Screen mit "STRG+a x" (Profil in den Screenbuffer saugen) und "STRG+a X" (Screenbuffer ins Terminal kippen) durchführen.
-- ~/.screenrc
bind x readbuf ~/.remote-profile
bind X paste .
--
Apropos: Verbatim-Blöcke in Serendipity sucken echt - irgendwas ist immer verhuntzt
Ständig muss man im HTML-Source nachbessern. (Christian : Hast du einen Tipp ?)