shell經典面試題根據文件創建用戶名及密碼(親測)

轉載來源 :shell經典面試題根據文件創建用戶名及密碼 : https://www.jianshu.com/p/eeb455eef7ca

01 前言

shell腳本已經學習了很長一段時間了,現在時不時來看一些經典的面試題,複習一些常用知識點,溫故知新,爲明天做準備~

02 根據文件內容創建用戶名及密碼

背景:寫一個腳本,滿足一下需求及應用,如一個文件的內容如下,根據文件內容實現批量創建用戶,第一列爲用戶名,第二列爲密碼
在這裏插入圖片描述
在這裏插入圖片描述
測試文件test.list
這個題目相信大家都很熟悉了,面試甚至是實際工作應用當中都會經常用到

今天我們來看看實現思路。

第一步:按行讀取文件,推薦用while read line 的模式

先寫腳本框架
在這裏插入圖片描述
while read line 按行讀取文件
第二部:將用戶名和密碼分別取出來,並賦值給變量
這裏用awk實現
在這裏插入圖片描述
取出用戶名、密碼列並賦值
第三步:創建用戶用useradd,同步創建密碼可以用非交互式實現,即
在這裏插入圖片描述
創建用戶名及密碼
第四步:考慮幾種特殊情況

萬一要創建的用戶本來就存在呢?所以應加個判斷,用戶存在不做操作,用戶不存在再執行
在這裏插入圖片描述
考慮用戶已存在的情況
還有,創建用戶操作只有root賬戶有權限,所以一開始就應該判斷當前用戶是不是root

判斷用戶是不是root
腳本就寫好啦,執行一下看看效果:

測試效果
可以看到,用戶和密碼都已成功創建,但是id判斷用戶時有不想看到的輸出,再改一下,完整的腳本如下:

#!/bin/bash
while read i
do
  user=`echo $i | awk '{print $1}'`
  pass=`echo $i | awk '{print $2}'`

  id $user || useradd $user
  echo $pass | passwd $user --stdin

done < test.list

在這裏插入圖片描述
完整腳本
再次執行,就不會有用戶不存在這條無須存在的輸出了

03 總結

這是一個工作和麪試都非常經典的案例,知識點總結如下:

3.1 判斷用戶是否爲root,echo $UID ,root賬戶爲0,其餘非0

3.2 按行讀取文件,while read line 模式

3.2 判斷用戶是否存在,id user

3.4 非交互式創建用戶名及密碼 echo ****** | passwd user --stdin

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章