要求:創建10個普通用戶,并給它們設置隨機密碼,將密碼記錄到一個文檔里,用戶名為user_01 — user_10,密碼要求包含大小寫字母以及數字,密碼長度15位。
題目要求,讓我們創建user_01到user_10共10個用戶,所以需要使用循環構建01 - 10的序列,方法是 "seq -w 1 10"這個命令執行后,會打印 ”01 02 ... 09 10" 10個數字出來,這個"-w"選項的意思是等寬,即按序列中最大寬度的數字來,本例中10就是2位,所以1個數字時會在前面補上一個0。
seq 構建序列后,需要循環,使用for即可所以最終寫成這樣
foriin`seq-w110` do useradduser_$i done
這個seq 用的還是蠻多的,所以請記住以下用法:
1)seq 支持步長, 默認步長為1,步長可以定義成2,比如
seq 1 2 10 1 3 5 7 9
2)也可以倒序
seq 10 -2 1 10 8 6 4 2
創建用戶沒啥可說的,直接 useraddusername 即可,關鍵是這個隨機密碼這里,這個并沒有標準答案,只要構建出符合要求的字符串就行,我建議的方法是使用mkpasswd命令
默認系統沒有,所以你使用它之前需要先判斷一下
if ! which mkpasswd &>/dev/null then yum install -y expect fi
這里有個前提,yum是centos/RHEL/Rocky系統用的,那如果是Debian/ubuntu呢,那就得使用apt安裝了,所以,要想腳本完美,還需要判斷系統版本。當然我們寫腳本的時候就已經知道系統是啥系統了,這里就根據系統版本確定命令就行了。
mkpasswd命令 可以生成隨機字符串,默認生成 9位的 ,例如
要想使用mkpasswd生成一個15位的密碼還需要加個參數 -l(length) ,長度的意思
mkpasswd -l 15
另外 mkpasswd也可以指定生成指定字符的個數,比如 -s 2,s(special),表示特殊符號有2個。啥是特殊符號呢?比如 "* ( ) [ ] & ^ @ # ! : ? /"等。mkpasswd -s 0 意思是特殊符號為0。另外還有幾個選項:
-d指定數字
-C指定大寫字母
-c 指定小寫字母
生成密碼后,需要給它賦值到變量里,比如 p=`mkpasswd -l 15 -s 0`。然后就是給用戶設置密碼了,設置密碼使用passwd命令,正常設置密碼 這樣做 :
但這樣寫到腳本里 就會有問題啦,因為需要交互,腳本里肯定不合適。所以還有另外一種方法 :
這樣一條命令就可以啦,寫到腳本里,完美!
再往后就是將密碼保存到一個文件里,題目里我雖然沒有要求大家把用戶名也保存,但是大家想想,如果咱們的用戶名不規則,那你能知道哪個密碼是哪個用戶么。所以最好是將用戶名 密碼寫到一起。
大家都知道使用 >>追加重定向,但是否忘記了,如果這個文本里就有內容呢?所以,最好是先將文本做一個清空的操作:
if [ -f /tmp/user_pass.txt ] then rm -f /tmp/user_pass.txt echo "user_$i $p" >> /tmp/user_pass.txt fi
當然這段代碼要放到循環的外面去,也就是要放到腳本一開始的時候。如果在循環里面,那么腳本執行完,這個文本里就只會記錄一行,大概就是這么多內容最后再給大家發一下最終的腳本:
#!/bin/bash if [ -f /tmp/user_pass.txt ] then rm -f /tmp/user_pass.txt fi if ! which mkpasswd then yum install -y expect fi for i in `seq -w 1 10` do p=`mkpasswd -l 15 ` useradd user_$i && echo "$p"| passwd --stdin user_$i echo "user_$i $p" >> /tmp/user_pass.txt done
審核編輯:湯梓紅
-
字符串
+關注
關注
1文章
589瀏覽量
20934 -
命令
+關注
關注
5文章
719瀏覽量
22623 -
腳本
+關注
關注
1文章
395瀏覽量
28287
原文標題:批量創建10個用戶用腳本如何實現
文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
windows補丁批量安裝腳本
阿里云ECS開放批量創建實例接口,實現彈性資源的創建
如何創建一個鏈接腳本
如何創建和執行一個簡單的Linux shell腳本
用10行 BASIC 語言創建很棒的游戲

評論