# Random String Generators

Problem this snippet solves:

These procs generate a random string of letters, numbers, or both. Code Source

############################################################

# Note: the RNG used by TCL rand() is not in any way cryptographically secure #

############################################################

How to use this snippet:

Code :

# iRule proc Source - Define the proc named html_encode in a separate iRule named library:

rule library {
proc randomNumberGenerator {length {chars "0123456789"}} {
set range [expr {[string length \$chars]-1}]
set txt ""
for {set i 0} {\$i < \$length} {incr i} {
set pos [expr {int(rand()*\$range)}]
append txt [string range \$chars \$pos \$pos]
}
return \$txt
}
proc randomLetterGenerator {length {chars "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"}} {
set range [expr {[string length \$chars]-1}]
set txt ""
for {set i 0} {\$i < \$length} {incr i} {
set pos [expr {int(rand()*\$range)}]
append txt [string range \$chars \$pos \$pos]
}
return \$txt
}
proc randomNumberLetterGenerator {length {chars "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"}} {
set range [expr {[string length \$chars]-1}]
set txt ""
for {set i 0} {\$i < \$length} {incr i} {
set pos [expr {int(rand()*\$range)}]
append txt [string range \$chars \$pos \$pos]
}
return \$txt
}
}

# Call the procedure from another iRule using the name of the iRule where the proc is defined as the namespace and then the name of the procedure (library::html_encode):

# iRule that calls the string generating proc:
when CLIENT_ACCEPTED {
set x [call library::randomNumberGenerator 10]
set y [call library::randomLetterGenerator 10]
set z [call library::randomNumberLetterGenerator 10]
log local0. "Random Strings: \$x / \$y / \$z"
}
# log output: Random Strings: 8648734163 / vmQSXmqgxB / Xx7mKZ7733
Published Mar 18, 2015
Version 1.0