要求:創(chuàng)建10個(gè)普通用戶,并給它們?cè)O(shè)置隨機(jī)密碼,將密碼記錄到一個(gè)文檔里,用戶名為user_01 — user_10,密碼要求包含大小寫字母以及數(shù)字,密碼長(zhǎng)度15位。
題目要求,讓我們創(chuàng)建user_01到user_10共10個(gè)用戶,所以需要使用循環(huán)構(gòu)建01 - 10的序列,方法是 "seq -w 1 10"這個(gè)命令執(zhí)行后,會(huì)打印 ”01 02 ... 09 10" 10個(gè)數(shù)字出來,這個(gè)"-w"選項(xiàng)的意思是等寬,即按序列中最大寬度的數(shù)字來,本例中10就是2位,所以1個(gè)數(shù)字時(shí)會(huì)在前面補(bǔ)上一個(gè)0。
seq 構(gòu)建序列后,需要循環(huán),使用for即可所以最終寫成這樣
foriin`seq-w110` do useradduser_$i done
這個(gè)seq 用的還是蠻多的,所以請(qǐng)記住以下用法:
1)seq 支持步長(zhǎng), 默認(rèn)步長(zhǎng)為1,步長(zhǎng)可以定義成2,比如
seq 1 2 10 1 3 5 7 9
2)也可以倒序
seq 10 -2 1 10 8 6 4 2
創(chuàng)建用戶沒啥可說的,直接 useraddusername 即可,關(guān)鍵是這個(gè)隨機(jī)密碼這里,這個(gè)并沒有標(biāo)準(zhǔn)答案,只要構(gòu)建出符合要求的字符串就行,我建議的方法是使用mkpasswd命令
默認(rèn)系統(tǒng)沒有,所以你使用它之前需要先判斷一下
if ! which mkpasswd &>/dev/null then yum install -y expect fi
這里有個(gè)前提,yum是centos/RHEL/Rocky系統(tǒng)用的,那如果是Debian/ubuntu呢,那就得使用apt安裝了,所以,要想腳本完美,還需要判斷系統(tǒng)版本。當(dāng)然我們寫腳本的時(shí)候就已經(jīng)知道系統(tǒng)是啥系統(tǒng)了,這里就根據(jù)系統(tǒng)版本確定命令就行了。
mkpasswd命令 可以生成隨機(jī)字符串,默認(rèn)生成 9位的 ,例如
要想使用mkpasswd生成一個(gè)15位的密碼還需要加個(gè)參數(shù) -l(length) ,長(zhǎng)度的意思
mkpasswd -l 15
另外 mkpasswd也可以指定生成指定字符的個(gè)數(shù),比如 -s 2,s(special),表示特殊符號(hào)有2個(gè)。啥是特殊符號(hào)呢?比如 "* ( ) [ ] & ^ @ # ! : ? /"等。mkpasswd -s 0 意思是特殊符號(hào)為0。另外還有幾個(gè)選項(xiàng):
-d指定數(shù)字
-C指定大寫字母
-c 指定小寫字母
生成密碼后,需要給它賦值到變量里,比如 p=`mkpasswd -l 15 -s 0`。然后就是給用戶設(shè)置密碼了,設(shè)置密碼使用passwd命令,正常設(shè)置密碼 這樣做 :
但這樣寫到腳本里 就會(huì)有問題啦,因?yàn)樾枰换ィ_本里肯定不合適。所以還有另外一種方法 :
這樣一條命令就可以啦,寫到腳本里,完美!
再往后就是將密碼保存到一個(gè)文件里,題目里我雖然沒有要求大家把用戶名也保存,但是大家想想,如果咱們的用戶名不規(guī)則,那你能知道哪個(gè)密碼是哪個(gè)用戶么。所以最好是將用戶名 密碼寫到一起。
大家都知道使用 >>追加重定向,但是否忘記了,如果這個(gè)文本里就有內(nèi)容呢?所以,最好是先將文本做一個(gè)清空的操作:
if [ -f /tmp/user_pass.txt ] then rm -f /tmp/user_pass.txt echo "user_$i $p" >> /tmp/user_pass.txt fi
當(dāng)然這段代碼要放到循環(huán)的外面去,也就是要放到腳本一開始的時(shí)候。如果在循環(huán)里面,那么腳本執(zhí)行完,這個(gè)文本里就只會(huì)記錄一行,大概就是這么多內(nèi)容最后再給大家發(fā)一下最終的腳本:
#!/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
審核編輯:湯梓紅
-
字符串
+關(guān)注
關(guān)注
1文章
589瀏覽量
21077 -
命令
+關(guān)注
關(guān)注
5文章
725瀏覽量
22655 -
腳本
+關(guān)注
關(guān)注
1文章
396瀏覽量
28331
原文標(biāo)題:批量創(chuàng)建10個(gè)用戶用腳本如何實(shí)現(xiàn)
文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
基于Python腳本的R語言的函數(shù)

10個(gè)殺手級(jí)的Python自動(dòng)化腳本
windows補(bǔ)丁批量安裝腳本
阿里云ECS開放批量創(chuàng)建實(shí)例接口,實(shí)現(xiàn)彈性資源的創(chuàng)建
如何創(chuàng)建一個(gè)鏈接腳本
如何創(chuàng)建和執(zhí)行一個(gè)簡(jiǎn)單的Linux shell腳本
什么是腳本?腳本程序?qū)W習(xí)

MyBatis批量插入數(shù)據(jù)的3種方法你知道幾種

用10行 BASIC 語言創(chuàng)建很棒的游戲

怎么用腳本產(chǎn)生一個(gè)驗(yàn)證環(huán)境
如何創(chuàng)建一個(gè)簡(jiǎn)單的腳本
分享10個(gè)實(shí)用的Python自動(dòng)化腳本
分享249個(gè)拿來即用的shell腳本

Vyond推出首款基于提示的腳本和視頻創(chuàng)建器
shell實(shí)例三(編寫批量修改擴(kuò)展名腳本)

評(píng)論