利用pwgen、mkpasswd、tr自动更改密码

2011年11月11日 发表评论 阅读评论

pwgen和mkpasswd都有自己动生成密码文件的功能。而且mkpasswd可以自动更改密码到指定用户。

两者的区别如下:

1、pwgen的用法

Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]
Options supported by pwgen:
  -c or --capitalize
        Include at least one capital letter in the password
  -A or --no-capitalize
        Don't include capital letters in the password
  -n or --numerals
        Include at least one number in the password
  -0 or --no-numerals
        Don't include numbers in the password
  -y or --symbols
        Include at least one special symbol in the password
  -s or --secure
        Generate completely random passwords
  -B or --ambiguous
        Don't include ambiguous characters in the password
  -h or --help
        Print a help message
  -H or --sha1=path/to/file[#seed]
        Use sha1 hash of given file as a (not so) random generator
  -C
        Print the generated passwords in columns
  -1
        Don't print the generated passwords in columns
  -v or --no-vowels
        Do not use any vowels so as to avoid accidental nasty words

2、mkpasswd的用法

mkpasswd的用法可以使用man mkpasswd查看,这里就不列了,用法大致如下:

#长度为20的密码 mkpasswd -l 20
#长度为15的密码,并且含有5个数字
mkpasswd -l 15 -d 5
#长度为15的密码,并且含有5个数字,并指定更改的用户为test
mkpasswd -l 15 -d 5 test
#最后搞个暴力的,定义长度10,含有5个数字和5个特殊字符。
mkpasswd -l 10 -d 5 -s 5

1、利用pwgen自动更改密码,并发送到相关邮件中。

#!/bin/bash
cd /root/test
if [ -f "passfile" ];then
mv passfile passfile.$(date +%Y%m%d)
fi
passfile=/root/test/passfile
>$passfile                        #如果不存在新建该文件
list="abc test vie"
for user in $list
 do
   if  ! grep -w ^$user /etc/passwd > /dev/null
   then
    echo "user NOT present: $user"
  else
   echo "user present: $user"
  pass=$(/usr/local/bin/pwgen -1 -sy 16)    #随机生成一个密码文件,且至少包含一个特别字符
  echo "$user:$pass">>$passfile
 fi
done
cat $passfile | /usr/sbin/chpasswd
echo "jiqiming   or  IP address " >> $passfile
mail -s mima xxxxxxxxxxx@139.com < /root/test/passwd

若使用mkpasswd,则将上面的脚本中的pwgen换成mkpasswd,后面的参数也相应的改下。脚本很简单,不多介绍。

一般mkpasswd是系统默认安装的,pwgen需要另外安装,地址如下:

http://ncu.dl.sourceforge.net/project/pwgen/pwgen/2.06/pwgen-2.06.tar.gz

2、另外不利用上面两个工具,我们也可以直接通过脚本实现,如下:

定期自动更改密码并发送邮件的小脚本

#!/bin/bash
tr -dc _A-Z-a-z#$%^*-0-9 </dev/urandom |head -c20 >/home/1.txt
cat /home/1.txt |passwd root --stdin
SendStatus=`mail -v -s "test mail" xxxxx@139.com < /home/1.txt  | grep -c "Sender ok" `
rm -rf /home/1.txt
if [ "$SendStatus" == "1" ] ; then
echo "Sender mail ok"
else
echo "Sender mail fail!"
sleep 50
sh /home/ceshi.sh
fi

上面无非是提供了三种工具实现密码文件的生成,并利用其来更改密码。具体修改的思路是大同小异的——都是利用shell脚本来批量完成。




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

分类: Linux/unix/mac 标签: , ,
  1. 本文目前尚无任何评论.