January 22

bash сравнение

Для примера приведу скрипт с примером одного из сравнения:

#!/bin/bash

var1=5
var2=35

if [[ "$var1" -eq "$var2" ]]

then

echo "Да, они равны"

else

echo "Нет, они разные"

fi

Тут мы уже использовали знакомые нам операторы if / then / else и [[ ]].

Нам же интересно тут выражение: [[ "$var1" -eq "$var2" ]], а именно "-eq" в нем. Это и есть одна из команд сравнения, в частности “-eq” – равно, то есть “=”.

Вот полный список существующих команд сравнения:

-eq – равно
-ne – не равно
-gt – больше
-ge – больше или равно
-lt – меньше
-le – меньше или равно

Следующие команды используются в двойных круглых скобках (( )). Например:

if (( "$a" < "$b" ))

< меньше <= - меньше или равно > – больше
>= – больше или равно

Следующие команды служат уже не для сравнения чисел, а для сравнения строк:

= – равно
== – тоже равно
!= – не равно
< - меньше > – больше

January 22

Nagios check mailq

/usr/lib64/nagios/plugins/mailq
#!/bin/bash
#
# Plugin to check mailq
# By Vasliy T.
##########################################################
normal=50

use=`exim -bpc`

if [[ "$use" -le "$normal" ]]
then
echo "OK: Mailq is normal, $use emails"
exit 0
else
echo "Critical: $use emails in mailq!"
exit 2
fi

January 22

nagios: monitor cxs_report

/usr/lib64/nagios/plugins/check_cxs_report
#!/bin/bash
#
# Plugin to check cxs report
# By Vasliy T.
##########################################################
normal=0
crit=1

use=`/scripts/cxs_report |grep -i "Fingerprint\|Virus\|Known\|hidden script"|wc -l`

if [[ "$use" -eq "$normal" ]]
then
echo "OK: Malware not Detected"
exit 0
else
echo "Critical: $use viruses found"
exit 2
fi

/etc/nagios/nrpe.cfg

command[cxs]=/usr/bin/sudo /usr/lib64/nagios/plugins/check_cxs_report

/etc/nagios/conf.d/server.cfg
define service{
use generic-service
host_name server
service_description cxs
check_command check_nrpe_1arg!cxs
}

January 4

restart_apache_if_load.sh

#!/bin/bash
load=`/usr/bin/uptime | awk -F 'load average: ' '{print$2}'|awk -F ',' '{print$1}'`
check=`echo "$load>8"|bc`
if [ "$check" -eq "1" ]; then
killall -9 php -v;killall -9 php-cgi -v;killall -9 -u nobody -v; /scripts/restartsrv_httpd; service nginx restart
time=`/bin/date +'%H:%M:%S %Y-%m-%d'`
echo "Apache has been restarted due to load $load at $time" >> /root/restart_apache.log
fi

January 4

Mount a VirtualBox drive image as disk (mount to folder) in 3 ways

1.
yum install ntfs-3g ntfsprogs
VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img

To determine the correct offset you can run:
# fdisk -l image.img

Disk choban.img: 157.3 GB, 157286400000 bytes, 307200000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x3a3a2d46

Устр-во Загр Начало Конец Блоки Id Система
ubuntu.img1 * 63 39037949 19518943+ 7 HPFS/NTFS/exFAT
ubuntu.img2 39037950 307199999 134081025 5 Extended
ubuntu.img5 39038013 307194929 134078458+ 7 HPFS/NTFS/exFAT

For example if start is 128 and sector size is 512 then the offset is 65536. (128*512=65536)
mount -o loop,offset=32256 ubuntu.img /mnt/image/

2.
apt-get install virtualbox-fuse
vdfuse -a -f /path-to-vdi-file /mnt
mount -o loop /mnt/Parition1 /mountpoint

3.
apt-get install qemu
rmmod nbd
modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 drive.vdi
mount /dev/nbd0p1 /mnt
qemu-nbd -d /dev/nbd0