rundeckのjobを一括取得するスクリプト
ソース
function loopSleep(_loopLimit,_interval, _mainFunc){
var loopLimit = _loopLimit;
var interval = _interval;
var mainFunc = _mainFunc;
var i = 0;
var loopFunc = function () {
var result = mainFunc(i);
if (result === false) {
// break機能
return;
}
i = i + 1;
if (i < loopLimit) {
setTimeout(loopFunc, interval);
}
}
loopFunc();
}
const WAIT_COUNT = 3;
function download_xml() {
var button = targets.pop();
var jobTitle = button.parentNode.parentNode.querySelector('a.hover_show_job_info').text.trim();
console.log(`job name: ${jobTitle}`);
button.click();
loopSleep(WAIT_COUNT, 1000, function(i){
var anchor = button.parentNode.querySelector('ul > li > a[title="Download Job definition in XML"]');
if(anchor) {
anchor.click();
if(targets.length) {
setTimeout(
function () {
download_xml();
},
'500'
);
}
return false;
} else {
if(i == WAIT_COUNT - 1) {
console.log(`${jobTitle} はDLできませんでした。`);
}
}
})
}
var node = document.querySelectorAll('tr > td.jobname > div > button');
var targets = [];
node.forEach(function(val, i){ targets.push(val) });
console.log(`Number of all jobs: ${targets.length}`);
download_xml();
使い方
rundeckのjobリスト画面を開き、chromeのconsoleで実行する。 XMLのダウンロードを自動的に行なってくれる。