Когда количество машин, на которые я постоянно заходил по ssh достигло 3х, я понял, что просто быстрой авторизации мне мало, и пора перетащить bash-алиасы, конфиги к редактору и прочие элементы окружения на удаленные системы. С другой стороны, нужен был способ не путаться в многочисленных вкладочках с терминалами. В итоге я пришел к связке из scp, screen и цветовой дифференциации хостовСкриншоты результатов:
Домашняя система:
Одна из удаленных машин:
Команда для синхронизации профиля:
Подробности под катом.
Первое, что я сделал, это разделил профиль на общий и локальный (см скриншоты), и в общем профиле заsource'ил локальный:
|
# Check for an interactive session |
|
alias ls='ls --color=auto' |
|
PS1='[\u@\[\e[0;'$PS1_hostcolor'm\]\h\[\e[0m\] \w]\$ ' |
А в локальный записал нужные переменные:
|
export SCREEN_hostcolor=g |
После этих нехитрых манипуляций PS1 позеленел, обозначая мою хост-систему.
А после этих:
|
eval "hardstatus string '%{= .w}%-w%{= .$SCREEN_hostcolor}%50>%n %t%{= .w}%+w%<'" |
|
hardstatus alwayslastline |
позеленел и screen. Осталось дело за малым — скопировать на все остальные машины и изменить там .*_local файлы на нужные. Мой .bash_functions время от времени обновляется, поэтому был наваян скриптец, пинающий scp за меня :)
|
source ~/.config/profsyncrc |
|
for host in ${hosts_scp[@]} ; do |
|
echo "Syncronizing ${host}..." |
|
for target in ${targets[@]} ; do |
|
scp -r $target $host:$target |
Управляется скрипт простым конфигом:
|
$ cat ~/.config/profsyncrc |
|
hosts_scp=(campus amignode) # куда обновляемся |
|
basepath="$HOME" # исходный путь к файлам (будет полезно, если решите обновлять кроном) |
|
targets=('.bashrc' '.bash_functions' '.screenrc' '.nanorc') # файлы для обновления |
scp понимает и директории, так что можно синхронизировать хоть .config :)
Однажды настроенная, эта связка уже не раз мне пригодилась, и, надеюсь, пригодится и вам.