execute mkpasswd inside awk

杀马特。学长 韩版系。学妹 提交于 2020-05-24 05:17:42

问题


I am trying to use mkpasswd inside awk to compare a file field with encryption (I use Ubuntu):

Execute:

mkpasswd -m sha-512 word abcdefgh

Output:

$6$abcdefgh$SByAdlFKQWuVuMNFUL.ERj1CxsscDs.v6nR2h2cyIkM.PAEUEqaMudTk3I/yfyFeaJY/da4dJto/1wXxMCaok/

Trying:

awk 'mkpasswd -m sha-512 $7 abcdefgh =="$6$abcdefgh$SByAdlFKQWuVuMNFUL.ERj1CxsscDs.v6nR2h2cyIkM.PAEUEqaMudTk3I/yfyFeaJY/da4dJto/1wXxMCaok/"' FS=: file > file1

File:

6:g:g:g:g:g:word1
7:g:g:g:g:g:word
8:g:g:g:g:g:word2

Expected output:

7:g:g:g:g:g:word

回答1:


awk -F':' '
{
    cmd = "mkpasswd -m sha-512 \047" $7 "\047 abcdefgh"
    sha = ( (cmd | getline line) > 0 ) ? line : "N/A" )
    close(cmd)
}
sha == "$6$abcdefgh$SByAdlFKQWuVuMNFUL.ERj1CxsscDs.v6nR2h2cyIkM.PAEUEqaMudTk3I/yfyFeaJY/da4dJto/1wXxMCaok/"
' file > file1

See http://awk.freeshell.org/AllAboutGetline for if/how to use getline, including reading from a pipe as in this case.



来源:https://stackoverflow.com/questions/61436882/execute-mkpasswd-inside-awk

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!