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

Разное > Консоль
Когда количество машин, на которые я постоянно заходил по 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 файлы на нужные. Мой .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 :)
Однажды настроенная, эта связка уже не раз мне пригодилась, и, надеюсь, пригодится и вам.

Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>