第24章 编写简单的脚本实用工具
2017-01-02 14:31
453 查看
24.1 归档
1 按日归档
![](https://img-blog.csdn.net/20170102130254181?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDgxOTQxNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2 按小时归档
24.2 管理用户账户
24.2.1 需要的功能
删除账号时,需要4个步骤:
(1)获得正确的待删除用户账号名
(2)杀死正在系统上运行的属于该账户的进程
(3)确认系统上属于该账户的所有文件
(4)删除该用户账户
![](https://img-blog.csdn.net/20170102210437606?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDgxOTQxNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
24.3 监测磁盘空间
找出指定目录中磁盘空间使用量位居前十名的用户
1 按日归档
#/bin/bash DATE=$(date +%y%m%d) FILE=archive$DATE.tar.gz CONFIG_FILE=/root/archive/Files_To_Backup DESTINATION=/root/archive/$FILE if [ -f $CONFIG_FILE ] then echo "$CONFIG_FILE is exist." else echo "$CONFIG_FILE does not exist." exit fi FILE_NO=1 exec < $CONFIG_FILE read FILE_NAME while [ $? -eq 0 ] do if [ -f $FILE_NAME -o -d $FILE_NAME ] then FILE_LIST="$FILE_LIST $FILE_NAME" else echo echo "$FILE_NAME,does not exist." echo "Obviously,I will not include it in this archive." echo "It is listed on line $FILE_NO of the config file." echo "Counting to build archive list..." echo fi FILE_NO=$[$FILE_NO + 1] read FILE_NAME done echo $FILE_LIST echo "Starting archive..." echo tar -czf $DESTINATION $FILE_LIST 2> /dev/null echo "Archive completed" echo "Resulting archive file is: $DESTINATION" echo exit
2 按小时归档
#/bin/bash CONFIG_FILE=/root/archive/hourly/Files_To_Backup BASEDEST=/root/archive/hourly DAY=$(date +%d) MONTH=$(date +%m) TIME=$(date +%k%M) mkdir -p $BASEDEST/$MONTH/$DAY DESTINATION=$BASEDEST/$MONTH/$DAY/archive$TIME.tar.gz if [ -f $CONFIG_FILE ] then echo "$CONFIG_FILE is exist." else echo "$CONFIG_FILE does not exist." exit fi FILE_NO=1 exec < $CONFIG_FILE read FILE_NAME while [ $? -eq 0 ] do if [ -f $FILE_NAME -o -d $FILE_NAME ] then FILE_LIST="$FILE_LIST $FILE_NAME" else echo echo "$FILE_NAME,does not exist." echo "Obviously,I will not include it in this archive." echo "It is listed on line $FILE_NO of the config file." echo "Counting to build archive list..." echo fi FILE_NO=$[$FILE_NO + 1] read FILE_NAME done echo $FILE_LIST echo "Starting archive..." echo tar -czf $DESTINATION $FILE_LIST 2> /dev/null echo "Archive completed" echo "Resulting archive file is: $DESTINATION" echo exit
24.2 管理用户账户
24.2.1 需要的功能
删除账号时,需要4个步骤:
(1)获得正确的待删除用户账号名
(2)杀死正在系统上运行的属于该账户的进程
(3)确认系统上属于该账户的所有文件
(4)删除该用户账户
#!/bin/bash function get_answer { unset ANSWER ASK_COUNT=0 while [ -z "$ANSWER" ] do ASK_COUNT=$[ $ASK_COUNT + 1 ] case $ASK_COUNT in 2) echo "please answer the question." ;; 3) echo "One lase try...please answer the question." ;; 4) echo "Since you refuse to answer the question..." echo "exiting program." exit esac echo if [ -n "$LINE2" ] then echo $LINE1 echo -e $LINE2" \c" else echo -e $LINE1" \c" fi read -t 60 ANSWER done unset LINE1 unset LINE2 } function process_answer { case $ANSWER in y|Y|YES|yes|Yes|yEs|YEs|yES) ;; *) echo echo $EXIT_LINE1 echo $EXIT_LINE2 echo exit ;; esac unset EXIT_LINE1 unset EXIT_LINE2 } ############ Main Script############# echo "Step #1 - Determine User Account name to Delete" echo LINE1="please enter the username of the user" LINE2="account you wish to delete from system:" get_answer USER_ACCOUNT=$ANSWER echo "$USER_ACCOUNT" LINE1="Is $USER_ACCOUNT the user account " LINE2="you wish to delete from the system?[y/n]" get_answer EXIT_LINE1="Because the account,$USER_ACCOUNT,is not " EXIT_LINE2="the one you wish to delete,we are leaving the script..." process_answer USER_ACCOUNT_RECORD=$(cat /etc/passwd | grep -w $USER_ACCOUNT) if [ $? -eq 1 ] then echo echo "Account,$USER_ACCOUNT, not found." echo "Leaving the script..." echo exit fi echo echo "I found this record:" echo $USER_ACCOUNT_RECORD LINE1="Is this the correct User Account?[y/n]" get_answer EXIT_LINE1="Because the account,$USER_ACCOUNT,is not " EXIT_LINE2="the one you wish to delete,we are leaving the script..." process_answer echo echo "Step #2 - Find process on system belonging to user account" echo ps -u $USER_ACCOUNT >/dev/null case $? in 1) echo "There are no processed for this account currently running." echo ;; 0) echo "$USER_ACCOUNT has the following processes running:" echo ps -u $USER_ACCOUNT LINE1="Would you like me to kill the process(es)?[y/n]" get_answer case $ANSWER in y|Y|YES|yes|Yes|yEs|yeS|YEs|yES) echo echo "Killing off process(es)..." COMMAND_1="ps -u $USER_ACCOUNT --no-heading" COMMAND_3="xargs -d \\n /usr/bin/sudo /bin/kill -9" $COMMAND_1 | gawk '{print $1}' | $COMMAND_3 echo echo "Process(es) killed." ;; *) echo echo "will not kill the process(es)" echo ;; esac ;; esac echo echo "Step #3 - Find files on system belonging to user account" echo echo "Creating a report of all files owned by $USER_ACCOUNT." echo echo "It is recommended that you backup/archive these files," echo "and then do one of two things:" echo " 1) Delete the files" echo " 2) Change the files' ownership to a current user account." echo echo "Please wait.This may take a while..." REPORT_DATE=$(date +%y%m%d) REPORT_FILE=$USER_ACCOUNT"_Files_"$REPORT_DATE".rpt" find / -user $USER_ACCOUNT > $REPORT_FILE 2>/dev/null echo echo "Name of report: $REPORT_FILE" echo "Location of report: $(pwd)" echo echo echo "Step #4 - Remove user account" echo LINE1="Remove $USER_ACCOUNT's account from system?[y/n]" get_answer EXIT_LINE1="Since you do not wish to remove the user account," EXIT_LINE2="$USER_ACCOUNT at this time,exiting the script..." process_answer userdel $USER_ACCOUNT echo echo "User account, $USER_ACCOUNT,has been removed" echo exit
24.3 监测磁盘空间
找出指定目录中磁盘空间使用量位居前十名的用户
#!/bin/bash CHECK_DIRECTORIES="/var/log /home" DATE=$(date '+%m%d%y') exec > disk_space_$DATE.rpt echo "Top Ten Disk Space Usage" echo "for $CHECK_DIRECTORIES Directories" for DIR_CHECK in $CHECK_DIRECTORIES do echo "" echo "The $DIR_CHECK Directory:" du -S $DIR_CHECK 2>/dev/null | sort -rn | sed '{11,$D; =}' | sed 'N; s/\n/ /' | gawk '{printf $1 ":" "\t" $2 "\t" $3 "\n"}' done exit
相关文章推荐
- 行为识别研究摘录
- 求教关于ActionBar 样式问题
- CentOS6/7安装MySQL5.7
- httpd添加虚拟主机
- Spring MVC学习笔记——完整的用户登录
- 图书管理系统E—R图和数据库模型图
- c# 衍生类和基类的构造顺序
- 关于MPAndroidChart的基本问题
- python多进程编程
- 第四单元作业
- android.hardware.Camera 5.1之后操作照相机是不是不能用啦,我用小米手机(基本android 6.0)
- PHP如何取XML中数据
- Java Web Servlet中浏览器跳转的两种方式
- 酒店管理系统的E—R图和数据库模型
- MATLAB读文件的问题
- 浏览器使用经验
- thinkphp中表有前缀名的时候申明模板的方法
- Java技术——你真的了解String类的intern()方法吗
- Oracle 获取数据问题!
- 优化数据库设计