dd if=/dev/urandom of=a.log bs=1M count=2
質問:このコード^から乱数が得られた場合、「hgcqw」などの単語(理解できない)をランダムに取得するにはどうすればよいですか。
質問2:shufコマンドをddコマンドと組み合わせて使用できますか?
ありがとう!
6/21アップデート。 (父の日)
@ Serg私の目標は、最初に数字を取得することでした。たとえば、01から100までの2桁のランダムな数字です。コマンドを入力してコードを実行します。最終的には、14、17、21、35になります(取得する乱数を作成しています)。次に、これらの数値の平均を求めました。この場合、平均は21.75(22)になります。目標は、探している特定の平均が見つかるまでループを停止することです。この場合、25になります。2番目の目標は、ランダムな単語を取得し、使用された単語の数を取得することでした。
@テルドン
言葉は「バック」、「アヒル」、または「古き良き運」です。基本的に辞書にあるものすべて。制限を5文字に制限する場合、長さはまだありません。どのように学習してもかまいませんか?
言葉は何ですか?私はあなたがa-zとA-Zだけを意味すると思いますが、長さは何ですか? liwyduglashvdbalishfvgapivflakhfは単語でしょうか? ksjdas-asd-asd-asdはどうですか? -言葉にすることができます。編集して明確にしてください。 –昨日のテルドン
ランダムなアルファベット文字を生成します。
tr -cd '[:alpha:]' < /dev/urandom | fold -w1 | head -n1
長さ10文字のランダムなアルファベット文字列を生成します。
tr -cd '[:alpha:]' < /dev/urandom | fold -w10 | head -n1
[:alpha:]
のalpha
の代わりに使用する代替POSIX文字クラスの一部は次のとおりです。 alnum-英数字
alpha-アルファベット文字
digit-桁
graph-目に見えるキャラクター
lower-小文字
upper-大文字
特定の範囲で乱数を生成します(例1-10)。
shuf -i 1-10 -n1
最初の2つのbashの例と比較すると、shuf
コマンドを使用すると、ランダムな文字列を生成するためのオプションが少なくなりますが、shuf
を使用してランダムな順列を生成できます。
dd if=/dev/urandom of=a.log bs=1M count=2
これはあなたに乱数を与えません。これにより、ランダムにbytesが得られます。あなたはそれを数字にエンコードすることができます:
hexdump -v -e '"%d\n"' /dev/urandom | dd of=a.log bs=1M count=2
(以前のバージョンはod
を使用していましたが、od
の出力形式はかなり柔軟性がありません。)
/dev/random
を直接使用すると、バイトストリームであるため、かなり無駄になります。これをbase64
にエンコードしてから、アルファベット以外の文字を取り除くと、平均して入力データの80%が得られます。
base64 /dev/urandom | tr -cd '[[:alpha:][:space:]]'
これはかなり長い行を残す傾向があります。代わりに、数字を改行で置き換えることができます。
base64 /dev/urandom | sed 's/[^[:alpha:]]\+/\n/g'
2MBのランダムなアルファベット小文字(スペースを含む)を生成するには:
< /dev/urandom tr -dc 'a-z ' | head -c 2000000 > a.log
一定のストリームの場合:
< /dev/urandom tr -dc 'a-z '
2MBのランダムなアルファベットの大文字と小文字が混在した文字列(スペースを含む)を生成するには:
< /dev/urandom tr -dc 'A-Za-z ' | head -c 2000000 > a.log
一定のストリームの場合:
< /dev/urandom tr -dc 'A-Za-z '
他のバージョン(-c${1:-10}
= 10の長さ):
< /dev/urandom tr -dc A-Za-z | head -c${1:-10} > out
または(head -n 10
= 10の長さ)
strings /dev/urandom | grep -o '[[:alpha:]]' | head -n 10 | tr -d '\n' > out
またはdd
(count=10
=長さ10)
dd if=/dev/urandom bs=1 count=10 2>/dev/null | base64 | grep -o '[[:alpha:]]' | head -n 30 | tr -d '\n' > out
またはこれ
openssl Rand -base64 32| grep -o '[[:alpha:]]' | head -n 10 | tr -d '\n' > out
またはこれ
date +%s | sha256sum | base64 | grep -o '[[:alpha:]]'| head -n 10 | tr -d '\n' > out
これが私のアイデアです。 mkpasswd
は、暗号化されたパスワードを生成するためによく使用されます。したがって、そこにある文字列は既にわかりやすいものではないはずです。小さな問題は、数字で文字列を生成することです。 sedを使用することで、それらを取り除くことができます。
mkpasswd | sed 's/[0-9]/YOLO/g'
YOLOは、数字に置き換えるものであれば何でもかまいません。単に削除することもできます:
mkpasswd | sed 's/[0-9]//g'
別の方法を次に示します。
$ date | md5pass | sed 's/[0-9]//g'
$$NG.dLw$vcpGCylnDtmptDtogDr/
Muruがコメントbellowで示唆したように、Sudo apt-get install pwgen
でpwgen
をインストールし、pwgen -0
を実行することもできます。 -0フラグは、数字を避けるようにコマンドに指示します
そして、これがsha1pass + sedコンボです:
sha1pass | sed 's/[[:digit:]]//g' | sed 's/[[:punct:]]//g'
結果:PoXGAlAWjzMHgmfzHiYHGpemzqE
$ RANDOM変数を使用した別のメソッド:echo $RANDOM | tr '0-9' 'a-z'
全体として、目標がパスワード生成である場合、この記事を読むことをお勧めします。
http://www.howtogeek.com/howto/30184/10-ways-to-generate-a-random-password-from-the-command-line/
python
を使用:
#!/usr/bin/env python2
import random, string
def Rand_gen(number_of_words, length):
for i in range(number_of_words):
print ''.join(random.choice(string.ascii_lowercase + string.ascii_uppercase) for _ in range(length))
return
入力として2つのパラメーターを受け取る関数Rand_gen(number_of_words, length)
を定義しました。number_of_words
には生成するランダムワードの数が含まれ、length
には各ランダムワードの長さが含まれます
string.ascii_lowercase
とstring.ascii_uppercase
には、それぞれすべてのASCII小文字と大文字があります
random.choice
は毎回[A-Za-z]
から1文字を選択し、length
はこの反復がlength
の数まで継続することを保証します。 join()
は、文字を結合して、希望する長さの単語にします
このプロセスはnumber_of_words
まで継続されます
例:
Rand_gen(5, 3)
PDI
qKQ
Dvu
kwr
wDz
Rand_gen(2, 5)
GLKXr
uOaHj