国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

詳解Linux  Shell 實現一個獲取任意位數的隨機密碼的腳本

2020-07-27 18:52:44
字體:
來源:轉載
供稿:網友

Shell 命令行,實現一個獲取任意位數的隨機密碼的腳本

每次我們想要獲得一個密碼的時候都很頭疼,于是我之前自己用nodejs寫了一個 Shell 腳本。這兩天在學習 bash Shell 所以,想用同樣的邏輯實現一個獲取任意位數隨機密碼的腳本。

我成功了 :)

分析問題

我們假設我們需要的密碼是大小寫字母以及數字的組合,并且剔除掉 1,l,0,O,o 這些不便于認知的字符。

然后隨機的讀取其中的字符,組合成一個我們需要的密碼,最后輸出。

理順了邏輯之后,我想到有下面的知識點是我之前不是很熟悉的。不過沒關系,善用搜索引擎,這些問題都能解決

  1. 任意位數,所以需要接受傳參
  2. 如果沒有傳參,則要給一個默認值
  3. 需要實現隨機數效果
  4. 字符串追加,這個倒是蠻簡單的
  5. 獲取字符串中指定位數的字符
  6. 數字向上取整

實現代碼

最終代碼如下:

#!/bin/bash# 如果得到參數 則將得到的參數作為密碼的位數,否則指定密碼位數為8if [ -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$wdone# 輸出我們想要的密碼echo $pw

運行一下,果然得到了我們想要的結果。

將這個命令作為一個系統命令,可以隨時執行

  1. 我們在 ~目錄下面新建一個 .bin 的文件夾
  2. 將 ~/.bin 設置為環境變量
  3. 然后將此腳本放到改文件夾下面,并命名為 getpass
  4. chmod +x getpass 添加可執行權限

然后我們就可以隨時輸出這個命令,來得到我們想要的密碼了。

將 ~/.bin 設置為環境變量

cd ~mkdir .binvim .bash_profile

在 .bash_profile 文件中添加

export PATH="$PATH:~/.bin"

其他不說了,學習 shell 的話,一些基本的命令應該是沒有問題的。

以上腳本均在 mac 下測試通過,在 Linux 下可能會有稍許不同。

如有疑問請留言,或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 勐海县| 沙湾县| 合川市| 河西区| 湘潭市| 宁海县| 香河县| 贵州省| 囊谦县| 惠州市| 龙岩市| 南充市| 亚东县| 繁峙县| 通化县| 乐安县| 泾川县| 来宾市| 茌平县| 寿阳县| 克拉玛依市| 哈巴河县| 安阳市| 嘉善县| 恩平市| 沙河市| 上高县| 耒阳市| 道孚县| 扎囊县| 汉沽区| 三门县| 巴彦淖尔市| 巴青县| 平南县| 永泰县| 资溪县| 江西省| 西平县| 泽州县| 靖江市|