Linux中自動成生隨機密碼--mkpasswd

君落塵發表於2015-03-12
在知道這個命令之前,一直是自己寫指令碼來生成隨機密碼,用於批次管理linux系統賬號。指令碼如下:

  1. #!/bin/bash

  2. declare -a chars
  3. declare -a nums
  4. chars=(a 1 A b B / c 2 C d D e 3 E f F g . G 4 h H i I g G 5 k K l L m M 6 n N o O p 7 + P q Q R s 8 S t T - u U v 9 V w W x X _ y 0 Y z Z / . + - _)
  5. nums=(0 1 2 3 4 5 6 7 8 9)
  6. echo -"X"
  7. for ((count=0;count<=13;count++))
  8. do
  9. RA=`expr $RANDOM % 5000`
  10. #RA1=`expr $RANDOM % 10000`

  11.         N_TIME=`expr $RANDOM % 10000`
  12.         G_NUM=$[${N_TIME}%71]
  13.         G_NUM2=$[${RA}%71]
  14.         if [ $[${count}%2] -eq 0 ]
  15.         then
  16.                 echo -n ${chars[$G_NUM]}
  17.         else
  18.                 echo -n ${chars[$G_NUM2]}
  19.         fi
  20. done
  21. echo "J"

執行後,可以得到一個16位的隨機密碼,但缺點很明顯,密碼規則需要在指令碼里指寫,很不方便。

後來,發現了這個命令:mkpasswd ,好用多了。這個命令本來是給使用者修改密碼的,但我們利用一下它,只要後面不加使用者這個引數,就可以用來生成密碼了,而且密碼強度可以隨意調整。用法如下:

  1. 引數:
  2. -l # (密碼的長度定義, 預設是 9)
  3. -d # (數字個數, 預設是 16)
  4. -c # (小寫字元個數, 預設是 3)
  5. -C # (大寫字元個數, 預設是 2)
  6. -s # (特殊字元個數, 預設是 1)
  7. -v (詳細。。。)
  8. -p prog (程式設定密碼, 預設是 passwd)

例子:

  1. [root@fbl_haiou ~]# mkpasswd -l 10 -d 5 -c 5 -C 0 -s 0
  2. 5t91mk66vu
  3. 生成10位隨機密碼,只有數字和小寫字母。要注意上面的用法,需要把-C和-s設定為0。

  1. [root@fbl_haiou ~]# mkpasswd -l 10 -d 0 -C 7 -c 0 -s 3
  2. B/LILUKQ?+
  3. 生成10位隨機密碼,只包含大寫字母和特殊字元。

有興趣的童鞋可以自己試一下。

對了,說明一下,這個命令如果沒有的話,可以透過安裝expect來得到。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29819001/viewspace-1457539/,如需轉載,請註明出處,否則將追究法律責任。

相關文章