這個 script 是用在一個 ftp 站上,供學生交作業用 在繳交目錄是以deadline 的日期為日期 如 8 月6 日 目錄就是 Aug06 這個script 會被 crond 在指定的時間執行。關掉目錄,停止上傳 #!/bin/bash # Composer Tick 2004/3/10 #cd 所有科目放的目錄 cd /home/ftp/course/2004Spring folders=`ls` for fold in $folders; do if [[ -d $fold ]];then offset=0 cd $fold if [[ -e "offset" ]]; then offset=`cat offset` fi M=`env LC_ALL="en" date +%m` D=`env LC_ALL="en" date | awk '{print $3}'` let D=$D+offset if (( $D < 0 )); then let M=$M-1 case $M in 0) M=12; let D=31+$D;; 2) let D=28+$D if (( (`date +%Y`%4)==0 ));then let D=1+$D fi ;; 4) let D=30+$D;; 6) let D=30+$D;; 9) let D=30+$D;; 11) let D=30+$D;; #*) let D=31+$D;; esac fi Mon=`env LC_ALL="en" date -d "$M/$D" | awk '{print $2}'` Day=`env LC_ALL="en" date -d "$M/$D" | awk '{print $3}'` if (( $Day < 10 )) ; then Day=0$Day ;fi echo checking $Mon$Day in $fold if [[ -e "$Mon$Day" ]]; then chmod 755 $Mon$Day echo chmod 755 $Mon$Day fi cd .. fi done ================================================================================================ #!/bin/bash #Composer Tick 2004/3/10 #Modified by hearn ###ENV SETTING export LC_TIME=C; cd /var/ftp/2006_fall folders="advance_os ds linux_kernel programming" #pcolor "ANSI color" "String" pcolor (){ ANSI_COLOR=$1; shift printf "\033[${ANSI_COLOR}m${*}\033[m\n" } close_folder (){ echo -e "chmod 551 $1\c" (chmod 551 $1 && chmod 444 $1/* && \ echo "--->OK!")||echo error in close_folder #mkdir $1/due_dir && chmod 777 $1/due_dir } reopen_folder (){ echo -e "chmod 777 $1\c" (chmod 777 $1 && echo "--->OK!")||echo error in reopen } pcolor "1;34" `date` for fold in $folders; do if [[ -d $fold ]];then cd $fold M=`date +%m` D=`date +%d` #delete offset seeting #get current date MonDay=`date -d $M/$D +%b%d` pcolor "32" "checking $MonDay in $fold" #due_map structure #MonDay|dir1 dir2 ... if [[ -e .due_map ]]; then #cp .due_map .due_map.backup DIRS=`awk 'BEGIN{FS="|"} $1!~MonDay{print > ".due_map";next;} {print >>".due_map.history"; print "" >".due_map";;print $2;}' MonDay=$MonDay .due_map` pcolor "33" "#1(.due_map)" for ddd in $DIRS;do if [[ -e $ddd ]]; then close_folder $ddd else echo No such file $ddd ! fi done #cat ".due_map" fi if [[ -e "$MonDay" && -z $DIRS ]] ; then pcolor "33" "#2" close_folder $MonDay; #reopen_folder $MonDay; fi cd .. fi echo done