應用背景:
公司一臺阿里雲服務器,上面既搭建測試環境,也有正式環境,現需要將測試環境測試好的程序無差異同步到正式環境中
此處本來可以用cp搞定的,老闆說怕哪一天我不在公司其他人不會,所以讓寫個腳本,還有就是出於責任問題,同步的時候要產生同步日誌。
#!/bin/sh
. /etc/init.d/functions
update=`date`
STTY_RESTORE=$(stty -g)
while true
do
echo -n "username:"
read username
echo -n "password:"
stty -echo cbreak
while true
do
character=$(dd if=/dev/tty bs=1 count=1 2>/dev/null)
case $character in
$(echo -e "\n"))
break
;;
$(echo -e "\b"))
if [ -n "password" ];then
echo -n -e "\b \b"
password=$(echo "$password"|sed 's/:$//g')
fi
;;
*)
password=$password$character
echo -n '*'
;;
esac
done
stty $STTY_RESTORE
if [ "$username" == "woniu" ] && [ "$password" == "woniu" ]
then
/bin/rm -rf /web/html/app.ori
/bin/cp -af /web/html/app /web/html/app.ori
/usr/bin/rsync -az --delete --password-file=/etc/rsyncmima.password /web/svn/php/php/ [email protected]::woniu
echo "$username update the directory at $update" >> /var/log/updatewww.log
echo -e "\n請稍等"
echo -e "copying..............."
sleep 3
/usr/bin/diff /web/svn/php/php /web/html/app >/dev/null 2>&1
if [ `echo $?` == 0 ];then
action "copy directory" /bin/true
else
action "copy directory" /bin/false
fi
exit 0
else
echo -e "\n用戶名或密碼錯誤,請重新輸入!"
fi
done