meta data for this page
Különbségek
A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
| Előző változat mindkét oldalonElőző változatKövetkező változat | Előző változat | ||
| shell:oravm:ovm_cpu_pin_map [2020/01/27 10:00] – ↷ Page moved from shell:ovm_cpu_pin_map to shell:oravm:ovm_cpu_pin_map admin | shell:oravm:ovm_cpu_pin_map [2021/05/07 10:04] (aktuális) – admin | ||
|---|---|---|---|
| Sor 4: | Sor 4: | ||
| #!/bin/bash | #!/bin/bash | ||
| ##################################################### | ##################################################### | ||
| - | # OVM CPU PIN MAP v1.0 | + | # OVM CPU PIN MAP v1.6 |
| # Keszitette: Agoston Peter | # Keszitette: Agoston Peter | ||
| ##################################################### | ##################################################### | ||
| - | CPU_SUM_WARN=2 | + | CPU_SUM_WARN=5 |
| CPU_SUM_CRIT=10 | CPU_SUM_CRIT=10 | ||
| OVM_ADMIN_PASSWD=PAssword123 | OVM_ADMIN_PASSWD=PAssword123 | ||
| - | OVMC="/ | + | OVMC="/ |
| + | OVS_SSH_KEY=" | ||
| SSHC=" | SSHC=" | ||
| + | WORKDIR=$(dirname $(readlink -f $0)) | ||
| + | FULL_BACKUP_FILE=" | ||
| + | LOGFILE=" | ||
| if [[ -z " | if [[ -z " | ||
| - | | + | read -s -p "Add meg az oracle VM Manager admin jelszavat: " OVM_ADMIN_PASSWD |
| fi | fi | ||
| + | cd $WORKDIR | ||
| + | # A terminálba SSH-n bejelentkezett user | ||
| + | if egrep -q " | ||
| + | ACT_TTY=$(ps -ef | awk "/ | ||
| + | else | ||
| + | ACT_TTY=$(tty|grep -oP ' | ||
| + | fi | ||
| + | SSH_USER=$(w | awk '/ | ||
| red=$' | red=$' | ||
| Sor 26: | Sor 38: | ||
| gry=$' | gry=$' | ||
| end=$' | end=$' | ||
| + | |||
| function fejlec { | function fejlec { | ||
| Sor 54: | Sor 67: | ||
| } | } | ||
| - | echo Kulcs ellenorzese a CLI-hez... | + | function show_parameters { |
| + | echo " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e "Pl: $0 -c rgzd@aegon.hu${end}" | ||
| + | } | ||
| + | |||
| + | [[ ! $@ =~ -(c|-check) ]] && | ||
| if [[ $(ssh -o StrictHostKeyChecking=no -o BatchMode=yes -o ConnectTimeout=5 admin@localhost -p 10000 list manager |grep -c Success) -eq 0 ]]; then | if [[ $(ssh -o StrictHostKeyChecking=no -o BatchMode=yes -o ConnectTimeout=5 admin@localhost -p 10000 list manager |grep -c Success) -eq 0 ]]; then | ||
| echo "Nincs SSH kulcs a CLI-hez, legeneralom:" | echo "Nincs SSH kulcs a CLI-hez, legeneralom:" | ||
| Sor 73: | Sor 95: | ||
| fi | fi | ||
| fi | fi | ||
| + | # | ||
| + | << ' | ||
| + | echo Kulcs ellenorzese az OVS-ekhez... | ||
| + | if [[ -z $SSH_AUTH_SOCK ]]; then | ||
| + | printf " | ||
| + | eval `ssh-agent -s` | ||
| + | echo "Ha jelszó védett az ($OVS_SSH_KEY) kulcsod, akkor azt most add meg: " | ||
| + | ssh-add $OVS_SSH_KEY | ||
| + | else | ||
| + | if [[ $(ssh-add -l 2>& | ||
| + | killall ssh-agent | ||
| + | eval `ssh-agent -s` | ||
| + | fi | ||
| + | if [[ $(ssh-add -l | grep -c " | ||
| + | printf "Ha jelszó védett az ($OVS_SSH_KEY) kulcsod, akkor azt most add meg: " | ||
| + | ssh-add $OVS_SSH_KEY | ||
| + | fi | ||
| + | fi | ||
| + | set +x | ||
| + | komment | ||
| CURR_DIR=$(pwd) | CURR_DIR=$(pwd) | ||
| Sor 80: | Sor 122: | ||
| exit 1 | exit 1 | ||
| fi | fi | ||
| - | + | SCRIPT_VER=$(grep -oP ' | |
| - | clear | + | |
| - | TERMINAL_COLS=$(/ | + | function pin_map { |
| - | vastag_fejlec " | + | printf |
| - | echo | + | read -e SOME_SERVERS |
| - | echo -e "${yel}Szerverek beolvasasa...${end}" | + | for OVS in ${SOME_SERVERS:=$SERVERS}; do |
| - | MAX_CPU_NUM=0 | + | [[ $($SSHC show server name=" |
| - | while read SERVER; do | + | unset CPU_PIN_SUM |
| - | SERVERS=" | + | |
| - | CPU_NUM=$($SSHC show server name="${SERVER##*:}" | grep -c ' | + | |
| - | | + | |
| - | VM_NUM=$($SSHC show server name=" | + | |
| - | echo -e " | + | |
| - | done <<< | + | |
| - | + | ||
| - | for OVS in $SERVERS; do | + | |
| echo | echo | ||
| CPU_NUM=$($SSHC show server name=" | CPU_NUM=$($SSHC show server name=" | ||
| Sor 104: | Sor 138: | ||
| continue | continue | ||
| fi | fi | ||
| + | |||
| # CPU PIN MAP | # CPU PIN MAP | ||
| + | # VCPU sorszámok | ||
| for CPU in $(seq 0 $(($CPU_NUM-1))); | for CPU in $(seq 0 $(($CPU_NUM-1))); | ||
| - | | + | [[ $(($CPU % ${CORES_PER_SOCKETS[$OVS]})) -eq 0 ]] && separator=" |
| + | printf " | ||
| done | done | ||
| - | echo "| vCPU" | + | echo "$(env printf ' |
| - | for I in $(seq 0 $(($MAX_CPU_NUM-1))); | + | # Elválasztó vonal |
| - | echo "+" | + | for I in $(seq 0 $(($MAX_CPU_NUM-1))); |
| - | while read VM; do | + | [[ $(($I % ${CORES_PER_SOCKETS[$OVS]})) -eq 0 ]] && |
| + | | ||
| + | echo "$(env printf ' | ||
| + | while read VM; do | ||
| VM_NAME=$(echo $VM | grep -oP ' | VM_NAME=$(echo $VM | grep -oP ' | ||
| VM_ID=$(echo $VM | awk ' | VM_ID=$(echo $VM | awk ' | ||
| Sor 126: | Sor 165: | ||
| PINS=$(echo $PINS | sed 's/,/ /g') | PINS=$(echo $PINS | sed 's/,/ /g') | ||
| fi | fi | ||
| + | |||
| for CPU in $(seq 0 $(($CPU_NUM-1))); | for CPU in $(seq 0 $(($CPU_NUM-1))); | ||
| + | [[ $(($CPU % ${CORES_PER_SOCKETS[$OVS]})) -eq 0 ]] && separator=$(env printf ' | ||
| if [[ $(echo $PINS | grep -Pc " | if [[ $(echo $PINS | grep -Pc " | ||
| - | printf "|${whi}## | + | printf "${separator}${whi}## |
| CPU_PIN_SUM[$CPU]=$((${CPU_PIN_SUM[$CPU]}+1)) | CPU_PIN_SUM[$CPU]=$((${CPU_PIN_SUM[$CPU]}+1)) | ||
| else | else | ||
| - | printf "| " | + | printf "${separator}${end} |
| fi | fi | ||
| done | done | ||
| + | |||
| if [[ -z $PINS ]]; then | if [[ -z $PINS ]]; then | ||
| - | echo -e "| ${red}$VM_NAME [${PINS: | + | echo -e "$(env printf ' |
| else | else | ||
| - | echo -e "| ${whi}$VM_NAME [${PINS: | + | echo -e "$(env printf ' |
| fi | fi | ||
| - | | + | done <<< |
| # CPU pin szumma / cpu | # CPU pin szumma / cpu | ||
| - | for I in $(seq 0 $(($MAX_CPU_NUM-1))); | + | for I in $(seq 0 $(($MAX_CPU_NUM-1))); |
| - | echo "+" | + | [[ $(($I % ${CORES_PER_SOCKETS[$OVS]})) -eq 0 ]] && |
| + | done | ||
| + | echo "$(env printf ' | ||
| for CPU in $(seq 0 $(($CPU_NUM-1))); | for CPU in $(seq 0 $(($CPU_NUM-1))); | ||
| + | [[ $(($CPU % ${CORES_PER_SOCKETS[$OVS]})) -eq 0 ]] && separator=" | ||
| if [[ ${CPU_PIN_SUM[$CPU]} -ge $CPU_SUM_CRIT ]]; then | if [[ ${CPU_PIN_SUM[$CPU]} -ge $CPU_SUM_CRIT ]]; then | ||
| - | printf "|${red}%02d${end}" | + | printf "${separator}${red}%02d${end}" |
| elif [[ ${CPU_PIN_SUM[$CPU]} -ge $CPU_SUM_WARN ]]; then | elif [[ ${CPU_PIN_SUM[$CPU]} -ge $CPU_SUM_WARN ]]; then | ||
| - | printf "|${yel}%02d${end}" | + | printf "${separator}${yel}%02d${end}" |
| elif [[ ${CPU_PIN_SUM[$CPU]} -gt 0 ]]; then | elif [[ ${CPU_PIN_SUM[$CPU]} -gt 0 ]]; then | ||
| - | printf "|${grn}%02d${end}" | + | printf "${separator}${grn}%02d${end}" |
| else | else | ||
| - | printf "| " | + | printf "${separator}${end} |
| fi | fi | ||
| done | done | ||
| - | echo "| Pins / vCPU" | + | echo "$(env printf ' |
| done | done | ||
| echo | echo | ||
| + | } | ||
| + | |||
| + | function vm_pin { | ||
| + | printf "Mi a VM neve, amit pinelni szeretnel? " | ||
| + | read INPUT_VM | ||
| + | [[ $INPUT_VM == "" | ||
| + | if [[ $($SSHC show vm name=" | ||
| + | echo "Nincs ilyen VM nalam." | ||
| + | echo "Nyomj ENTER-t a visszatereshez."; | ||
| + | continue; | ||
| + | fi | ||
| + | SERVER=$($SSHC show vm name=" | ||
| + | CPU_NUM=$($SSHC show server name=" | ||
| + | echo "Ehhez a VM-hez az alabbi vCPU keszletet hasznalhatod: | ||
| + | printf " | ||
| + | read INPUT_VCPU_LIST | ||
| + | if [[ $INPUT_VCPU_LIST == "" | ||
| + | $OVMC -u admin -p $OVM_ADMIN_PASSWD -h localhost -v " | ||
| + | else | ||
| + | $OVMC -u admin -p $OVM_ADMIN_PASSWD -h localhost -v " | ||
| + | fi | ||
| + | echo | tee -a $LOGFILE | ||
| + | echo " | ||
| + | } | ||
| + | |||
| + | function vm_pin_query { | ||
| + | printf "Mi a VM neve? " | ||
| + | read INPUT_VM | ||
| + | [[ $INPUT_VM == "" | ||
| + | if [[ $($SSHC show vm name=" | ||
| + | echo "Nincs ilyen VM nalam." | ||
| + | echo "Nyomj ENTER-t a visszatereshez."; | ||
| + | continue; | ||
| + | fi | ||
| + | $OVMC -u admin -p $OVM_ADMIN_PASSWD -h localhost -v " | ||
| + | } | ||
| + | |||
| + | function backup { | ||
| + | printf " | ||
| + | read OVSEK | ||
| + | if [[ -n " | ||
| + | for OVS in $OVSEK; do | ||
| + | [[ $OVS == "" | ||
| + | if [[ $($SSHC show server name=" | ||
| + | echo "$OVS: nincs ilyen OVS nalam." | ||
| + | continue; | ||
| + | fi | ||
| + | read -e -p "A backup fajl neve, abszolut utvonallal: " -i $CURR_DIR/ | ||
| + | if [[ -e " | ||
| + | read -p "A fajl mar letezik. Felulirjuk? [I/N] " VALASZ | ||
| + | [[ " | ||
| + | fi | ||
| + | touch $FILENAME | ||
| + | if [[ $? -ne 0 ]]; then | ||
| + | echo "A fajl valamiert nem irhato." | ||
| + | echo "Nyomj ENTER-t a visszatereshez."; | ||
| + | continue; | ||
| + | else | ||
| + | echo "A $FILENAME fajl irhato." | ||
| + | fi | ||
| + | echo "# | ||
| + | while read VM; do | ||
| + | VM_NAME=$(echo $VM | grep -oP ' | ||
| + | PINS=$($OVMC -u admin -p $OVM_ADMIN_PASSWD -h localhost -v $VM_NAME -c getvcpu | awk -F':' | ||
| + | if [[ $PINS =~ - ]]; then | ||
| + | PIN_TOL=$(echo $PINS | awk -F' | ||
| + | PIN_IG=$(echo $PINS | awk -F' | ||
| + | PINS="" | ||
| + | for I in $(seq $PIN_TOL $PIN_IG); do | ||
| + | PINS=" | ||
| + | done | ||
| + | fi | ||
| + | PINS=$(echo $PINS | sed ' | ||
| + | echo " | ||
| + | done <<< | ||
| + | done | ||
| + | echo -e " | ||
| + | else | ||
| + | backup_all | ||
| + | fi | ||
| + | } | ||
| + | |||
| + | function backup_all { | ||
| + | > | ||
| + | while read OVS; do | ||
| + | while read VM; do | ||
| + | VM_NAME=$(echo $VM | grep -oP ' | ||
| + | PINS=$($OVMC -u admin -p $OVM_ADMIN_PASSWD -h localhost -v $VM_NAME -c getvcpu | awk -F':' | ||
| + | if [[ $PINS =~ - ]]; then | ||
| + | PIN_TOL=$(echo $PINS | awk -F' | ||
| + | PIN_IG=$(echo $PINS | awk -F' | ||
| + | PINS="" | ||
| + | for I in $(seq $PIN_TOL $PIN_IG); do | ||
| + | PINS=" | ||
| + | done | ||
| + | fi | ||
| + | | ||
| + | echo " | ||
| + | done <<< | ||
| + | done <<< | ||
| + | echo -e " | ||
| + | } | ||
| + | |||
| + | function check_pins { | ||
| + | [[ ! -f " | ||
| + | while read OVS; do | ||
| + | while read VM; do | ||
| + | VM_NAME=$(echo $VM | grep -oP ' | ||
| + | PINS=$($OVMC -u admin -p $OVM_ADMIN_PASSWD -h localhost -v $VM_NAME -c getvcpu | awk -F':' | ||
| + | if [[ $PINS =~ - ]]; then | ||
| + | PIN_TOL=$(echo $PINS | awk -F' | ||
| + | PIN_IG=$(echo $PINS | awk -F' | ||
| + | PINS="" | ||
| + | for I in $(seq $PIN_TOL $PIN_IG); do | ||
| + | PINS=" | ||
| + | done | ||
| + | fi | ||
| + | PINS=$(echo $PINS | sed ' | ||
| + | [[ $(grep -c "; | ||
| + | done <<< | ||
| + | done <<< | ||
| + | if [[ -n " | ||
| + | echo "Az alábbi VM-ek CPU pin-je eltér a legutolsó mentésben lévőtől: ${HIBAS_VMS#, | ||
| + | else | ||
| + | echo "OK - $(hostname) CPU PIN check" | ||
| + | fi | ||
| + | } | ||
| + | |||
| + | function restore { | ||
| + | echo -e "A script konyvtaraban ($CURR_DIR/ | ||
| + | grep " | ||
| + | [[ -e " | ||
| + | echo -e ${end} | ||
| + | echo " | ||
| + | read RESTORE_FILENAME | ||
| + | echo -e ${whi} | ||
| + | if [[ ! -e " | ||
| + | echo "A fajl nem letezik." | ||
| + | echo "Nyomj ENTER-t a visszatereshez."; | ||
| + | continue; | ||
| + | fi | ||
| + | if [[ $(grep -c " | ||
| + | echo "Nem megfelelo fejlecu fajl." | ||
| + | echo "Nyomj ENTER-t a visszatereshez."; | ||
| + | continue | ||
| + | fi | ||
| + | cat $RESTORE_FILENAME | ||
| + | echo -e ${end} | ||
| + | read -e -p "Mehet a VM-ek pinelesenek beallitasa a mentesbol? [I/N] " VALASZ | ||
| + | [[ " | ||
| + | echo " | ||
| + | echo -e "VM nev; | ||
| + | echo | tee -a $LOGFILE | ||
| + | grep -v ' | ||
| + | OVS=$(echo $SOR |awk -F';' | ||
| + | VM_NAME=$(echo $SOR |awk -F';' | ||
| + | VCPU_LIST=$(echo $SOR |awk -F';' | ||
| + | echo -e " | ||
| + | printf ${red} | ||
| + | if [[ -z " | ||
| + | $OVMC -u admin -p $OVM_ADMIN_PASSWD -h localhost -v " | ||
| + | else | ||
| + | $OVMC -u admin -p $OVM_ADMIN_PASSWD -h localhost -v " | ||
| + | fi | ||
| + | [[ $? -eq 0 ]] && echo -e " | ||
| + | done 2>&1 | sed -u " | ||
| + | sed -i " | ||
| + | echo >> $LOGFILE | ||
| + | } | ||
| + | |||
| + | # | ||
| + | while [[ " | ||
| + | -b|--backup-all ) | ||
| + | backup_all | ||
| + | exit | ||
| + | ;; | ||
| + | -c|--check ) | ||
| + | shift; ALERT_EMAIL=" | ||
| + | check_pins; | ||
| + | exit | ||
| + | ;; | ||
| + | -h|--help ) | ||
| + | show_parameters; | ||
| + | exit | ||
| + | ;; | ||
| + | esac; shift; done | ||
| + | if [[ " | ||
| + | |||
| + | #################################################### | ||
| + | FUNKCIO=" | ||
| + | while [[ $FUNKCIO =~ [^qQ] ]]; do ############ | ||
| + | FUNKCIO=" | ||
| + | |||
| + | clear | ||
| + | TERMINAL_COLS=$(/ | ||
| + | vastag_fejlec " | ||
| + | |||
| + | echo | ||
| + | echo -e " | ||
| + | MAX_CPU_NUM=0 | ||
| + | SERVERS="" | ||
| + | declare -A CORES_PER_SOCKETS | ||
| + | while read SERVER; do | ||
| + | SERVERS=" | ||
| + | CPU_NUM=$($SSHC show server name=" | ||
| + | if [[ $MAX_CPU_NUM -lt $CPU_NUM ]]; then MAX_CPU_NUM=$CPU_NUM; | ||
| + | VM_NUM=$($SSHC show server name=" | ||
| + | CORES_PER_SOCKETS[${SERVER}]=$($SSHC show server name=" | ||
| + | echo -e " | ||
| + | done <<< | ||
| + | |||
| + | echo | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | FUNKCIO="" | ||
| + | printf ": "; read FUNKCIO | ||
| + | while [[ $FUNKCIO =~ [^tTlLpPmMvVqQ] ]]; do read FUNKCIO; done | ||
| + | case $FUNKCIO in | ||
| + | [tT] ) | ||
| + | pin_map | ||
| + | echo "Nyomj ENTER-t a visszatereshez."; | ||
| + | ;; | ||
| + | [lL] ) | ||
| + | vm_pin_query | ||
| + | echo "Nyomj ENTER-t a visszatereshez."; | ||
| + | ;; | ||
| + | [pP] ) | ||
| + | vm_pin | ||
| + | echo "Nyomj ENTER-t a visszatereshez."; | ||
| + | ;; | ||
| + | [mM] ) | ||
| + | backup | ||
| + | echo "Nyomj ENTER-t a visszatereshez."; | ||
| + | ;; | ||
| + | [vV] ) | ||
| + | restore | ||
| + | echo "Nyomj ENTER-t a visszatereshez."; | ||
| + | ;; | ||
| + | esac | ||
| + | done ############## | ||
| cd $CURR_DIR | cd $CURR_DIR | ||
| + | echo " | ||
| </ | </ | ||