이전 서버에서 새 서버로 사용자 해시를 검색하고 교체합니다.

이전 서버에서 새 서버로 사용자 해시를 검색하고 교체합니다.

이전 서버에서 했던 것처럼 새 서버에도 동일한 비밀번호를 설정해야 하는 경우가 많습니다. 섀도우에서 수동으로 해시를 붙여넣을 수도 있지만 이 작업을 자동으로 수행하는 방법을 배우고 싶습니다.

old machine A
new machine B

새 컴퓨터 B에는 A의 사용자가 있지만 A에는 존재하지 않는 다른 사용자도 있습니다(따라서 그림자는 정렬되지 않으며 물론 건너뛸 수 있습니다).

sed/awk를 통해 다음을 수행할 수 있는 방법이 있습니까?

머신 A에서 해시를 가져오고 새 머신 B에 비밀번호가 설정되지 않은 기존 사용자를 교체합니다. (xxx:!:xxxx)

답변1

awk 'BEGIN{ OFS=FS=":" }
{
  if (NR==FNR) {
    pwd[$1]=$2
  } else {
    if ($2 ~ /^!/ && $1 in pwd) $2=pwd[$1]
    print
  }
}' shadowA shadowB

shadowA첫 번째 파일( )을 처리할 때 사용자 이름으로 색인이 지정된 NR==FNR배열에 비밀번호 해시를 저장합니다 .pwd

shadowB두 번째 파일( else)이 처리되고 두 번째 필드가 a ( 또는 !일 수 있음 )로 시작하고 사용자 이름이 비밀번호 배열( )에 나타나면 두 번째 필드의 값을 업데이트합니다. 그런 다음 현재 줄을 인쇄합니다 .!!!$1 in pwdshadowB

관련 정보