Rest 使用Jenkins管道通过HTTP-RequestBuilder插件查询Bluecat IPAM
对于问题的长度提前表示歉意,但希望事先声明脚本可以帮助未来的用户与我同舟共济 我目前在groovy中有一个管道脚本,它可以成功连接到我的bluecat IP地址管理器,并给我一个授权令牌,从理论上讲,这是我能够对bluecat API进行后续调用并获得IP地址或将新IP地址放入IPAM DB所需的全部。 到目前为止,我的剧本是:Rest 使用Jenkins管道通过HTTP-RequestBuilder插件查询Bluecat IPAM,rest,jenkins,groovy,Rest,Jenkins,Groovy,对于问题的长度提前表示歉意,但希望事先声明脚本可以帮助未来的用户与我同舟共济 我目前在groovy中有一个管道脚本,它可以成功连接到我的bluecat IP地址管理器,并给我一个授权令牌,从理论上讲,这是我能够对bluecat API进行后续调用并获得IP地址或将新IP地址放入IPAM DB所需的全部。 到目前为止,我的剧本是: import groovy.json.JsonSlurperClassic def jsonParse(def json) { new groovy.jso
import groovy.json.JsonSlurperClassic
def jsonParse(def json) {
new groovy.json.JsonSlurperClassic().parseText(json)
}
def getPassword = { username ->
def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials.class,
jenkins.model.Jenkins.instance
)
def c = creds.findResult { it.username == username ? it : null }
if ( c ) {
println "found credential ${c.id} for username ${c.username}"
def systemCredentialsProvider = jenkins.model.Jenkins.instance.getExtensionList(
'com.cloudbees.plugins.credentials.SystemCredentialsProvider'
).first()
def password = systemCredentialsProvider.credentials.first().password
return password
} else {
println "could not find credential for ${username}"
}
}
// Gather Credentials
def BLUECAT_USER = 'BLUECAT_USER'
def BLUECAT_PASS = getPassword(BLUECAT_USER)
def BLUECAT_URL = 'http://ipam.main.org/Services/REST/v1/'
def LoginUser = 'login?username='
def LoginUserP = '&password='
def GetSysInfo = 'getSystemInfo'
// ----- Get Session Token
def response = httpRequest httpMode: 'GET', url: BLUECAT_URL + LoginUser + BLUECAT_USER + LoginUserP + BLUECAT_PASS
if (response.status != 200) {
error("Response recieved is not valid check your credentials.")
} else {
println "Valid response recieved."
}
//println BLUECAT_USER
//println BLUECAT_PASS
//println('Status: '+response.status)
println('Response: '+response.content)
def ResponseText = response.content
def Response = ResponseText.split(' ')
def Token = Response[3];
println "Your Session Token is : " + Token
def GetSYS = httpRequest acceptType: 'APPLICATION_JSON', contentType: 'APPLICATION_JSON', httpMode: 'GET', customHeaders: [name: 'BAMAuthToken', value: Token], url: BLUECAT_URL + GetSysInfo
def content = jsonParse(GetSYS.content)
println "SystemInfo: " + content["status_text"]
凭证存储在Jenkins的凭证存储库中,脚本的一部分潜入该存储库以检索与请求的用户帐户关联的密码。(我不为将脚本的这一部分直接从堆栈溢出中剥离而道歉,它可以正常工作,为什么要弄乱它?)
到目前为止,我遇到的问题是最后3行代码。
阅读HTTP请求生成器插件的文档时,我无法生成正确的请求以获取IPAM设备的系统信息
事件的顺序应如下所示
使用bluecat凭证集,我可以执行get
def response = httpRequest httpMode: 'GET', url: 'http://ipam.main.org/Services/REST/v1/login?username=BLUECAT_USER&password=BLUECAT_PASS'
我得到一个带有BAMAuthToken的回复,然后我可以打电话
def GetSYS = httpRequest acceptType: 'APPLICATION_JSON', contentType: 'APPLICATION_JSON', httpMode: 'GET', customHeaders: [name: 'BAMAuthToken', value: Token], url: 'http://ipam.main.org/Services/REST/v1/getSystemInfo'
其中,令牌是成功登录后获得的授权令牌
这最后一行给了我一个错误,似乎指向我没有正确地形成我的请求。
按照惯例,我至少花了一周时间在谷歌上搜索其他人可能做过的事情
即使在这里,我也不知道如何形成请求,并且仍然将Auth令牌作为该请求的一部分传递
我只是从groovy和Jenkins开始,其他人用Java或powershell做了这个API聊天,我不是Java爱好者,powershell涉及创建一个DLL,我可以这样做,但是从其他一些走上这条路线的人所调用的功能集来看,它变得非常笨拙和不完整
如果有人能提供帮助或建议,我们将不胜感激
。我得到了稍微好一点的有效回答 谢谢你花时间看这个问题