Puppet - 删除已登录的用户?

use*_*963 5 linux puppet

我刚刚开始学习 puppet,遇到了一个问题,我想知道是否有人知道如何解决。我正在尝试删除一个用户,但收到一条错误消息,指出他们已登录,因此无法删除。

现在在这种情况下,我知道他们登录的是哪个服务器,所以我可以简单地将用户注销并从那里继续。我的问题是,当您不知道他们登录了哪些服务器时,您会怎么做?请记住,它可能是许多服务器。

是否有强制删除选项或一种在 puppet 中注销用户的方法?

代码如下:

user {'art':

ensure => absent,

}
Run Code Online (Sandbox Code Playgroud)

错误:

错误:无法删除用户艺术:执行 '/usr/sbin/userdel art' 返回 8:userdel:用户艺术当前已登录

错误:/Stage[main]/Main/Node[demo]/User[art]/ensure:从存在更改为不存在失败:无法删除用户艺术:执行'/usr/sbin/userdel art'返回8:userdel : 用户艺术当前已登录

Nit*_*itz 3

根据这篇文章,您可以断开用户使用的连接pkill -STOP -u USERNAME。您可以在 puppet 中
创建一个资源定义:

define kill_and_delete {
    exec { "killing $title":
        command => "pkill -STOP -u $title",
        onlyif  => "grep '^$title' /etc/passwd",
        before => User[$title],
    }
    user { $title: ensure => absent}
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以像这样使用它:
kill_and_delete {'art': }
注意:我没有对此进行测试。
请参阅资源排序 - before 和 require键入引用 - exec

  • 你快到了。`-STOP`只会挂起进程,而不是杀死它们。 (2认同)