如何在Linux Shell中生成随机密码

有几种方法可以为Linux中所需的任何字符生成随机密码。

  1. PWGen

PWGen是一种Linux命令行实用程序,可一次性生成任意数量的任何所需字符的安全且难忘的密码。 要生成10位数字的8个密码,您可以执行以下操作

$ pwgen 10 8

输出例子

ouQ1e2hooB jee1o2jiPe iiF63g5ree phoo3O40ah k5e2reo8Is aiZ6iZ3kel ieb7ov6Dai si48ie5eiT

为了使其更加强大,可以使用“ -s”标志,该标志生成一个随机且难以记住的密码。

$ pwgen 10 8

输出例子

4RP3k9g1KG W2cWav15mF eH3hS8KD49 bH10Zg4VtB k5Zu2m1Wea Hx5Dv5d6Gh Nfn7r7FxYH x6YfClj8W6

另外

您可以使用命令行实用程序随机生成用户名 gpw… 要生成3个随机的6个字母的用户名,您可以

$ gpw 3 6</pair>
<p>Пример вывода</p>
<pre>
ttuons
ionwes
ferall

2. OpenSSL

OpenSSL被称为加密瑞士军。 您可以使用OpenSSL生成随机密码,如下所示

$ openssl rand -base64 10 | cut -c -10

输出例子

nday7dwFIQ

3. $ RANDOM

$ RANDOM是BASH中的内置变量。 您可以像这样生成随机密码

$ echo $RANDOM$RANDOM$RANDOM | tr '[0-9]' '[a-zA-Z]' | cut -c -10

输出例子

gabsbbwhbc

万一您只想创建一个数字密码

$ echo $RANDOM$RANDOM$RANDOM |cut -c3-12

输出例子

1227344409

4.bash.generate.random.alphanumeric.string.sh

下面的脚本写为“ earthgecko”。 您可以从获得最新版本 这里

#!/bin/bash
# bash generate random alphanumeric string
#
 
# bash generate random 32 character alphanumeric string (upper and lowercase) and
NEW_UUID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
 
# bash generate random 32 character alphanumeric string (lowercase only)
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
 
# Random numbers in a range, more randomly distributed than $RANDOM which is not
# very random in terms of distribution of numbers.
 
# bash generate random number between 0 and 9
cat /dev/urandom | tr -dc '0-9' | fold -w 256 | head -n 1 | head --bytes 1
 
# bash generate random number between 0 and 99
NUMBER=$(cat /dev/urandom | tr -dc '0-9' | fold -w 256 | head -n 1 | sed -e 's/^0*//' | head --bytes 2)
if [ "$NUMBER" == "" ]; then
  NUMBER=0
fi
 
# bash generate random number between 0 and 999
NUMBER=$(cat /dev/urandom | tr -dc '0-9' | fold -w 256 | head -n 1 | sed -e 's/^0*//' | head --bytes 3)
if [ "$NUMBER" == "" ]; then
  NUMBER=0
fi

输出例子

fEFWqyvlAbOSpp7qKjCmMfqziRuHdho6O

该脚本会随机产生32个字符。 要从此脚本生成随机的10位数字密码,您可以做两件事。

    • 更改脚本并将32替换为10。所以脚本现在看起来像这样
#!/bin/bash
# bash generate random alphanumeric string
#
 
# bash generate random 10 character alphanumeric string (upper and lowercase) and
NEW_UUID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1)
 
# bash generate random 10 character alphanumeric string (lowercase only)
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1
 
# Random numbers in a range, more randomly distributed than $RANDOM which is not
# very random in terms of distribution of numbers.
 
# bash generate random number between 0 and 9
cat /dev/urandom | tr -dc '0-9' | fold -w 256 | head -n 1 | head --bytes 1
 
# bash generate random number between 0 and 99
NUMBER=$(cat /dev/urandom | tr -dc '0-9' | fold -w 256 | head -n 1 | sed -e 's/^0*//' | head --bytes 2)
if [ "$NUMBER" == "" ]; then
  NUMBER=0
fi
 
# bash generate random number between 0 and 999
NUMBER=$(cat /dev/urandom | tr -dc '0-9' | fold -w 256 | head -n 1 | sed -e 's/^0*//' | head --bytes 3)
if [ "$NUMBER" == "" ]; then
  NUMBER=0
fi

输出例子

9HZhpqWcyJ

    • 如果您不更改脚本,则可以使用Linux的“ cut”命令剪切掉32个字符,以获取10个字符,如下所示
$ ./bash.generate.random.alphanumeric.string.sh  | cut -c -10

输出例子

OC9dFqwwbU

Sidebar