[shell]線上環境puppet證書異常 從新進行認證腳本

    工做中常遇到puppet服務端/客戶端證書認證異常,須要從新生成證書。常見操做會刪除服務端/客戶端證上相關的老證書,而後生成新證書。針對這種狀況,編寫了一個shell腳本,只需將此腳本在Client端定時運行便可。因爲腳本中涉及到了明文密碼,爲了提升安全性,能夠考慮對此腳本進行加密(可參考: http://lxsym.blog.51cto.com/1364623/768286 )
#!/bin/bash
# 對客戶端異常從新頒佈puppet證書
# 2012/05/30 Richard Shen
SIP="192.168.11.6"    #server端ip
SPASSWD="hello"     #server端root密碼,
host=`hostname`        
s_dns=".dns.abc.com.pem"  #內部DNS解析Host-IP對應,根據實際狀況而定
s_ca_name="$host$s_dns"     #$host在server端的證書文件
R_NUM=`/usr/sbin/puppetd --test --server pup-ser-01.dns.abc.com | grep "notice: Finished" | wc -l`
[ ! -f /usr/bin/nc ] && yum -y install nc 
[ ! -f /usr/bin/expect ] && yum -y install expect
#LOGIN PUPPET SERVER
auto_smart_ssh () {
   expect -c "set timeout -1;
       spawn ssh -o StrictHostKeyChecking=no $2 ${@:3};
                expect {
                        *assword:* {send -- $1\r;
                        expect {
                            *denied* {exit 2;}
                            eof
                               }
                        }
                 eof     {exit 1;}
                 }
                "
#   return $?
}
#判斷正常與否,進行2次
i=0
while [[ $i -lt 2 ]]
do
   if [ $R_NUM -ne 1 ];then
      rm -rf /var/lib/puppet/ssl/*
      auto_smart_ssh $SPASSWD root@$SIP rm -rf /var/lib/puppet/ssl/ca/signed/$s_ca_name
      /usr/sbin/puppetd --test --server pup-ser-01.dns.abc.com
    else
      echo "$host puppet client is ok"
  
  fi  
let i=i+1
done
分享快樂,若你們有什麼好的想法,能夠交流一下~歡迎轉載 - -shell

相關文章
相關標籤/搜索