새 서버에 동기화해야 하는 비밀번호의 사용자 이름 목록이 있습니다.
/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개 이상의 공백 및 등호가 오는 행에서는 행을 등호로 분할하고 현재 행의 저장된 사용자 이름과 비밀번호 부분을 인쇄합니다.