| 網路管理語言 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 嵌在網頁裡 |