创建所有用户的电子邮件列表

马克·汤普金斯

有时我需要向所有Jenkins用户发送电子邮件,例如警告他们Jenkins将离线进行维护。下面的脚本为我提供了詹金斯认识的所有人的电子邮件地址,但其中包括没有帐户的人,这些人所做的更改已触发构建。我想将其从电子邮件列表中删除,即该列表应仅包含您在securityRealm页面上看到的用户。我正在寻找修改脚本的帮助。谢谢。

import hudson.model.User
import hudson.tasks.Mailer

def users = User.getAll()
for (User u : users) {
    def mailAddress = u.getProperty(Mailer.UserProperty.class).getAddress()
    print(mailAddress + "; ")
}
维塔利(Vitalii Elenhaupt)

首先,您应该知道,詹金斯并不总是能够告诉您用户是否存在。詹金斯的javadoc

例如,当安全领域位于Servlet实现之上时,甚至无法知道给定名称的用户是否存在。

我找到了两种解决方案。

解决方案1

HudsonPrivateSecurityRealm.html#getAllUsers()返回所有可以登录系统的用户。这对我有用:

import hudson.model.User
import hudson.tasks.Mailer
import jenkins.model.Jenkins

def realm = Jenkins.getInstance().getSecurityRealm()
def users = realm.getAllUsers()
for (User u : users) {
    def mailAddress = u.getProperty(Mailer.UserProperty.class).getAddress()
    print(mailAddress + "; ")
}

注意:这取决于Jenkins配置,可能无法在使用另一个(不是a HudsonPrivateSecurityRealm)安全领域的系统上工作

解决方案2

SecurityRealm#loadUserByUsername如果用户存在,则返回用户详细信息,UsernameNotFoundException否则抛出

import hudson.model.User
import hudson.tasks.Mailer
import jenkins.model.Jenkins
import org.acegisecurity.userdetails.UsernameNotFoundException

def realm = Jenkins.getInstance().getSecurityRealm()
def users = User.getAll()
for (User u : users) {
    try {
        realm.loadUserByUsername(u.getId()) // throws UsernameNotFoundException
        def mailAddress = u.getProperty(Mailer.UserProperty.class).getAddress()
        print(mailAddress + "; ")
    } catch (UsernameNotFoundException e) { }
 }

这是一个棘手的问题,但是当我们使用顶级抽象类(SecurityRealm中存在的方法时,它应该可以在所有安全领域使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

电子邮件包含“ @MyDomain”的所有用户

验证 Firebase 中所有用户的电子邮件

如何将所有电子邮件分发中所有用户的Active Directory列表保存到.CSV?

Firebase:通过电子邮件搜索而不让用户看到所有用户

用户注销时通过电子邮件发送所有用户命令

如何在asp.net c#Web窗体应用程序的Active Directory OU中创建所有电子邮件地址的数组列表?

Django 查询:具有给定电子邮件的所有用户

使用 Microsoft Graph SDK 获取具有特定电子邮件域的所有用户

创建电子邮件用户列表?

ionic,firebase:如何从firebase身份验证中获取所有用户电子邮件

在Laravel中通过ID获取所有用户的电子邮件

流星帐户密码,显示所有用户的电子邮件

我需要向数组中的所有用户发送电子邮件

使用C#需要当前组织中的所有用户详细信息(姓名,电子邮件,指定,部门)

Laravel eloquent 从电子邮件和电话号码数组中选择所有用户

我正在使用 nodemailer 并且需要向数组中的所有用户发送电子邮件?

Rails邮件程序:在没有用户模型的情况下生成电子邮件

AWS Amplify + Cognito:创建没有用户名的账户/使用电子邮件代替用户名?

如何在没有用户注册电子邮件的情况下发送通知

在没有用户交互的情况下发送电子邮件-Android Studio

如何在Android中向现有用户添加电子邮件

如何在 ruby on rails 中访问现有用户电子邮件

向现有用户Laravel 5.8发送电子邮件通知

带有用户名和电子邮件的 PDO 登录系统

使用没有用户名和密码的 SMTP 发送电子邮件

Shopify 创建用户激活电子邮件

同时拥有用户名和电子邮件,但在django-rest-auth中使用电子邮件对用户进行身份验证

使用MeteorJS堆栈,如何从用户发布的帖子中检索带有用户ID的用户电子邮件

新的网络服务器:我应该创建所有用户帐户以及提供哪些权限