tgoop.com/bash_help/829
Create:
Last Update:
Last Update:
fping_chk
— быстрая групповая проверка хостов на доступность
#!/bin/bash
attempts=$(($2+1))
## all working nodes
# {3..19} {22..24} {27..28} {30..38}
declare -a sc613='2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 22 23 24 27 28 30 31 32 33 34 35 36 37 38'
# {3..19} {22.24}
declare -a sc619='3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 22 23 24'
function check_613() {
echo 'Проверка доступности хостов сети '$ip_h 'из '$(uname -n)
for (( count=1; count < $attempts; count++ )); do
echo '-----------[ step' $count'/'$(($attempts-1))' ]' $(date +%d.%m.%y) $(date +%H:%M) '---------'
for ip in $sc613; do
if ! [[ $(fping -qa ${ip_h}.${ip}) ]]; then
echo ${ip_h}.${ip} is dead!
fi
done
done
}
function check_619() {
echo 'Проверка доступности хостов сети '$ip_h 'из '$(uname -n)
for (( count=1; count < $attempts; count++ )); do
echo '-----------[ step' $count'/'$(($attempts-1))' ]' $(date +%d.%m.%y) $(date +%H:%M) '---------'
for ip in $sc619; do
if ! [[ $(fping -qa ${ip_h}.${ip}) ]]; then
echo ${ip_h}.${ip} is dead!
fi
done
done
}
function usage() {
echo 'Укажите номер VLAN (613 или 619) и кол-во попыток!'
}
if [ $# != 2 ]; then
usage
else
case $1 in
613)
ip_h="10.55.126"
check_613;;
619)
ip_h="172.17.5"
check_619;;
*)
usage;;
esac
fi
bulk_tune
— групповое выполнение сценариев на удаленных серверах.Пример запуска: ./bulk_tune В файле playbook_file - сценарий, который должен быть выполнен.
#!/bin/bash
scope=$2
case $scope in
all)
declare -a srvl=(cmp01 cmp02 cmp03 cph01 cph02 cph03 mon01 mon02 ctl01 ctl02 ctl03 s3f01 s3f02 s3f03);;
ceph)
declare -a srvl=(cph01 cph02 cph03);;
s3)
declare -a srvl=(s3f01 s3f02 s3f03);;
ctl)
declare -a srvl=(ctl01 ctl02 ctl03);;
*)
;;
esac
echo ${srvl[@]}
if [ $# != 2 ]; then
echo "payload OR scope not defined!"; exit 0
else
for srv in ${srvl[@]}; do
echo $srv
ssh $srv 'bash -s' < $1;
done
fi
psi_go
— прогон сценариев ПСИ scmd - номер команды, с которой начинаем выполнение, можно задать, как параметр командной строки. В файл .psi_cmd.lst необходимо добавить все запускаемые команды - по одной на строку.#!/bin/bash
# psi_go: Прогон сценариев ПСИ
# created during 21.01.2023
# [email protected]
if [[ -z $1 ]]; then scmd=0; else scmd=$1; fi
declare -a psicmd
# filling command stack from file
readarray -t psicmd < .psi_cmd.lst
sumop=${#psicmd[@]} ## total operations
#for pp in ${psicmd[*]}; do echo $pp; done
function msg1() {
echo -e '\nВыполняем команду'$1
}
function msg2() {
echo -e 'Результат выполнения команды: \n'
}
function step_mark() {
read -p ':---------------->'
}
for (( step=$scmd; step < $sumop; step++ )); do
msg1
echo '# '$step': '${psicmd[$step]}
step_mark
msg2
#${psicmd[$step]} > /tmp/result_psi ## not worked with for
echo ${psicmd[$step]} > /tmp/psi_cmd && /bin/bash /tmp/psi_cmd
cat /tmp/result_psi
done