網路管理語言 Perl 入門與實作: | ||
---|---|---|
<<< Previous | Next >>> |
本章示範如何在 Linux 主機上大量建帳號?
以下請存成 mc.pl,然後用 root 權限執行,即可大量建立帳號。
#! /usr/bin/perl # 使用嚴格的變數宣告檢查 # 一個變數要使用之前, 一定要宣告 use strict; # $file 是用來暫時存放動態產生的帳號密碼對照檔, # 其格式為: 帳號:密碼 my $file = "act-list.txt"; # $file2 是用來儲存動態產生的帳號/密碼表,讓您可以 # 將帳號列印下來, 並剪下帳號密碼紙條, 交給帳號當事人。 my $file2 = "report.txt"; my $num; print "\n請問您要產生多少個帳號? "; chomp($num=<STDIN>); my $prefix; print "\n請問帳號前導字為何? "; chomp($prefix=<STDIN>); open(W, "> $file") || die "無法開啟 $file , 請檢查您的權限!!\n"; open(W2, "> $file2") || die "無法開啟 $file , 請檢查您的權限!!\n"; my $i; for ($i=1; $i<=$num; $i++) { # 動態產生隨機密碼,至少四個數字以上 my $pwd = int(rand 5000) + 1111; # 寫入 $file 中 print W "$prefix$i:$pwd\n"; # 寫入 $file2 中 print W2 "-" x 45 , "\n"; print W2 "$prefix$i:$pwd\n"; } close(W); close(W2); # 讀取 act-list.txt # 準備用來大量建帳號及設密碼 open(F, "$file") || die "$!\n"; while (my $line = <F>) { chomp $line; # 取得每一列的資料, 並分離出帳號及密碼 my ($act, $pwd) = split /:/ , $line; # 偵錯用 # print "$act ===> $pwd \n"; # 用 adduser 指令建帳號 system("adduser $act"); print "$act 帳號已建立!\n"; } close(F); # 自動設密碼 # chpasswd 的用法,請詳看 man chpasswd 的說明,即可得知。 system("chpasswd < $file"); |
注意 1: 本程式僅為示範解說用途,雖仍堪用,但並沒有對使用者輸入的值,做詳細檢查,這部份請自行補齊。
注意 2: 本程式執行後所建立的密碼,其編碼方式為 DES (在 /etc/shadow 中,長度為 13 個字元) 。
<<< Previous | Home | Next >>> |
27.2 UNIX 轉成 DOS | 把 Perl 嵌在網頁裡 |