yppushいやん

NISのマップファイルの転送をyppushに任せるとなんか毎度うまくいかん。

(cd /varyp; make)
all ===> roydom
updated passwd
yppush: Master's version not newer
yppush: Can't get master address
yppush: Master's version not newer
yppush: Can't get master address
yppush: Master's version not newer
yppush: Can't get master address
yppush: Master's version not newer
yppush: Can't get master address
pushed passwd

上の何度も出ているエラーメッセージ、 Master's version not newer のほうは、自分自身に送ろうとして バージョン番号(時刻)が同じだから中止しているだけなので無視。もいっこのほう。 Can't get master address てなにこれ。またソース開いて確認か……と、 こんな作業を何年かに1度、もう3、4回目。 2/2とか2009/4/20とか。あと何回か。 その都度解決はしてるのだが そもそも rsync でできるファイル転送を、より insecure なyppush/ypxfrで やらせようとするばかりにはまるのはもう後免。

いいじゃんssh+rsyncで。

slaveにはrsyncで送ったれ。Makefileにこんなの追加で書いちゃった。

yp:
	SSH_AUTH_SOCK= rsync -e 'ssh -xa -i update.dsa' \
	  -auxH --delete /var/yp/nisdomain slave:/var/yp

もちろん専用の鍵ファイル update.dsa は予め作っておく。 そしてそのpubキーを、slave側の /root/.ssh/authorized_keys に登録しておく。

no-pty,no-X11-forwarding,from="IPADD.RESS.OF.MASER",command="/usr/local/bin/rsync --server -a --delete . /var/yp" ssh-dss aljfaslkjfalskfjas...

対話的に一回はssh起動しておいて ~/.ssh/known_hosts に足しておくのを忘れずに。

で、rsyncでなんか問題ある? ypservはdbファイルのinode変わっても いいように作ってあるよね(?)、きっと。