您好,登錄后才能下訂單哦!
這篇文章主要介紹了Linux Shell中如何實現一個獲取任意位數的隨機密碼,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Shell 命令行,實現一個獲取任意位數的隨機密碼的腳本
每次我們想要獲得一個密碼的時候都很頭疼,于是我之前自己用nodejs寫了一個 Shell 腳本。這兩天在學習 bash Shell 所以,想用同樣的邏輯實現一個獲取任意位數隨機密碼的腳本。
我成功了 :)
分析問題
我們假設我們需要的密碼是大小寫字母以及數字的組合,并且剔除掉 1,l,0,O,o 這些不便于認知的字符。
然后隨機的讀取其中的字符,組合成一個我們需要的密碼,最后輸出。
理順了邏輯之后,我想到有下面的知識點是我之前不是很熟悉的。不過沒關系,善用搜索引擎,這些問題都能解決
任意位數,所以需要接受傳參
如果沒有傳參,則要給一個默認值
需要實現隨機數效果
字符串追加,這個倒是蠻簡單的
獲取字符串中指定位數的字符
數字向上取整
實現代碼
最終代碼如下:
#!/bin/bash # 如果得到參數 則將得到的參數作為密碼的位數,否則指定密碼位數為8 if [ -n "$1" ]; then length=$1; else length=8; fi # 設定可以作為密碼的字符串 chars='abcdefghijkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789' # 獲取上面的字符串的長度,其實可以直接數一下,這不是練一下 shell 嘛 charsLength=`echo $chars | wc -m | sed 's/^[ \t]*//g'` # 初始的為空 pw='' # 根據所需密碼長度進行循環 for ((i=0;i<$length;i++));do # 取得一個隨機數 # $RANDOM 是獲取一個小于 32767 的隨機數 # 所以除以 32767 就可以得到一個 0 - 1 之間的隨機小數 r=`echo $RANDOM/32767 | bc -l` # 根據隨機數*字符長度取得一個數字 num=`echo $r*$charsLength | bc` # 將取得數字向上取整,并在字符串中截取對應位置的字符 w=`echo $chars | cut -c$((${num//.*/+1}))` # 字符追加到 pw 這個變量 pw=$pw$w done # 輸出我們想要的密碼 echo $pw
運行一下,果然得到了我們想要的結果。
將這個命令作為一個系統命令,可以隨時執行
我們在 ~目錄下面新建一個 .bin 的文件夾
將 ~/.bin 設置為環境變量
然后將此腳本放到改文件夾下面,并命名為 getpass
chmod +x getpass 添加可執行權限
然后我們就可以隨時輸出這個命令,來得到我們想要的密碼了。
將 ~/.bin 設置為環境變量
cd ~ mkdir .bin vim .bash_profile
在 .bash_profile 文件中添加
export PATH="$PATH:~/.bin"
Linux是一種免費使用和自由傳播的類UNIX操作系統,是一個基于POSIX的多用戶、多任務、支持多線程和多CPU的操作系統,使用Linux能運行主要的Unix工具軟件、應用程序和網絡協議。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Linux Shell中如何實現一個獲取任意位數的隨機密碼”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。