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