create-qm.sh 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #!/bin/bash
  2. set -e
  3. yell() { printf "\033[1;6;37;41m$0: $*\033[0m\n" >&2; }
  4. die() { yell "$*"; exit 111; }
  5. try() { "$@" || die "FAIL: $*"; }
  6. cmd() {
  7. local info="${2:-$1}"
  8. echo "========================================================="
  9. echo -e "\n💡 $info"
  10. echo "========================================================="
  11. eval "$1"
  12. }
  13. config=$(cat /opt/mdw/bars/queuemanager.log | tr ' ' '\n' | grep -v 'TYPE\;QM\;PORT\;QNAME\;USAGE\;RNAME\;RQMNAME\;XMITQ\;CHANNEL\;CHLTYPE')
  14. target=$VAR2
  15. serv_path=$VAR3
  16. BROKER=$VAR4
  17. AWAKE=$VAR5
  18. echo $config
  19. while read -r line; do
  20. trimmed_line=$(echo "$line" | xargs)
  21. echo $line
  22. if [[ "$line" == "TYPE;QM;PORT;QNAME;USAGE;RNAME;RQMNAME;XMITQ;CHANNEL"* || "$trimmed_line" == "" ]]; then
  23. echo "No need to execute because is line 1 or blank"
  24. else
  25. type=$(echo "$line" | cut -d';' -f 1)
  26. qm=$(echo "$line" | cut -d';' -f 2)
  27. port=$(echo "$line" | cut -d';' -f 3)
  28. qname=$(echo "$line" | cut -d';' -f 4)
  29. usage=$(echo "$line" | cut -d';' -f 5)
  30. rname=$(echo "$line" | cut -d';' -f 6)
  31. rqname=$(echo "$line" | cut -d';' -f 7)
  32. xmitq=$(echo "$line" | cut -d';' -f 8)
  33. channel=$(echo "$line" | cut -d';' -f 9)
  34. chltype=$(echo "$line" | cut -d';' -f 10)
  35. if [[ $(dspmq | grep "$qm" | grep "Ended") ]]; then
  36. try cmd "strmqm $qm" "Start QM $qm"
  37. fi;
  38. echo "checking queue $serv_path/$(echo "$qm" | tr -d '.')"
  39. if [[ "$type" == "QM" ]]; then
  40. # cek jika belum ada directory
  41. qm_path=$serv_path/$(echo "$qm" | tr -d '.')
  42. if [[ ! -d "$qm_path" ]]; then
  43. echo -e "\n\033[1;34m💡 Create Directory $qm_path\033[0m"
  44. try cmd "mkdir -m 775 -p $qm_path/data" "Create Directory $qm_path/data"
  45. try cmd "mkdir -m 775 -p $qm_path/log" "Create Directory $qm_path/log"
  46. fi
  47. # cek queue manager sudah ada atau belum
  48. if [[ ! $(dspmq | grep "$qm") ]]; then
  49. try cmd "crtmqm -md $qm_path/data -ld $qm_path/log $qm 2>/dev/null" "Create QM $qm"
  50. if [[ "$target" == "DC" && ! $(ps -ef | grep "amqzxma0 -m $qm" | grep -v grep) ]]; then
  51. try cmd "strmqm $qm 2>/dev/null" "Start QM $qm"
  52. fi
  53. if [[ "$target" == "DRC" && $(dspmq | grep -E "$qm|Ended") ]]; then
  54. try cmd "strmqm $qm 2>/dev/null" "Start QM $qm"
  55. fi;
  56. echo "DEFINE LISTENER($qm) TRPTYPE(TCP) port ($port) CONTROL(STARTONLY) REPLACE" | runmqsc $qm
  57. echo "DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN)" | runmqsc $qm
  58. echo "START CHANNEL(SYSTEM.ADMIN.SVRCONN)" | runmqsc $qm
  59. echo "ALTER QMGR CHLAUTH(DISABLED)" | runmqsc $qm
  60. echo "START LISTENER($qm)" | runmqsc $qm
  61. fi;
  62. fi;
  63. if [[ "$type" == "QLOCAL" ]]; then
  64. if echo "DISPLAY QLOCAL($qname)" | runmqsc $qm 2>&1 | grep -q "QUEUE($qname)"; then
  65. echo "Queue Local $qname exists in Queue Manager $qm."
  66. else
  67. echo "Queue Local $qname does not exist in Queue Manager $qm."
  68. if [[ -z "$usage" ]]; then
  69. try cmd "echo \"DEFINE QLOCAL($qname) REPLACE\" | runmqsc $qm | grep 'AMQ'" \
  70. "Create QLOCAL $qname"
  71. else
  72. try cmd "echo \"DEFINE QLOCAL($qname) USAGE ($usage) REPLACE\" | runmqsc $qm | grep 'AMQ'" \
  73. "Create XMITQ $qname"
  74. fi
  75. fi
  76. fi
  77. if [[ "$type" == "CHANNEL" ]]; then
  78. if echo "DISPLAY QCHANNEL($qname)" | runmqsc $qm 2>&1 | grep -q "QUEUE($qname)"; then
  79. echo "Queue Channel $qname exists in Queue Manager $qm."
  80. else
  81. echo "Queue Channel $qname does not exist in Queue Manager $qm."
  82. if [[ "$chltype" == "SDR" ]]; then
  83. echo "DEFINE CHANNEL($channel) CHLTYPE($chltype) CONNAME('localhost($port)') XMITQ($xmitq) TRPTYPE(TCP) REPLACE" | runmqsc $qm
  84. echo "ALTER CHANNEL($channel) CHLTYPE($chltype) HBINT(0)" | runmqsc $qm
  85. echo "ALTER CHANNEL($channel) CHLTYPE($chltype) DISCINT(0)" | runmqsc $qm
  86. echo "START CHANNEL($channel)" | runmqsc $qm
  87. else
  88. echo "DEFINE CHANNEL($channel) CHLTYPE ($chltype) TRPTYPE (TCP) REPLACE" | runmqsc $qm
  89. echo "ALTER CHANNEL($channel) CHLTYPE ($chltype) HBINT (0)" | runmqsc $qm
  90. fi;
  91. fi
  92. fi;
  93. if [[ "$type" == "QREMOTE" ]]; then
  94. if echo "DISPLAY QREMOTE($qname)" | runmqsc $qm 2>&1 | grep -q "QUEUE($qname)"; then
  95. echo "Queue Remote $qname exists in Queue Manager $qm."
  96. else
  97. echo "Queue Remote $qname does not exist in Queue Manager $qm."
  98. echo "DEFINE QREMOTE($qname) RNAME($rname) RQMNAME($rqname) XMITQ($xmitq)" | runmqsc $qm
  99. fi
  100. fi;
  101. fi
  102. done <<< "$config"
  103. if [[ $target == "DRC" && $AWAKE == false ]]; then
  104. try cmd "endmqm -i $qm" \
  105. "Stop QM $qm"
  106. sleep $((2 * 60))
  107. fi