2017年5月12日 星期五

自動、手動搜尋過期帳號,刪除帳號

*每台主機環境都有些許差異,使用前請確認本身的環境參數,以免作業上的錯誤!

這個 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



沒有留言:

張貼留言

ManageEngine EventLog Analyzer版本更新步驟

更新檔下載位址: Upgrade to Latest Version of EventLog Analyzer Build (manageengine.com) 先將下載的更新檔上傳到主機裡,再進行下列動作。 切換到 ManageEngine EventLog Analyzer ...