Archive for sh/bash

Рекурсивное удаление старых файлов

// Декабрь 4th, 2014 // No Comments » // console, linux, noob, sh/bash

В интернете часто встречается решение:

find * -mtime +3 -exec rm -Rf {} \;

но, с ним есть проблемы, если количество файлов слишком велико, получится очень длинная команда и прервется с ошибкой:

/usr/bin/find: Argument list too long

Верное решение:

find . -mtime +3 -exec rm -Rf {} \;

если нужно удалить подкаталоги включительно:

find . -mtime +3 -exec rm -Rf -- {} \;

Или вот такое, даже более идеологически правильное решение:

find . -mtime +3 | xargs rm -Rf

Свой SNMP OID на примере количества сессий Poptop PPTP

// Ноябрь 16th, 2013 // No Comments » // network monitoring, script, sh/bash, snmp

Подразумевается использование NET-SNMP ver. > 5.4.3 и учет всех PPP сессий NAS сервера.

Интересует привязать скрипт к конкретному OID, в данном случаи будет .1.3.6.1.4.1.9.9.150.1.1.1.0 он же «Number of entries currently in casnActiveTable», в манах по циско собственно и значится как количество активных AAA сессий, т.е. всех-всех авторизованных, но для совместимости в большинстве систем мониторинга используется именно этот OID.

Скрипт считает количество интерфейсов, в названии которых есть «ppp» и выводит в соответсвии с требованием snmp, первая строка адрес OID, вторая тип данных, третья собственно само значение которое будет помещено в OID:

#!/bin/sh
echo ".1.3.6.1.4.1.9.9.150.1.1.1.0"
echo "integer"
ifconfig | grep "ppp" | wc -l

В файл /etc/snmp/snmpd.conf добавить строку:

pass .1.3.6.1.4.1.9.9.150.1.1.1.0 /bin/sh /path/to/scripts/ppp_interface_count.sh

перезапустить snmpd и проверить:

$ snmpget -v2c -c public localhost .1.3.6.1.4.1.9.9.150.1.1.1.0
iso.3.6.1.4.1.9.9.150.1.1.1.0 = INTEGER: 2

Документация:
http://www.net-snmp.org/docs/man/snmpd.conf.html#lbAZ

Сортировка IP адресов в консоле

// Сентябрь 12th, 2013 // No Comments » // console, script, sh/bash

Простой скрипт для сортировки IP адресов в консоли.

Использовать так:

./sortip.sh ./ips

где файл ips должен содержать список IP адресов, каждый с новой строки, например:

192.168.1.20
192.168.1.120
192.168.1.11
192.168.1.21
192.168.1.2
192.168.1.12

Скачать скрипт.

#!/bin/sh

if [ "$#" = "1" ]; then
 sort -t. +0n -1n +1n -2n +2n -3n +3n $1
fi

arping без указания интерфейса

// Май 26th, 2011 // No Comments » // advance, console, Network, sh/bash, Tool

Когда на компьютере очень много интерфейсов, очень не удобно искать через какой нужно сделать arping, а на память запомнить все — чаще всего тоже не возможно… Появилась идея написать скрипт, который сам будет выбирать нужный.

#!/bin/sh

SNET=`echo $1 | awk −F. '{printf "%s\\\.%s\\\.%s\\\.",$1,$2,$3}'`
#freeBSD
IF=`ifconfig |grep "$SNET" −B6 | awk −F: '/flags/ { print $1 }'`
#linux
#IF=`ifconfig |grep "$SNET" −B6 | awk '/Link/ { print $1 }'`

arping −c3 −i $IF $1

использовать просто:

./script.sh 10.5.84.24

ВНИМАНИЕ! Есть некоторые ограничения:

1) предполагается, что адреса разбиты по 24й маске (255.255.255.0)

2) при количестве алиасов больше 5ти, на тех адресах, которые были добавлены с после — не будет работать

как работает и откуда ограничения под катом

(далее…)