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を同期できます:)

一度調整すれば、この束が何度も重宝します。あなたにとっても重宝することを願っています。

良い一日を!



All Articles