Linuxシステム間のプロファイル同期

ssh経由で常にアクセスしたマシンの数が3倍になったとき、 すぐに認証するには不十分であることに気付き、bashエイリアス、configsをエディターに、その他の環境要素をリモートシステムにドラッグする時がきました。 一方、端末の多数のタブで混乱しないようにする方法が必要でした。 その結果、ホストのscp、screen、colorの違いに気付きました:)
結果のスクリーンショット:
ホームシステム:

リモートマシンの1つ:

プロファイル同期のコマンド:
$ profsync
カットの下の詳細。


私が最初にしたことは、プロファイルを一般とローカルに分割し(スクリーンショットを参照)、一般的なプロファイルではソースはローカルでした:

$ 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


緑と画面になりました。 残っているのは、他のすべてのマシンにコピーして変更することだけです。 私は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を同期できます:)
一度調整すれば、この束が何度も重宝します。あなたにとっても重宝することを願っています。
良い一日を!

Source: https://habr.com/ru/post/J116329/


All Articles