Вы можете видеть, что на панели «Действия» щелкните любое выполнение (запланированное или нет) и щелкните в «Выводе журнала», вы можете увидеть вся подробная информация о вакансии. Кроме того, вы можете проверить журналы выполнения, обычно по пути /var/lib/rundeck/logs/rundeck/<projectname>/job/<job-id>/logs
.
Подробнее об этом можно узнать здесь .
ОБНОВЛЕНИЕ 1: вы можете использовать вызов API прогноза , чтобы проверить задания, которые «должны быть выполнены», я оставляю сценарий, который его использует:
#!/bin/sh
#############################################
echo "Insert the Rundeck Server hostname:"; read -r rundeckServer
echo -e "\nWhich port?:"; read -r rundeckPort
echo -e "\nCopy and Paste the Rundeck API Token:"; read -r rundeckApitoken
#############################################
# to run unatended mode, please comment the code above and uncomment the code below, and replace with your props
#############################################
# rundeckServer="node01.rundeck.local"
# rundeckPort="4440"
# rundeckApitoken="P0K0EvIAoWkAbmvj3JnlelmwaVhF5AJd"
#############################################
# Options Variables
#############################################
rundeckProtocol="http"
rundeckApiversion="31"
rundeckApiformat="json"
curlOptions="-s"
#############################################
echo
echo "The following Jobs are Scheduled:"
echo
for projectName in $(curl -X "GET" "$curlOptions" -H "Accept: application/$rundeckApiformat" -H "Content-Type: application/$rundeckApiformat" -H "X-Rundeck-Auth-Token: $rundeckApitoken" "$rundeckProtocol"://"$rundeckServer":"$rundeckPort"/api/"$rundeckApiversion"/projects|sed 's/,/\n/g'| grep name | cut -d ":" -f2 | tr -d '"')
do
for jobId in $(curl "$curlOptions" -X "GET" -H "Accept: application/$rundeckApiformat" -H "Content-Type: application/$rundeckApiformat" -H "X-Rundeck-Auth-Token: $rundeckApitoken" "$rundeckProtocol"://"$rundeckServer":"$rundeckPort"/api/"$rundeckApiversion"/project/"$projectName"/jobs | sed 's/,/\n/g' | grep id | cut -d ":" -f2 | tr -d '"')
do
output=$(curl "$curlOptions" -X "GET" -H "Accept: application/$rundeckApiformat" -H "Content-Type: application/$rundeckApiformat" -H "X-Rundeck-Auth-Token: $rundeckApitoken" "$rundeckProtocol"://"$rundeckServer":"$rundeckPort"/api/"$rundeckApiversion"/job/"$jobId"/forecast?time=7d | grep "futureScheduledExecutions")
if [ -n "$output" ]
then
echo $output | sed -r 's/.+("href":".+),.+("futureScheduledExecutions":\[.+\]),.+("project":".+),("name":".+).+/\1\n\3\n\4\n\2/g'
echo
fi
done
done
ОБНОВЛЕНИЕ 2: Я оставляю более простой вызов API прогноза (требуется jq ).
curl --location --request GET 'http://localhost:4440/api/35/job/your-job-id/forecast' --header 'Accept: application/json' --header 'X-Rundeck-Auth-Token: your-user-token' --header 'Content-Type: application/json' --data-raw '' | jq
Это выводит всю информацию:
{
"href": "http://localhost:4440/api/35/job/328789d1-986f-4aa2-9013-de8eb6b6df98",
"id": "328789d1-986f-4aa2-9013-de8eb6b6df98",
"scheduleEnabled": true,
"scheduled": true,
"enabled": true,
"permalink": "http://localhost:4440/project/ProjectEXAMPLE/job/show/328789d1-986f-4aa2-9013-de8eb6b6df98",
"group": null,
"futureScheduledExecutions": [
"2020-08-06T14:33:00Z"
],
"description": "",
"project": "ProjectEXAMPLE",
"name": "ExampleJob"
}
ОБНОВЛЕНИЕ 3: Теперь, объединив информацию о задании экспорта и вызов API прогноза, вы можете получить информацию о задании и узлах. Я оставляю пример сценария:
#!/bin/sh
#####################################################
# rundeck instance values
server="localhost"
port="4440"
api="35"
jobid="328789d1-986f-4aa2-9013-de8eb6b6df98"
token="MhloqezoV3IygvOIA6yzE9TNlzYCbi4m"
info=$(curl -s --location --request GET "http://$server:$port/api/$api/job/$jobid/forecast" --header "Accept: application/json" --header "X-Rundeck-Auth-Token:$token" --header "Content-Type: application/json" | jq)
nodes=$(curl -s --location --request GET "http://$server:$port/api/$api/job/$jobid" --header "Accept: application/xml" --header "X-Rundeck-Auth-Token:$token" --header "Content-Type: application/xml" --data-raw "" | grep -oPm1 "(?<=<filter>)[^<]+")
echo "######################"
echo "Job information: $info"
echo "######################"
echo "Nodes: $nodes"
echo "######################"
Со следующими данными:
######################
Job information: {
"href": "http://localhost:4440/api/35/job/328789d1-986f-4aa2-9013-de8eb6b6df98",
"id": "328789d1-986f-4aa2-9013-de8eb6b6df98",
"scheduleEnabled": true,
"scheduled": true,
"enabled": true,
"permalink": "http://localhost:4440/project/ProjectEXAMPLE/job/show/328789d1-986f-4aa2-9013-de8eb6b6df98",
"group": null,
"futureScheduledExecutions": [
"2020-08-07T14:33:00Z"
],
"description": "",
"project": "ProjectEXAMPLE",
"name": "ExampleJob"
}
######################
Nodes: localhost
######################
ОБНОВЛЕНИЕ 4: Данные определения задания «распределяются» по базе данных (H2 или что-то еще). Так, например, если вы настроили Rundeck для MySQL и получаете доступ к базе данных с помощью любого инструмента, фильтр узлов будет сохранен в scheduled_execution
таблице.