0

嗨,我有一个为我的 plesk 安装编写的 bash 脚本。

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

  • 使用两个随机符号生成给定格式的密码
  • 通过 cli 在 plesk 中创建数据库
  • 将 wordpress 下载并解压缩到该订阅的 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
}
4

1 回答 1

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}"
;:
于 2014-09-01T14:30:17.690 回答