script

multithreaded parallel rsync

find -type d | xargs -I '{}' -P 10 -n1 rsync -a --no-r remote:path/'{}'/ '{}'/

rsync args:
--no-r No recursive

xargs args:
-P 10 Run up to 10 processes at a time.
-n 1 Use 1 argument per command line.

Шпаргалка по bash

[ -a FILE ] Правда елси FILE существует.
[ -b FILE ] Правда елси FILE существует и это специальный блоковый файл.
[ -c FILE ] Правда елси FILE существует и это специальный знаковый файл.
[ -d FILE ] Правда елси FILE существует и это директория.
[ -e FILE ] Правда елси FILE существует.
[ -f FILE ] Правда елси FILE существует и это регулярный файл.
[ -g FILE ] Правда елси FILE существует и установлен SGID бит.
[ -h FILE ] Правда елси FILE существует и это символический ссылка.
[ -k FILE ] Правда елси FILE существует и второй промежуточный бит округления установлен.

remote tar

#get
$ ssh user@host "tar zcf - /var/lib/mysql" > file.tar.gz

#send
$ tar zcf - /var/lib/mysql | ssh user@host "cat > file.tar.gz"

прочитать построчно файл и вывести в STDOUT

прочитать построчно файл и вывести в STDOUT

#!/bin/bash
while read LINE
do
  echo $LINE
done < $FILE

Сколько трафика и пакетов pps проходит через интерфейс

#!/bin/bash
 
IF=$1
 
IF=${IF:=eth0}
 
AWK=/usr/bin/awk
IFCONFIG=/sbin/ifconfig
 
SLEEP=5
 
first=(`$IFCONFIG $IF | $AWK '/RX bytes/ { split($2,a,":"); \
                                            split($6,b,":"); \
                                            print a[2], b[2]}'`)
 
rxp=`$IFCONFIG $IF | $AWK '/RX packets/ { split($2,r,":"); print r[2] }'`
txp=`$IFCONFIG $IF | $AWK '/TX packets/ { split($2,t,":"); print t[2] }'`
 
 
sleep $SLEEP
 
$IFCONFIG $IF | $AWK -v p=$SLEEP -v r=${first[0]} -v t=${first[1]} '/RX bytes/ \

SQLite. Вывести все таблицы

SELECT name FROM sqlite_master
WHERE type='table'
ORDER BY name;

Просмотр MAC адресов на портах свитчей Huawei, Linksys, DLink, Extreme

Каждый день взаимодействуя с тех.поддержкой приходится лазить на свитчи и глядеть маки. В принципе ничего сложного, но хотелось как то упросить себе работу.

Освоил expect и сразу в бой. Написал, опробовал, получилось. Теперь делюсь с Вами, может кому и пригодится.

Сначала создадим пустой файлик
nano ./get_mac.sh

теперь нужно вставить внутрь туда код который ниже:

#!/usr/bin/expect -f
if {[llength $argv] != 2} {
puts "Не верно указаны переменные: ./get_mac 10.5.X.XXX 'port'"
exit 1
}
set ip [lindex $argv 0]
set eth [lindex $argv 1]

Скрипты для привязки клиента на коммутатор и порт в биллинге UTM5

Условия должны быть такие что
1)в биллинге свитчи должны в наименовании иметь домен в виде что то типа
dlink-DES-3526-10.98.98.177.lan
dlink-DES-1100-10.98.98.155.lan
mikrotik-10.98.99.5.lan
huawei-10.98.98.71.lan
в это случае мы сможем идентифицировать фирму и модель коммутатора
2)в бинде необходимо чтобы эти домены резолвились
3)логи freeradius должны быть на этом же серваке где и эти скрипты

скрипт atar_puertos

#!/bin/bash
 
RES_ARCHIVO=/tmp/tomar_mac2
ARCHIVO_LOG=/var/log/atar_puertos.log
# переменная для автоизации в мускуле

скрипт конфигурации коммутатора huawei quidway s2300

#!/usr/bin/expect
 
# initialize host, password, ...
 
if {[llength $argv] != 1} {
  puts "Вызов: config_switch_huawei <ip_address_switch>"
  exit 1
}
set hostname [lindex $argv 0]
set prompt "*$hostname*" 
set DATE [exec date "+%d%m%Y %X"]
package require Expect
 
spawn telnet $hostname
expect Username:
send admin\r
expect Password:
send ****\r
 
expect *
send "clock timezone moskow add 03:00:00\r"
expect *
send "system-view\r"
expect *
send "sysname $hostname\r"
expect $prompt
send "snmp-agent sys-info version v2c\r"
expect $prompt