在awk内部执行mkpasswd [英] execute mkpasswd inside awk

查看:59
本文介绍了在awk内部执行mkpasswd的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用awk中的mkpasswd来比较具有加密的文件字段(我使用Ubuntu):

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

执行:

mkpasswd -m sha-512 word abcdefgh

输出:

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

尝试:

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

文件:

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

预期输出:

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

推荐答案

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

请参见 http://awk.freeshell.org/AllAboutGetline 了解是否/如何使用getline,包括在这种情况下从管道读取.

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

这篇关于在awk内部执行mkpasswd的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆