用户管理脚本之删除用户——Delete_user.sh

 该脚本非原创,仅发出来做学习参考交流。

   一个删除用户的脚本,思路清晰,构思慎密,考虑方方面面,是学习shell脚本方面的好例子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
   1   #!/bin/bash
   2
   3   function  get_answer {
   4   unset  ANSWER
   5  ASK_COUNT=0
   6   while  [ -z  "$ANSWER"  ]
   7   do
   8      ASK_COUNT=$[ $ASK_COUNT + 1 ]
   9       case  $ASK_COUNT  in
  10      2)
  11         echo
  12         echo  "Please answer the question."
  13         echo
  14      ;;
  15      3)
  16         echo
  17         echo  "One last try ... please answer the question."
  18         echo
  19      ;;
  20      4)
  21         echo
  22         echo  "Since you refuse to answer the question..."
  23         echo  "exiting program."
  24         echo
  25         #
  26         exit
  27      ;;
  28       esac
  29
  30       echo
  31    
  32       if  [ -n  "$LINE2"  ]
  33       then
  34         echo  $LINE1
  35         echo  -e $LINE2 " \c"
  36       else
  37         echo  -e $LINE1 " \c"
  38       fi
  39
  40       read  -t 60 ANSWER
  41   done
  42   unset  LINE1
  43   unset  LINE2
  44  }
  45
  46   function  process_answer {
  47   case  $ANSWER  in
  48  y|Y| yes |Yes|yEs|yeS|YEs|YES)
  49  ;;
  50  *)
  51      echo
  52      echo  $EXIT_LINE1
  53      echo  #EXIT_LINE2
  54      echo
  55      exit
  56  ;;
  57   esac
  58   unset  EXIT_LINE1
  59   unset  EXIT_LINE2
  60  }
  61
  62
  63   echo  "Step #1 - Determine User Account name to Delete "
  64   echo
  65  LINE1= "Please enter the username of the user"
  66  LINE2= "account you wish to delete from system:"
  67  get_answer
  68  USER_ACCOUNT=$ANSWER
  69
  70  LINE1= "IS $USER_ACCOUNT the user account"
  71  LINE2= "you wish to delete from the system?[y|n]"
  72  get_answer
  73
  74  EXIT_LINE1= "Because the account,$USER_ACCOUNT,is not"
  75  EXIT_LINE2= "the one you wish to delete,we are leaving the script..."
  76  process_answer
  77
  78  USER_ACCOUNT_RECORD=$( cat  /etc/passwd  grep  -w $USER_ACCOUNT)
  79   if  [ $? - eq  1 ]
  80   then
  81      echo
  82      echo  "Account,$USER_ACCOUNT,not found."
  83      echo  "Leaving the script..."
  84      echo
  85      exit
  86   fi
  87
  88   echo
  89   echo  "I found this record:"
  90   echo  $USER_ACCOUNT_RECORD
  91   echo
  92
  93  LINE1= "Is this the correct User Account? [y|n]"
  94  get_answer
  95
  96  EXIT_LINE1= "Because the account,$USER_ACCOUNT,is not"
  97  EXIT_LINE2= "the one you wish to delete,we are leaving the script..."
  98  process_answer
  99
100   echo
101   echo  "Step #2 - Find process on system belonging to user Account"
102   echo
103   echo  "$USER_ACCOUNT has the following processes running:"
104   echo
105
106   ps  -u $USER_ACCOUNT
107
108   case  $?  in
109  1)
110      echo  "There are no processes for this account currently running."
111      echo
112  ;;
113  0)
114      unset  ANSWER
115     LINE1= "Would you like me to kill the process(es)?[y|n]"
116     get_answer
117
118      case  $ANSWER  in
119     y|Y| yes |Yes|yEs|yeS|YEs|YES)
120      echo
121      trap  "rm $USER_ACCOUNT_Running_Process.rpt"  SIGTERM SIGINT SIGQUIT
122      ps  -u $USER_ACCOUNT > $USER_ACCOUNT_Running_Process.rpt
123      exec  < $USER_ACCOUNT_Running_Process.rpt
124      read  USER_PROCESS_REC
125      read  USER_PROCESS_REC
126      while  [ $? - eq  0 ]
127         do
128        USER_PID=$( echo  $USER_PROCESS_REC |  cut  -d  " "  -f1)
129         kill  -9 $USER_PID
130         echo  "Killed process $USER_PID"
131         read  USER_PROCESS_REC
132         done
133
134         echo
135         rm  $USER_ACCOUNT_Running_Process.rpt
136     ;;
137     *)
138         echo
139         echo  "Will not kill the process(es)"
140         echo
141     ;;
142      esac
143  ;;
144   esac
145
146
147   echo
148   echo  "Step #3 - Find files on system belonging to user account"
149   echo
150   echo  "Creating a report of all files owned by $USER_ACCOUNT."
151   echo
152   echo  "It is recommended that you backup/archive these files."
153   echo  "and then do one of two things:"
154   echo  "   1) Delete the files"
155   echo  "   2) Change the files' ownership to a current user account."
156   echo
157   echo  "Please wait. This may take a while..."
158
159
160  REPORT_DATE=` date  +%y%m%d`
161  REPORT_FILE=$USER_ACCOUNT "_Files_" $REPORT_DATE.rpt
162
163   find  / -user $USER_ACCOUNT > $REPORT_FILE 2>  /dev/null
164
165   echo
166   echo  "Report is complete."
167   echo  "Name of report:      $REPORT_FILE"
168   echo  "Location of report:      `pwd`"
169   echo
170
171   echo
172   echo  "Step #4 - Remove user account"
173   echo
174
175  LINE1= "Do you wish to remove $User_Account's account from system?[y|n]"
176  get_answer
177
178
179  EXIT_LINE1= "Since you do not wish to remove the user account."
180  EXIT_LINE2= "$USER_ACCOUNT at this time.exiting the script..."
181  process_answer
182
183  userdel $USER_ACCOUNT
184   echo
185   echo  "User account,$USER_ACCOUNT,has been removed."
186   echo









本文转自 aaao 51CTO博客,原文链接:http://blog.51cto.com/nolinux/1379372,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值