使用 openssl 生成 MD5 哈希的脚本
Script to generate MD5 hash with openssl
我正在尝试使用 openssl
生成一些 MD5 哈希值以用于 chpasswd
例如。 CSV 文件:
Sample,User,SU,,sauser,password
Test,User,TU,,teuser,password
User, T Test,TEST,,username,password
我创建的脚本:
#!/bin/bash
file=$(readlink -f "") # open csv
while read line; do
salt=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 5 | head -n 1) #randomly generate 5 char salt
user=$(echo "$line" | cut -d, -f5 | xargs) # cut user from csv and trim with xargs
pass=$(echo "$line" | cut -d, -f6 | xargs) # cut pass from csv and trim with xargs
echo "$user:"$(openssl passwd -1 -salt "$salt" "$pass") >> ./global_chpasswd.data # gen MD5 hash per user and store in file
done < "$file" # close csv
但是,如果我使用此脚本生成的任何 MD5 并尝试将其与 chpasswd 一起使用,它就不起作用。
echo 'username:$K8m2T$gb3C0Sz4JlXyewe8VRhxv.' | chpasswd -e
此密码将失效
如果我尝试在没有脚本的情况下手动执行此操作,它会起作用:
echo "username:"$(openssl passwd -1 -salt salt password) | chpasswd -e
您的 CSV 文件可能包含回车符 returns,它作为密码字段的一部分(它是最后一个字段)包含在内。
在处理 CSV 之前,请务必 运行 dos2unix
或使用 tr -d '\r'
。
我正在尝试使用 openssl
生成一些 MD5 哈希值以用于 chpasswd
例如。 CSV 文件:
Sample,User,SU,,sauser,password
Test,User,TU,,teuser,password
User, T Test,TEST,,username,password
我创建的脚本:
#!/bin/bash
file=$(readlink -f "") # open csv
while read line; do
salt=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 5 | head -n 1) #randomly generate 5 char salt
user=$(echo "$line" | cut -d, -f5 | xargs) # cut user from csv and trim with xargs
pass=$(echo "$line" | cut -d, -f6 | xargs) # cut pass from csv and trim with xargs
echo "$user:"$(openssl passwd -1 -salt "$salt" "$pass") >> ./global_chpasswd.data # gen MD5 hash per user and store in file
done < "$file" # close csv
但是,如果我使用此脚本生成的任何 MD5 并尝试将其与 chpasswd 一起使用,它就不起作用。
echo 'username:$K8m2T$gb3C0Sz4JlXyewe8VRhxv.' | chpasswd -e
此密码将失效
如果我尝试在没有脚本的情况下手动执行此操作,它会起作用:
echo "username:"$(openssl passwd -1 -salt salt password) | chpasswd -e
您的 CSV 文件可能包含回车符 returns,它作为密码字段的一部分(它是最后一个字段)包含在内。
在处理 CSV 之前,请务必 运行 dos2unix
或使用 tr -d '\r'
。