很早写的,最近别人问过一次,贴出来吧。
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
|
#!/bin/bash
#
source
/etc/profile
&>
/dev/null
basedir=$(
cd
`
dirname
$0`;
pwd
)
nowmonth=`
date
+%m`
nowday=`
date
+%d`
email=
"$basedir/email/sendemail.sh"
function
GaiMiMa() {
user=
"$1"
passwd
=$(
/usr/bin/mkpasswd
-l 20 -d 5 -c 2 -C 4 -s 0)
#mkpasswd 可以yum装下
echo
$
passwd
|
passwd
--stdin $user
if
[ $? -
eq
0 ];
then
sh $email
"$user@*.com"
"跳板机密码更改提示"
"您的跳板机密码已经更改为: $passwd 请注意下次登录时替换此密码。【注意】不要复制空白字符;如有问题请及时找**。"
echo
"$user ::::: $passwd"
>> $basedir
/modify
.log
fi
}
grep
"/bin/bash"
/etc/passwd
|
grep
-
v
"root"
|
awk
-F:
'{print $1}'
> $basedir
/userlist
#user='yanzong.chen'
for
user
in
`
cat
$basedir
/userlist
`
do
month=$(chage -l $user |
grep
"Last password change"
|
awk
-F:
'{print $2}'
|
awk
'{print $1}'
)
day=$(chage -l $user |
grep
"Last password change"
|
awk
-F:
'{print $2}'
|
awk
'{print $2}'
|
tr
-d ,)
month=$(
grep
$month $basedir
/month
|
awk
-F
'='
'{print $2}'
)
if
[ $nowmonth -
ge
$month ];
then
D=$(
expr
$nowmonth \* 30 + $nowday - $day - `
expr
$month \* 30`)
if
[ $D -gt 85 ];
then
GaiMiMa $user
fi
else
X=$(
expr
$nowmonth \* 30 + $nowday - `
expr
$month \* 30` - $day + 360 )
if
[ $X -gt 85 ];
then
GaiMiMa $user
fi
fi
done
echo
`
date
+%F` >> $basedir
/modify
.log
|
配套month文件
1
2
3
4
5
6
7
8
9
10
11
12
|
Jan=01
Feb=02
Mar=03
Apr=04
May=05
Jun=06
Jul=07
Aug=08
Sep=09
Oct=10
Nov=11
Dec=12
|
本文转自 陈延宗 51CTO博客,原文链接:http://blog.51cto.com/407711169/1407814,如需转载请自行联系原作者