Pull to refresh

Синхронизация профилей между linux-системами

Reading time 2 min
Views 3.7K
Когда количество машин, на которые я постоянно заходил по ssh достигло 3х, я понял, что просто быстрой авторизации мне мало, и пора перетащить bash-алиасы, конфиги к редактору и прочие элементы окружения на удаленные системы. С другой стороны, нужен был способ не путаться в многочисленных вкладочках с терминалами. В итоге я пришел к связке из scp, screen и цветовой дифференциации хостов :)
Скриншоты результатов:
Домашняя система:

Одна из удаленных машин:

Команда для синхронизации профиля:
$ profsync
Подробности под катом.


Первое, что я сделал, это разделил профиль на общий и локальный (см скриншоты), и в общем профиле заsource'ил локальный:

$ cat .bashrc
# Check for an interactive session
[ -z "$PS1" ] && return
source ~/.bashrc_local
alias ls='ls --color=auto'
PS1='[\u@\[\e[0;'$PS1_hostcolor'm\]\h\[\e[0m\] \w]\$ '
complete -cf sudo
source ~/.bash_functions


А в локальный записал нужные переменные:

$ cat .bashrc_local
PS1_hostcolor=32
export SCREEN_hostcolor=g


После этих нехитрых манипуляций PS1 позеленел, обозначая мою хост-систему.
А после этих:

$ cat .screenrc
eval "hardstatus string '%{= .w}%-w%{= .$SCREEN_hostcolor}%50>%n %t%{= .w}%+w%<'"
hardstatus alwayslastline


позеленел и screen. Осталось дело за малым — скопировать на все остальные машины и изменить там .*_local файлы на нужные. Я люблю читать commandlinefu, и мой .bash_functions время от времени обновляется, поэтому был наваян скриптец, пинающий scp за меня :)

$ cat `which profsync`
#!/bin/bash

source ~/.config/profsyncrc

cd $basepath

for host in ${hosts_scp[@]} ; do
echo "Syncronizing ${host}..."
for target in ${targets[@]} ; do
scp -r $target $host:$target
done;
done;


Управляется скрипт простым конфигом:

$ cat ~/.config/profsyncrc
hosts_scp=(campus amignode) # куда обновляемся
basepath="$HOME" # исходный путь к файлам (будет полезно, если решите обновлять кроном)
targets=('.bashrc' '.bash_functions' '.screenrc' '.nanorc') # файлы для обновления


scp понимает и директории, так что можно синхронизировать хоть .config :)
Однажды настроенная, эта связка уже не раз мне пригодилась, и, надеюсь, пригодится и вам.
Хорошего дня!
Tags:
Hubs:
+65
Comments 45
Comments Comments 45

Articles