mirror of
https://github.com/kneutron/ansitest.git
synced 2025-01-16 04:42:55 +08:00
337 lines
7.2 KiB
Bash
337 lines
7.2 KiB
Bash
#!/bin/bash
|
|
|
|
# Author: dave.bechtel kingneutron@gmail , +%Y2022
|
|
# Utility script to translate server names to cloud service / physical location and type (sandbox, dev, prod, etc)
|
|
# Current version: 1.2 2022.0119.1300
|
|
# Requires: bash v3.2.57 or later
|
|
|
|
# NOTE set to 0 to disable "gt<1 ae<2 scg<3 d<4 01<5" helpful breakdown output
|
|
debugg=1
|
|
[ $debugg -gt 1 ] && set -e # Exit at first error
|
|
|
|
# failexit.mrg
|
|
function failexit () {
|
|
echo '! Something failed! Code: '"$1 $2" # code # (and optional description)
|
|
exit $1
|
|
}
|
|
|
|
#echo "** Server Translator -- Author: dave.bechtel kingneutron@gmail **"
|
|
|
|
# Azure cloud
|
|
# 3 chars for location, 3 for app, 3 for function, 2 for environment, 2 for server count
|
|
# ex. zgq xym mgm cs 01 == "Azure Gov Qual - Xymon - Management - Customer Services - 01"
|
|
# 1 2 3 4 5
|
|
zgq="Azure Gov Qual"
|
|
zgb="Azure Gov Bensonville"
|
|
|
|
sb="Sandbox"
|
|
de="Development"
|
|
np="NonProd"
|
|
cs="Customer Services"
|
|
pr="Production"
|
|
qa="Quality Assurance"
|
|
|
|
# AWS cloud
|
|
# 3 for location, 3 for app, 3 for function, 2 for env, 2 for server count
|
|
# ex. aw1 xym mgm ss 01 == "AWS Virginia - Xymon - Management - Shared Services - 01"
|
|
aw1="AWS Virginia"
|
|
|
|
ss="Shared Services"
|
|
te="Test"
|
|
|
|
# On-prem physical / VM
|
|
# 2 for location, 2 for app owner, 3 for function, 1 for env, 2 for server count
|
|
# Prefixes
|
|
ch="Chicago (on-prem)"
|
|
sa="San Antonio (on-prem)"
|
|
|
|
# Appowner
|
|
db="Database"
|
|
lx="Linux"
|
|
|
|
# server function
|
|
adm="AHE LINUX Gateway"
|
|
app="Application"
|
|
azs="Replication"
|
|
cfj="Confluence / JIRA"
|
|
dbe="Database"
|
|
dbg="Oracle Dataguard"
|
|
gms="Golden Master Server"
|
|
mgm="Management"
|
|
oem="OEM"
|
|
web="Webserver"
|
|
xym="XYMon Monitoring"
|
|
|
|
# Env
|
|
s="Sandbox"
|
|
d="Development"
|
|
t="Test"
|
|
q="QA"
|
|
p="Production"
|
|
h="Training"
|
|
|
|
|
|
#############################
|
|
# Functions
|
|
function transazure () {
|
|
# arg=zgqxymmgmcs01
|
|
# 111
|
|
# 0123456789012
|
|
# Print a helpful breakdown of parts
|
|
[ $debugg -gt 0 ] && echo ${arg:0:3}'<1 '${arg:3:3}'<2 '${arg:6:3}'<3 '${arg:9:2}'<4 '${arg:11:2}'<5 '
|
|
#zgq<1 xym<2 mgm<3 cs<4 01<5
|
|
|
|
part1=${arg:0:3}
|
|
part2=${arg:3:3}
|
|
part3=${arg:6:3}
|
|
part4=${arg:9:2}
|
|
part5=${arg:11:2}
|
|
|
|
case "$part1" in
|
|
zgq )
|
|
buildstr="$arg = $zgq -" ;;
|
|
zgb )
|
|
buildstr="$arg = $zgb -" ;;
|
|
esac
|
|
|
|
# 1-offs
|
|
case "$part2" in
|
|
bfg )
|
|
buildstr="$buildstr DoomBFG -" ;;
|
|
# xym )
|
|
# buildstr="$buildstr $xym -" ;;
|
|
# oem )
|
|
# buildstr="$buildstr $oem -" ;;
|
|
* )
|
|
# Fallthru
|
|
# REF: https://unix.stackexchange.com/questions/23111/what-is-the-eval-command-in-bash
|
|
# see if section EVALuates to already-defined var, populate if result = not blank
|
|
|
|
eval tmptest='$'$part2; [ "$tmptest" = "" ] ||buildstr="$buildstr $tmptest -"
|
|
esac
|
|
|
|
# case "$part3" in
|
|
# dbe )
|
|
# buildstr="$buildstr $dbe -" ;;
|
|
# mgm )
|
|
# buildstr="$buildstr $mgm -" ;;
|
|
# esac
|
|
|
|
eval tmptest='$'$part3; [ "$tmptest" = "" ] ||buildstr="$buildstr $tmptest -"
|
|
|
|
# case "$part4" in
|
|
# sb )
|
|
# buildstr="$buildstr $sb -" ;;
|
|
# de )
|
|
# buildstr="$buildstr $de -" ;;
|
|
# np )
|
|
# buildstr="$buildstr $np -" ;;
|
|
# cs )
|
|
# buildstr="$buildstr $cs -" ;;
|
|
# pr )
|
|
# buildstr="$buildstr $pr -" ;;
|
|
# qa )
|
|
# buildstr="$buildstr $qa -" ;;
|
|
# esac
|
|
|
|
eval tmptest='$'$part4; [ "$tmptest" = "" ] ||buildstr="$buildstr $tmptest -"
|
|
|
|
buildstr="$buildstr $part5"
|
|
echo "$buildstr"
|
|
|
|
exit 0;
|
|
}
|
|
|
|
function transamazon () {
|
|
# arg=aw1xymmgmss99
|
|
# 111
|
|
# 0123456789012
|
|
[ $debugg -gt 0 ] && echo ${arg:0:3}'<1 '${arg:3:3}'<2 '${arg:6:3}'<3 '${arg:9:2}'<4 '${arg:11:2}'<5 '
|
|
#aw1<1 xym<2 mgm<3 ss<4 01<5
|
|
|
|
part1=${arg:0:3}
|
|
part2=${arg:3:3}
|
|
part3=${arg:6:3}
|
|
part4=${arg:9:2}
|
|
part5=${arg:11:2}
|
|
|
|
case "$part1" in
|
|
aw1 )
|
|
buildstr="$arg = $aw1 -" ;;
|
|
esac
|
|
|
|
# case "$part2" in
|
|
# adm )
|
|
# buildstr="$buildstr $adm -" ;;
|
|
# xym )
|
|
# buildstr="$buildstr $xym -" ;;
|
|
# cfj )
|
|
# buildstr="$buildstr $cfj -" ;;
|
|
# esac
|
|
|
|
eval tmptest='$'$part2; [ "$tmptest" = "" ] ||buildstr="$buildstr $tmptest -"
|
|
|
|
# 1-offs
|
|
case "$part3" in
|
|
# mgm )
|
|
# buildstr="$buildstr $mgm -" ;;
|
|
# app )
|
|
# buildstr="$buildstr $app -" ;;
|
|
web )
|
|
buildstr="$buildstr Webserver -" ;;
|
|
* )
|
|
# Fallthru
|
|
eval tmptest='$'$part3; [ "$tmptest" = "" ] ||buildstr="$buildstr $tmptest -"
|
|
|
|
esac
|
|
|
|
# case "$part4" in
|
|
# sb )
|
|
# buildstr="$buildstr $sb -" ;;
|
|
# de )
|
|
# buildstr="$buildstr $de -" ;;
|
|
# np )
|
|
# buildstr="$buildstr $np -" ;;
|
|
# cs )
|
|
# buildstr="$buildstr $cs -" ;;
|
|
# ss )
|
|
# buildstr="$buildstr $ss -" ;;
|
|
# pr )
|
|
# buildstr="$buildstr $pr -" ;;
|
|
# te )
|
|
# buildstr="$buildstr $te -" ;;
|
|
# esac
|
|
|
|
eval tmptest='$'$part4; [ "$tmptest" = "" ] ||buildstr="$buildstr $tmptest -"
|
|
|
|
buildstr="$buildstr $part5"
|
|
echo "$buildstr"
|
|
exit 0;
|
|
}
|
|
|
|
function transonprem () {
|
|
# arg=chdbadmp99
|
|
# 1
|
|
# 01234567890
|
|
[ $debugg -gt 0 ] && echo ${arg:0:2}'<1 '${arg:2:2}'<2 '${arg:4:3}'<3 '${arg:7:1}'<4 '${arg:8:2}'<5 '
|
|
#ch<1 db<2 adm<3 p<4 01<5
|
|
|
|
part1=${arg:0:2}
|
|
part2=${arg:2:2}
|
|
part3=${arg:4:3}
|
|
part4=${arg:7:1}
|
|
part5=${arg:8:2}
|
|
|
|
#[ $debugg -gt 0 ] && echo "part1=$part1..gt=$gt"
|
|
case "$part1" in
|
|
ch )
|
|
buildstr="$arg = $ch -" ;;
|
|
sa )
|
|
buildstr="$arg = $sa -" ;;
|
|
esac
|
|
|
|
# case "$part2" in
|
|
# db )
|
|
# buildstr="$buildstr $db -" ;;
|
|
# lx )
|
|
# buildstr="$buildstr $lx -" ;;
|
|
# esac
|
|
|
|
eval tmptest='$'$part2; [ "$tmptest" = "" ] ||buildstr="$buildstr $tmptest -"
|
|
|
|
# case "$part3" in
|
|
# azs )
|
|
# buildstr="$buildstr $azs -" ;;
|
|
# dbg )
|
|
# buildstr="$buildstr $dbg -" ;;
|
|
# gms )
|
|
# buildstr="$buildstr $gms -" ;;
|
|
# web )
|
|
# buildstr="$buildstr $web -" ;;
|
|
# esac
|
|
|
|
eval tmptest='$'$part3; [ "$tmptest" = "" ] ||buildstr="$buildstr $tmptest -"
|
|
|
|
# case "$part4" in
|
|
# s )
|
|
# buildstr="$buildstr $s -" ;;
|
|
# d )
|
|
# buildstr="$buildstr $d -" ;;
|
|
# t )
|
|
# buildstr="$buildstr $t -" ;;
|
|
# q )
|
|
# buildstr="$buildstr $q -" ;;
|
|
# p )
|
|
# buildstr="$buildstr $p -" ;;
|
|
# h )
|
|
# buildstr="$buildstr $h -" ;;
|
|
# esac
|
|
|
|
eval tmptest='$'$part4; [ "$tmptest" = "" ] ||buildstr="$buildstr $tmptest -"
|
|
|
|
buildstr="$buildstr $part5"
|
|
echo "$buildstr"
|
|
exit 0;
|
|
}
|
|
|
|
|
|
#############################
|
|
# MAIN
|
|
arg="$1"
|
|
# ${string:position:length} ## 0-indexed!
|
|
|
|
prefix3=${arg:0:3}
|
|
prefix2=${arg:0:2}
|
|
|
|
case "$prefix3" in
|
|
zgq )
|
|
transazure ;;
|
|
zgb )
|
|
transazure ;;
|
|
|
|
aw1 )
|
|
transamazon ;;
|
|
esac
|
|
|
|
case "$prefix2" in
|
|
ch )
|
|
transonprem ;;
|
|
sa )
|
|
transonprem ;;
|
|
|
|
* )
|
|
# Fallthru
|
|
failexit 404 "Unknown server prefix - please add to code or correct input argument"
|
|
esac
|
|
|
|
exit;
|
|
|
|
|
|
# REF: https://tldp.org/LDP/abs/html/string-manipulation.html
|
|
# REF: https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html
|
|
|
|
# REF: shared drive AHE Unix Onboarding docs "ServerList.txt" and ServerNamingConventions.txt
|
|
|
|
# Latest updates at top
|
|
|
|
2022.0119 (DONE) IDEA - refactored to use eval, generic version rev
|
|
# REF: https://unix.stackexchange.com/questions/23111/what-is-the-eval-command-in-bash
|
|
This saves A LOT on coding, and nearly no update-in-two-places unless 1-offs
|
|
v1.2
|
|
|
|
$ echo $sname
|
|
ssdsotweb01
|
|
# 1
|
|
#01234567890
|
|
web="Web Server"
|
|
|
|
part=${sname:6:3}; echo $part
|
|
web
|
|
|
|
#eval testt=$web; if blank, NOP OR printit
|
|
eval testt='$'$part; [ "$testt" = "" ] ||echo $testt
|
|
Web Server
|
|
|
|
#=============
|
|
|