выполнить mkpasswd внутри awk - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь использовать mkpasswd внутри awk, чтобы сравнить поле файла с шифрованием (я использую 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

1 Ответ

0 голосов
/ 26 апреля 2020
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, включая чтение из канала, как в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...