■ 河北 王春海
編者按:有時在學校中,會面臨一個問題,怎樣讓每個學生快速的將自己打包文件名(以學生學號、姓名為文件名)上傳到服務器中,又不讓學生看到他人上傳的文件呢?筆者在經過多次實驗之后,用Windows Server中的“共享文件夾”完美的解決了這個問題。
學院都經常組織學生進行編程比賽,每次都有幾百人參加。比賽時候每人一臺計算機,根據要求編寫程序。比賽結束后要求學生將代碼、編譯運行后的程序打包上傳到服務器。
這就涉及到一個問題:參賽學生有幾百人,怎樣讓每個學生快速的將自己打包文件名(以學生學號、姓名為文件名)上傳到服務器中,又不讓學生看到他人上傳的文件呢?
每到學期期末,有些老師都會“隨堂考試”,也是要求學生將考試內容打包上傳到服務器,因為隨堂考試要求比較松,一般都會準備一臺FTP的服務器,要求每個學生使用“匿名FTP用戶”將打包內容上傳到FTP服務器,這樣每個學生都能看到他人上傳的文件并且也能下載。但因為在隨堂考試中只是在最后幾分鐘才打開FTP服務器,學生最后上傳,所以不存在分帳戶、分目錄的內容。
但在比賽中,學生提交結果的時間差距較大。另外從比賽的嚴密性來說也需要將每個考生上傳的目錄分開。最初的時候筆者是想用FTP服務器來實現,為每個參賽選手都配置一個FTP帳戶,但測試了一些FTP服務器之后,發現批量創建用戶并且讓每個用戶指定自己的文件夾實現起來比較困難。
在經過多次實驗之后,筆者用Windows Server中的“共享文件夾”完美的解決了這個問題。現在分享出來供有類似需求的讀者朋友參考。
創建多用戶涉及到用戶的密碼,這時候就需要生成隨機密碼。可以使用Excel函數RANDBETWEEN生成隨機數用做密碼。
1.將參賽學生姓名、學號整理成文檔,在第三列使用RANDBETWEEN(100000,999999)生成6位數字,示例文件如圖1所示。然后打印出來,每行裁成條,比賽時發給學生。

圖1 生成的隨機數

圖2 用戶名密碼

圖3 禁用復雜密碼策略
說明:生成隨機數之后為了避免下次打開excel后隨機數變化,應將生成的“隨機數”一列復制到“記事本”中,并從“記事本”中再粘貼回excel文件中。
2.將第2列、第3列復制并粘貼到“記事本”文件保存成一個文本文件,文件名隨意,例如可以用c1.txt,如圖2所示。該文件第一列是學生帳戶,用來創建用戶名,第二列用來設置密碼。
(3)將第2列復制并粘貼到“記事本”文件保存成另一個文本文件,例如c11.txt,這是用來指定用戶權限、刪除用戶用的。
準備一臺Windows Server的服務器,例如Windows Server 2008 R2,要求具有足夠的空間保存學生上傳的文件。
1.Windows Server2008R2默認使用“復雜密碼”,但比賽中為用戶設置的是數字的簡單密碼,需要修改密碼策略。執行gpedit.msc進 入“本地組策略編輯器”,定位到“計算機配置→Windows設置→安全設置→帳戶策略→密碼策略”,修改“密碼必須符合復雜性要求”為“已禁用”,如圖3所示。
2.批寫如下的批處理,內容如下:
REM 創建帳戶,密碼隨機,將JN2017C創建為共享文件夾,允許Everyone完全控制
REM考生批處理,在服務器D盤創建JN2017C文件夾,每個考生一個文件夾
MD D:JN2017C

圖4 創建文件夾、創建用戶、配置文件夾權限

圖5 創建的文件夾
REM將JN2017C創建為共享文件夾
net share JN2017C=D:JN2017C /grant:everyone,full
REM 設置共享文件夾權限,允許Everyone和Administrator完全控制
echoy|caclsD:JN2017C/geveryone:fadministrator:f
REM 從C1.txt讀取內容創建用戶(文件第1列)并指定密碼(第2列)
for/f"delims=,"%%ain(c1.txt)donetuser%%a/add/passwordreq:no/passwordchg:no/expires:never
REM 從C11.txt讀取內容并在JN2017C創建同名的目錄
for/f"delims=,"%%bin(c11.txt)doMDD:JN2017C\%%b
REM 為每個用戶目錄設置權限,允許Administrator和同名用戶完全控制
for/f"delims=,"%%cin(c11.txt)doechoy|caclsD:JN2017C\%%c/g%%c:fadministrator:f
pause
將這個文件保存為“創建用戶.cmd”,在服務器中執行,運行界面如圖4所示。
3.創建完成后打開D盤看到創建的文件夾,如圖5所示。
4.打開“服務器管理器”在“配置→本地用戶和組→用戶”中看到創建的用戶,如圖6所示。
為學生上傳文件寫一個說明文檔,示例內容如下。
1.文件打包:在本次比賽中,同學們需要將做好的“工程文件夾”打包上傳到機房的服務器中。本次比賽一共5道試題,每個試題一個工程文件夾,每一個文件夾用winrar壓縮打包后,依次重命名為“學號A.rar”、 “學號 B.rar”、 “學號 C.rar”、 “學號 D. rar”、“學號E.rar”。
2.映射驅動器
文件上傳服務器的IP地址地址是172.18.96.8,共享文件夾名稱為JN2017C。上傳命令格式為:
net use x: \服務器IP地址共享名學員/user:學號 密碼
從“開始”菜單選擇“所有程序→附件→命令提示符”,進入命令提示符,執行如下命令:

圖6 創建的用戶

圖7 拷貝文件到指定目錄
例 如,學 號 是201412345678,密 碼 是234567,則需要輸入:
netusex:\172.18.96.8JN2017C201622450411/user:201622450411 234567
注意需要使用英文輸入,不要使用中文方式輸入。
3.拷貝文件到指定文件夾
打開“資源管理器,將第1步的文件拷貝到X盤即可,如圖7所示。
服務器的地址172.18.96.8,學生將比賽文件拷貝到此服務器,在比賽結束后,老師可以在服務器前查看D盤JN2017C文件夾即可看到每個學生以學號為文件夾的目錄(如圖5所示)。教師也可以在網絡上任意一臺計算機中,通過使用Administrator帳戶映射共享文件夾查看共享目錄(其 中password是Administrator帳戶的密碼)。
netusex:\172.18.96.8jn2017c/user:administratorpassword
然后打開資源管理器,從X盤拷貝數據即可。
比賽完成后,如果要刪除用戶,可以編寫如下的批處理并執行:
REM 刪除用戶批處理
for/f"delims=,"%%ain(c11.txt)donetuser%%a/delete
pause
執行該命令后將刪除用戶。