2014-09-01 32 views
0

嗨,我为我的plesk安装写了一个bash脚本。在bash中为mysql密码生成两个随机符号

它触发创建新的订阅时,并执行以下操作:

  • 生成使用两个随机符号
  • 在给定格式的密码通过CLI
  • 下载创建DB中的Plesk和解压WordPress的到subscirption
  • 的httpdocs资料目录配置的WP-config.php文件的网站
  • 邮件我的配置细节

尽管有一个问题,我有时会生成两个似乎无效密码字符串的符号。我认为这是因为一些符号需要在bash中转义,并且不会发生。有没有一种方法可以从“允许”符号数组中随机获取两个符号?

这里是我的genPassword()函数

genpasswd() { 
local pass=`cat /dev/urandom | tr -cd "[:punct:]" | head -c 2` 
echo "$pass" 
echo "INFO: genpasswd() ran successfully" >> /usr/run.log 
} 
+0

可能的重复[在Bash Shell脚本中生成随机数](http://stackoverflow.com/questions/8988824/generating-rand om-number-in-bash-shell-script) – Coconop 2014-09-01 12:07:24

+0

可能的重复:http://stackoverflow.com/questions/8988824/generating-random-number-in-bash-shell-script – Coconop 2014-09-01 12:07:33

回答

1

使用bash阵列和 “魔术” 变量RANDOM可能会有所帮助:

bash$ symbols=(":" "+" ";" ".") 
bash$ echo ${symbols[ RANDOM % ${#symbols[@]} ]} 
; 

bash$ echo ${symbols[ RANDOM % ${#symbols[@]} ]} 
+ 

如果你需要生成一对(例如):

bash$ s1=${symbols[ RANDOM % ${#symbols[@]} ]} 
bash$ s2=${symbols[ RANDOM % ${#symbols[@]} ]} 
bash$ echo "${s1}${s2}" 
;: 
+0

完美 - 这正是我需要的 – Mud 2014-09-03 11:02:34