Groovy(Java)でランダムな半角英数字を作成

2019-03-01Groovy, Java

CakePHP勉強中。

初期セットアップ手順に設定ファイル内の Security.salt っていうランダム文字列の値(40文字)を書き直しなさいってあったので、なんかいいコマンドないか探してみた。
ググると、Linuxなら mkpasswd というコマンドで生成できるよ、とあった。

Cygwin環境で試したところ、うまく動かなかったため(パッケージをインストールしていないだけかも)Groovyで作ってみた。Apacheのcommons-langライブラリにちょうど良いメソッドがあったためそれを呼び出しただけ。

mkrandomtxt.groovy

#!/usr/bin/env groovy
@Grab("commons-lang:commons-lang:2.2")
import static org.apache.commons.lang.RandomStringUtils.*

def cli = new CliBuilder(usage: "${this.class.name} [-a] [-n] arg")
cli.a longOpt: "alpha", args: 0, "use alphabet chars.", required: false
cli.n longOpt: "num", args: 0, "use number chars.", required: false
def opt = cli.parse args
def params = opt.arguments()
if (params.size() != 1 || !params[0].isNumber() || (!opt.a && !opt.n)) {
    cli.usage()
    System.exit 1
}
if (opt.a && opt.n) {
    println randomAlphanumeric(params[0].toInteger())
} else if (opt.a) {
    println randomAlphabetic(params[0].toInteger())
} else if (opt.n) {
    println randomNumeric(params[0].toInteger())
}

使い方

$ ./mkrandomtxt.groovy
usage: test [-a] [-n] arg
-a,--alpha   use alphabet chars.
-n,--num     use number chars.

$ ./mkrandomtxt.groovy -a
usage: test [-a] [-n] arg
-a,--alpha   use alphabet chars.
-n,--num     use number chars.

$ ./mkrandomtxt.groovy -n
usage: test [-a] [-n] arg
-a,--alpha   use alphabet chars.
-n,--num     use number chars.

$ ./mkrandomtxt.groovy -a 40
YigbOgZPxHVbykasJjfBXooaRvrZfpriDFNtBhDv

$ ./mkrandomtxt.groovy -n 40
3426318853025788662162725592943221571994

$ ./mkrandomtxt.groovy -a -n 40
EEBZyK8BwAoyCriTJUJ8N2eHOUSAhHv41EDLtfmt

$ ./mkrandomtxt.groovy -an 40
lPckdxen3LBLrJddAZUBTRctIFChPBRmwYC0nxau

2019-03-01Groovy, Java