我使用以下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
以前的代码存在的问题是它没有改变密码 这意味着它为每个用户提供一个密码。 我需要以前的脚本为每个用户提供不同的密码 那么我之前的代码中缺少什么?
答案 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