将用户哈希从旧服务器搜索并替换到新服务器

将用户哈希从旧服务器搜索并替换到新服务器

我经常必须在新服务器上设置与旧服务器上相同的密码,我可以从阴影中手动简单地粘贴哈希,但我想学习自动执行此操作。

old machine A
new machine B

在新机器 B 上存在来自 A 的用户,但也存在 A 上不存在的其他用户(因此影子未排序,我们当然可以跳过它们)

有没有办法通过 sed/awk 来:

从机器 A 获取哈希,并替换新机器 B 上未设置 pwd 的现有用户。 (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

相关内容