這個 script 是自己不專業的亂搞,用來管理 FTP 帳號所寫的。
主要的用途是有些 FTP 臨時使用的帳號,用完後就須刪除。怕自己忘記所以寫了一個 script 排程讓在設定的時間到了就刪掉 FTP 帳號。
它主要是依據使用者 Home 目錄的修改時間,來判斷是否過期。
#!/bin/bash
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
# User_List.txt 可由建立帳號時填入清單
User_Home="home"
User_List="/root/User_List.txt"
tmpFile="/tmp/DelUser.txt"
echo -e " 帳號名稱 \t\t未登入天數" > $tmpFile
QUERY_FTP()
{
for i in `awk '{print $1}' $User_List`
do
#User folder modify day.
MD=`expr substr "$(stat -c '%y' /$User_Home/$i)" 1 19`
Modify_Day=`date -d "$MD" +%s`
#Not use ftp account day.
Days=$((($Current_Day - $Modify_Day)/86400))
if [ $Days -gt $Delete_Day ]; then
if [ `expr length "$i"` -lt 6 ]; then
echo -e " $i\t\t\t$Days 天" >> $tmpFile
else
echo -e " $i\t\t$Days 天" >> $tmpFile
fi
fi
done
cat $tmpFile | more
echo -e "\n"
echo -e " 查詢的資料清單可查看 $tmpFile 。\n"
}
DEL_FTP()
{
echo -e " 刪除的資料清單可查看 $tmpFile 。"
for i in `awk '{print $1}' $User_List`
do
#User folder modify day.
MD=`expr substr "$(stat -c '%y' /$User_Home/$i)" 1 19`
Modify_Day=`date -d "$MD" +%s`
#Not use ftp account day.
Days=$((($Current_Day - $Modify_Day)/86400))
if [ $Days -gt $Delete_Day ]; then
if [ `expr length "$i"` -lt 6 ]; then
echo -e " $i\t\t\t$Days 天" >> $tmpFile
su -c "sed -i 's/$i//g' $User_List > /dev/null 2>&1"
su -c "sed -i '/^$/d' $User_List > /dev/null 2>&1"
su -c "userdel -r $i > /dev/null 2>&1"
else
echo -e " $i\t\t$Days 天" >> $tmpFile
su -c "sed -i 's/$i//g' $User_List > /dev/null 2>&1"
su -c "sed -i '/^$/d' $User_List > /dev/null 2>&1"
su -c "userdel -r $i > /dev/null 2>&1"
fi
fi
done
echo -e " 完成 ftp 帳號刪除!!!\n"
}
#System current day.
Current_Day=`date +%s`
#Query OR Delete ftp account.
#QD="D"
read -p " 請選擇 查詢 或 刪除超過搜尋天數的 FTP 帳號(Q:查詢 D:刪除): " QD
#Auto Remove not use ftp account of the time.
#Delete_Day="10"
read -p " 請輸入搜尋未登入的天數: " Delete_Day
clear
echo -e " 搜尋中,請稍等。"
echo -e " 搜尋條件為超過 $Delete_Day 天未登入使用 FTP 帳號!!!\n"
if [ "$QD" == "Q" -o "$QD" == "q" ]; then
QUERY_FTP
elif [ "$QD" == "D" -o "$QD" == "d" ]; then
DEL_FTP
else
echo -e "\n 輸入的選項錯誤,結束程式。\n"
exit 1
fi
沒有留言:
張貼留言