diff --git a/atualiza_TotalBus.bash b/atualiza_TotalBus.bash index a239b56..7e2679b 100755 --- a/atualiza_TotalBus.bash +++ b/atualiza_TotalBus.bash @@ -13,7 +13,8 @@ echo -e "####################################################" echo -e " " sleep 1 IPPRIV=$(hostname -I | awk '{ print $1 }') -listaclientes=$(ls /etc/systemd/system/ | grep ^wild* | sort | cut -d "." -f 1) +#listaclientes=$(ls /etc/systemd/system/ | grep ^wild* | sort | cut -d "." -f 1) +listaclientes=$(systemctl list-units --type=service | grep -i "wildfly_*" | awk '{print $1}' | cut -d '.' -f1) read -p "DIGITE o NÚMERO ou COPIE e COLE o que vai atualizar: " service sleep 1 case $service in @@ -605,12 +606,12 @@ case $service in 5|ADM) echo -e " " - echo -e "Opção \"5 - ADM foi escolhida...\"" - sleep 2 - echo -e " " - adms=$(ls /etc/systemd/system/ | grep ^wild* | sort | cut -d "." -f 1) + echo -e "Opção \"5 - ADM foi escolhida...\"" + sleep 2 + echo -e " " + adms="$listaclientes" echo -e "####################################################" - echo -e "##### Listando ADMs que rodam neste servidor: #####" + echo -e "##### Listando ADMs neste servidor: #####" echo -e "####################################################" echo -e "----------------------------------------------------" echo -e "$adms" @@ -621,9 +622,9 @@ case $service in echo -e " " portconf=$(cat /dados/$adm/standalone/configuration/standalone.xml | grep "socket-binding-group name" | cut -d ":" -f 2 | tr -d '}">') portconsole=$(expr $portconf + 9990) - sleep 1 - echo -e " " - echo -e "Verificando se existe "ventaboletosadm" em \"$adm\" ..." + sleep 1 + echo -e " " + echo -e "Verificando se existe "ventaboletosadm" em \"$adm\" ..." export JAVA_HOME=/dados/jdk-11.0.5 ADMCHECK=$(/dados/$adm/bin/jboss-cli.sh --user=admin --password=rjmaster09 --connect controller=localhost:$portconsole --commands="deployment-info" | grep "ventaboletosadm") if [[ -n "$ADMCHECK" ]]; then @@ -636,63 +637,118 @@ case $service in echo "...finalizando esta atualização!" exit 1 fi - echo -e " " - sleep 1 - echo -e "Será feito o download da versão que você digitar abaixo: " - echo -e "####################################################" - read -p "Digite a versão do adm: " versaoadm - echo -e " " - echo -e "Baixando ADM versão --> $versaoadm <-- para atualização." - rm -rf /tmp/ventaboletosadm.war - curl -O http://52.5.53.15:8081/nexus/content/repositories/releases/br/com/rjconsultores/ventaboletosadm/$versaoadm/ventaboletosadm-$versaoadm.war - mv ventaboletosadm-$versaoadm.war /tmp/ventaboletosadm.war - sleep 2 - echo -e " " - echo -e "#############################################################################################" - echo -e "Apagando backups antigos com mais de 14 dias..." - find "/dados/" -type d -name 'bkp_ADM_*' -mtime +14 -exec rm -rf {} \; echo -e " " - echo -e "#############################################################################################" - echo -e "Apagando backups antigos com mais de 14 dias..." - find "/dados/bkp_ADM/" -type d -name '*' -mtime +14 -exec rm -rf {} \; - VER="/dados/$adm/standalone/deployments/ventaboletosadm*" - if [ -e $VER ]; then - mv $VER /opt/ - else - echo -e "***Iniciando backup do "ventaboletosadm.war" de " $adm " ..." + echo -e "Abaixo, informe seu usuario e senha do Jenkins..." + echo -e " " + echo -e " https://jenkinsventa.rjconsultores.com.br " + echo -e " " + read -p "Digite seu USUÁRIO do Jenkins: " userj + echo -e " " + read -s -p "Digite sua SENHA do Jenkins: " passj + echo -e " " + echo -e "Validando usuario e senha..." + echo -e " " + validj=$(curl -s -w "%{http_code}" -su "$userj:$passj" -o /dev/null "https://jenkinsventa.rjconsultores.com.br" ; echo) + if [[ "$validj" -eq 200 ]]; then + echo "Usuário e senha validado com sucesso!" + elif [[ "$validj" -eq 401 ]]; then + echo -e "Usuário ou senha incorretos." + echo -e "Tente novamente..." + exit 0 + else + echo "Erro ao tentar logar. Código HTTP: $validj" + echo -e "Finalizando script." + exit 1 + fi + echo -e " " + sleep 1 + echo -e "Será feito o download da versão que você digitar abaixo: " + echo -e "####################################################" + read -p "Digite a versão do adm (ex: 1.250.6): " versaoadm + echo -e " " + echo -e "Baixando ADM versão --> $versaoadm <-- " + rm -rf /tmp/ventaboletosadm.war + #curl -O http://52.5.53.15:8081/nexus/content/repositories/releases/br/com/rjconsultores/ventaboletosadm/$versaoadm/ventaboletosadm-$versaoadm.war + #mv ventaboletosadm-$versaoadm.war /tmp/ventaboletosadm.war + + # Codifica os colchetes na URL + JENKINS_API_URL="https://jenkinsventa.rjconsultores.com.br/job/Adm/job/Adm-Project-Build/api/json?tree=builds%5Bnumber,description,displayName%5D" + + # Baixa o JSON autenticado + RESPONSE=$(curl -u "$userj:$passj" -s "$JENKINS_API_URL") + + # Mostra os displayNames disponíveis + #echo "=== DisplayNames disponíveis ===" + #echo "$RESPONSE" | jq -r '.builds[].displayName' + + [ ! -x "$(which jq)" ] && sudo apt install jq -y # JQ instalado? + + # Usa 'test' para buscar displayName que contenha a versão (mais tolerante com aspas extras) + DESCRIPTION=$(echo "$RESPONSE" | jq -r \ + --arg versaoadm "$versaoadm" \ + '.builds[] | select(.displayName | test($versaoadm)) | .description' | head -n1) + + if [ -z "$DESCRIPTION" ] || [ "$DESCRIPTION" == "null" ]; then + echo "Versão '$versaoadm' não encontrada no Jenkins." + exit 1 fi - echo -e " " - time=$(date +%d-%m-%Y-%H-%M) - mkdir -p /dados/bkp_ADM/$adm-$time - bkp=/dados/bkp_ADM/$adm-$time - export JAVA_HOME=/dados/jdk-11.0.5 - /dados/$adm/bin/jboss-cli.sh --user=admin --password=rjmaster09 --connect controller=localhost:$portconsole --commands="attachment save --operation=/deployment=ventaboletosadm.war:read-content() --file=$bkp/ventaboletosadm.war" - sleep 2 - echo -e " " - echo "################################################################################################" - echo -e "Iniciando Atualização do ADM de $adm ..." - echo -e " " - sleep 2 - echo -e "***Você pode duplicar este terminal e acompanhar o log com o comando abaixo: ***" - echo -e " " - echo -e "tail -f /dados/$adm/standalone/log/server.log" - export JAVA_HOME=/dados/jdk-11.0.5 - /dados/$adm/bin/jboss-cli.sh --user=admin --password=rjmaster09 --connect controller=localhost:$portconsole --commands="deployment deploy-file --replace /tmp/ventaboletosadm.war" - echo -e "***********************************************************************" - bkpok="$bkp/ventaboletosadm.war" - echo -e "Backup salvo em: $bkpok " - echo -e "***********************************************************************" - echo -e "Favor acessar ADM via browser e validar. *****" - echo -e " " - portconf=$(cat /dados/$adm/standalone/configuration/standalone.xml | grep "jboss.socket.binding.port-offset" | cut -d ":" -f 2 | tr -d '}">') - portapp=$(expr $portconf + 8080) - [ ! -x "$(which unzip)" ] && echo "Instalando... " && sudo apt install unzip 1> /dev/null 2>&1 -y # unzip instalado? - versaonova=$(unzip -p /tmp/ventaboletosadm.war WEB-INF/classes/versionADM.info ; echo) - versaoantiga=$(unzip -p $bkp/ventaboletosadm.war WEB-INF/classes/versionADM.info ; echo) - echo -e "reiniciando $adm ... " - systemctl restart $adm + + # Extrai a URL do WAR do campo description + WAR_URL=$(echo "$DESCRIPTION" | grep -oP "a href='\K[^']+") + + if [ -z "$WAR_URL" ]; then + echo "Link para o WAR não encontrado no campo description." + exit 1 + fi + + # Baixa o arquivo + ARQUIVO=$(basename "$WAR_URL") + #echo "Baixando WAR: $ARQUIVO" + curl -u "$userj:$passj" -L -o /tmp/"$ARQUIVO" "$WAR_URL" + + sleep 2 echo -e " " - URL="http://$IPPRIV:$portapp" + echo -e "#############################################################################################" + echo -e "Apagando backups antigos com mais de 14 dias..." + find "/dados/bkp_ADM/" -type d -name '*' -mtime +14 -exec rm -rf {} \; + VER="/dados/$adm/standalone/deployments/ventaboletosadm*" + if [ -e $VER ]; then + mv $VER /opt/ + else + echo -e "***Iniciando backup do "ventaboletosadm.war" de " $adm " ..." + fi + echo -e " " + time=$(date +%d-%m-%Y-%H-%M) + mkdir -p /dados/bkp_ADM/$adm-$time + bkp=/dados/bkp_ADM/$adm-$time + export JAVA_HOME=/dados/jdk-11.0.5 + /dados/$adm/bin/jboss-cli.sh --user=admin --password=rjmaster09 --connect controller=localhost:$portconsole --commands="attachment save --operation=/deployment=ventaboletosadm.war:read-content() --file=$bkp/ventaboletosadm.war" + sleep 2 + echo -e " " + echo "################################################################################################" + echo -e "Iniciando Atualização do ADM de $adm ..." + echo -e " " + sleep 2 + echo -e "***Você pode duplicar este terminal e acompanhar o log com o comando abaixo: ***" + echo -e " " + echo -e "tail -f /dados/$adm/standalone/log/server.log" + export JAVA_HOME=/dados/jdk-11.0.5 + /dados/$adm/bin/jboss-cli.sh --user=admin --password=rjmaster09 --connect controller=localhost:$portconsole --commands="deployment deploy-file --replace /tmp/ventaboletosadm.war" + echo -e "***********************************************************************" + bkpok="$bkp/ventaboletosadm.war" + echo -e "Backup salvo em: $bkpok " + echo -e "***********************************************************************" + echo -e "Favor acessar ADM via browser e validar. *****" + echo -e " " + portconf=$(cat /dados/$adm/standalone/configuration/standalone.xml | grep "jboss.socket.binding.port-offset" | cut -d ":" -f 2 | tr -d '}">') + portapp=$(expr $portconf + 8080) + [ ! -x "$(which unzip)" ] && echo "Instalando... " && sudo apt install unzip 1> /dev/null 2>&1 -y # unzip instalado? + versaonova=$(unzip -p /tmp/ventaboletosadm.war WEB-INF/classes/versionADM.info ; echo) + versaoantiga=$(unzip -p $bkp/ventaboletosadm.war WEB-INF/classes/versionADM.info ; echo) + echo -e "reiniciando $adm ... " + systemctl restart $adm + echo -e " " + URL="http://$IPPRIV:$portapp" while true; do STATUS_CODE=$(curl -o /dev/null -s -w "%{http_code}" "$URL") if [ "$STATUS_CODE" -eq 200 ]; then @@ -706,42 +762,45 @@ case $service in sleep 5 done - echo -e " " - logt=$(date +%d-%m-%Y) + echo -e " " + logt=$(date +%d-%m-%Y) echo -e "Gravando log da atualização em "/dados/$adm/standalone/log/atualizacao_$logt.log" ..." - feito=$(who | awk '{print $1}' | head -n 1 | tr a-z A-Z) + # feito=$(who | awk '{print $1}' | head -n 1 | tr a-z A-Z) + feito=$(echo -e $userj | tr a-z A-Z) echo -e " ---------------------------------------------------------------------------------- - Atualização >>>ADM<<< - Data/Hora: $time - Atualizando cliente: $adm - - Versão antiga: $versaoantiga + - Versão antiga: $versaoantiga - Versão NOVA: *** $versaonova *** - Backup salvo em "$bkp/ventaboletosadm.war" - Endereço: $URL/ventaboletosadm - Console: http://$IPPRIV:$portconsole - Feito por: $feito - - ################################################################################## + + ################################################################################## #- Em caso de Rollback execute o comando abaixo: - export JAVA_HOME=/dados/jdk-11.0.5 && /dados/$adm/bin/jboss-cli.sh --user=admin --password=rjmaster09 --connect controller=localhost:$portconsole --commands=\"deployment deploy-file --replace $bkp/ventaboletosadm.war\" - ################################################################################## + export JAVA_HOME=/dados/jdk-11.0.5 && /dados/$adm/bin/jboss-cli.sh --user=admin --password=rjmaster09 --connect controller=localhost:$portconsole --commands=\"deployment deploy-file --replace $bkp/ventaboletosadm.war\" + ################################################################################## ----------------------------------------------------------------------------------" >> /dados/$adm/standalone/log/atualizacao_$logt.log echo -e " " - echo -e "- Versão antiga: $versaoantiga" - echo -e " " - echo -e "- Versão NOVA: *** $versaonova ***" - echo -e " " - echo -e "- Endereço: $URL/ventaboletosadm" - echo -e " " - echo -e "- Console: http://$IPPRIV:$portconsole" - echo -e " " - sleep 1 - echo -e "***********************************************************************" - echo -e "*****Atualização do " $adm " para a $versaonova finalizada!!!****" - echo -e "***********************************************************************" - rm -rf /tmp/ventaboletosadm.war + echo -e "- Versão antiga: $versaoantiga" + echo -e " " + echo -e "- Versão NOVA: *** $versaonova ***" + echo -e " " + echo -e "- Endereço: $URL/ventaboletosadm" + echo -e " " + echo -e "- Console: http://$IPPRIV:$portconsole" + echo -e " " + sleep 1 + echo -e "***********************************************************************" + echo -e "*****Atualização do " $adm " para a $versaonova finalizada!!!****" + echo -e "***********************************************************************" + rm -rf /tmp/ventaboletosadm.war + + ;; 6|Digitação)