为列表中的每个usr生成不同的密码

时间:2016-10-06 13:46:32

标签: bash passwords

我使用以下bash脚本更改列表中用户的密码:

pass=`cat /dev/urandom | tr -dc 'a-zA-Z0-9-_!@#$%^&*()_+{}|:<>?=' | fold -w 12 | grep -i '[!@#$%^&*()_+{}|:<>?=]' | head -n 1`
for usr in `cat usrs.lst`
do
printf "Username is $usr and password is $pass\n"
done

以前的代码存在的问题是它没有改变密码 这意味着它为每个用户提供一个密码。 我需要以前的脚本为每个用户提供不同的密码 那么我之前的代码中缺少什么?

1 个答案:

答案 0 :(得分:1)

你应该在循环中分配传递变量,如下所示;

#!/bin/bash
while IFS= read -r usr; do
  pass=$(tr -dc 'a-zA-Z0-9-!@#$%^&*()+{}|:<>?=' < /dev/urandom | fold -w 12 | grep -i '[!@#$%^&*()_+{}|:<>?=]' | head -n 1)
  printf 'Username is %s and password is %s\n' "$usr" "$pass"
done < usrs.lst