/etc/security/passwd에서 사용자 이름과 비밀번호 해시 가져오기

/etc/security/passwd에서 사용자 이름과 비밀번호 해시 가져오기

새 서버에 동기화해야 하는 비밀번호의 사용자 이름 목록이 있습니다.

/etc/security/passwd 파일에서 사용자 이름과 비밀번호 해시를 다음 형식으로 추출하려면 어떻게 해야 합니까?

username:MGURSj.F056Dj

passwd 파일은 섹션 형식입니다.

username:
  password = MGURSj.F056Dj
  lastupdate = 623078865

답변1

다음 명령을 사용하여 파일을 구문 분석할 수 있습니다 awk.

awk '
  /^[[:alnum:]]*:/ {
        user=substr($0, 1, index($0, ":") - 1)
        }
  /^ *password *=/ {
        split($0, elements, " *= *");
        print user ":" elements[2]
        }' \
  /etc/security/passwd

스크립트의 기본 아이디어는 먼저 사용자 이름 줄(영숫자 문자로 시작하고 그 뒤에 콜론이 옴)을 찾은 다음 "substr" 함수를 사용하여 해당 사용자 이름을 추출하는 것입니다. 0개 이상의 공백으로 시작하고 그 뒤에 문자열 " password", 0개 이상의 공백 및 등호가 오는 행에서는 행을 등호로 분할하고 현재 행의 저장된 사용자 이름과 비밀번호 부분을 인쇄합니다.

관련 정보