Статистика по обращениям к nginx в realtime

Иногда бывает полезно увидеть TOP IP адресов с которых идут обращения к вашему backend. Если у вас настроено логивание в nginx access.log, то с помощью такого нехитрого скрипта можно получить самые «активные» IP

tail -f access-api.log | awk {'print $1 ;fflush();'} | logtop

Примеры по tcpdump и ssldump

Снимаем дамп трафика SSL/HTTPS и получаем заголовки

tcpdump -i eth0 -vvv -s 0 -w /tmp/ssl_dump.cap host IP.ADD.RE.SS and port 443
ssldump -A -d -k PATH_TO_SSL_PRIVATE.KEY -nr /tmp/ssl_dump.cap > /tmp/out.txt

Получить POST заголовки

tcpdump -i eth0 -s 0 -A 'tcp dst port 8080 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'

 

Блокируем клавиатуру в Linux

Изначально может показаться, что это очень странная задача, ведь можно просто заблокировать экран. Но если у вас в доме появился маленький ребенок, который то и дело норовит что то нажать, то поговорить, например, по Skype становится нереально. Итак, нужно максимально быстро заблокировать/разблокировать клавиатуру, чтобы маленький человечек не мог нажать/закрыть/удалить что-то во время общения по Skype с родственниками.

baby

Сначала Гугл меня навел меня на мысль использовать для этих целей xinput, но по какой то неведомомй причине моя клавиатура упорно не блокировалась. Дальнейшие поиски решения привели проекту Lock Keyboard for Baby. Проект не развивается уже с 2008, но у меня все заработало «с пол пинка». Итак, скачиваем скрипт и кладем его в папочку /usr/bin:

sudo mv lock-keyboard-for-baby-20080706.pl /usr/bin/lock
sudo chmod +x /usr/bin/lock

Откройте скрипт в любом удобном редакторе в первой строке поменяйте путь до вашего интерпретатора perl. Подсмотеть где он располагается можно используя команду

which perl

Далее в 7 строке (параметр defaultpassword) задайте пароль для разблокировки. После чего сохраните изменения и попробуйте его запустить. Если клавиатура заблокировалась, то все в порядке и блокировку можно вызывать по комбинации клавишь Alf+F2 и введя команду lock.

Под катом итоговый скрипт. Спасибо за внимание.

(далее…)

Обзор PAC Manager под Linux

В который раз я убеждаюсь в «силе» OpenSource. Не в той силе, что OpenSource-программы на много круче закрытых аналогов, а той, что позволяет при определенных знаниях и навыках закрыть баг самостоятельно. Помимо того , что вы получаете бесценный опыт в анализе чужого кода, вы еще и получаете моральное удовлетворение от проделанной работе. Главное не забывайте отправить багфикс автору. В конце заметки мы с вами самостоятельно исправим маленький баг в программе о которой пойдет речь.

В этот раз мне на глаза попался лучший, из всех что я видел, менеджер соединений под Linux. Для тех админов и программистов,у которых их больше трех, без удобного менеджера никуда. Для меня идеалом оказался PAC Manager. Я с легкостью настроил синхронизацию всех серверов через DropBox, да еще и подключил хранитель паролей KeePassX Manager.

По сути это просто продвинутая оболочка к таким типам подключений как:

  • SSH
  • RDP
  • MOSH
  • FTP
  • SFTP
  • SERIAL
  • VNC
  • WEBDAV

На столько продвинутая, что вы можете сами написать скрипты которые будут выполняться, например, перед подключением к серверу(например поднятие VPN-сессии).
pac

(далее…)

Speedtest из командной строки Linux

Часто бывает необходимо проверить скорость интернет соединения на серверах Linux. И самый лучший, на мой взгляд, сервис для этого speedtest.net. Но, во-первых нам нужен будет браузер с поддержкой Flash(а его на серверах *nix обычно не стоит). Поэтому можно воспользоваться замечательным проектом speedtest-cli.

Итак, произведем установку утилиты speedtest-cli в полуавтоматическом режиме. Открываем терминал и пишим следующие команды:

wget http://voip-lab.ru/speedtest
chmod +x ./speedtest
speedtest

При установке понадобятся права root. После того как установка будет произведена, а это обычно занимает несколько секунд, можно запускать speedtest-cli. Вот, например, мой результат в одном из офисов на локальной машине с Linux Mint 17 на борту

speedtest-cli_example.png

Медленное подключение SCP и SSH в Linux

Небольшой фикс для тех кто столкнулся с проблемой медленного установления соединения с системой. Откройте терминал и отключите авторизацию по GSSAPI командой:

echo "GSSAPIAuthentication no" >> ~/.ssh/config

Как сделать резервную копию MySql всех баз данных

Хочу поделится с вами небольшим скриптом для создания резервных копий всех баз данных MySql.

#!/bin/bash

MyUSER="dbuser"
MyPASS="dbpass"
MyHOST="localhost"

MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"

#MYSQL="/usr/local/bin/mysql"
#MYSQLDUMP="/usr/local/bin/mysqldump"

CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"

DEST="./db_backup"

MBD="$DEST"
HOST="$(hostname)"
NOW="$(date +"%Y%m%d")"

FILE=""
DBS=""

# DO NOT BACKUP these databases, delemiter SPACE
IGN="information_schema"

# Get all database list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"

for db in $DBS
do

    skipdb=-1
    if [ "$IGN" != "" ]; then
        for i in $IGN
        do
            [ "$db" == "$i" ] && skipdb=1 || :
        done
    fi

    if [ "$skipdb" == "-1" ] ; then
        MBD="$DEST/$db"    	
        [ ! -d $MBD ] && mkdir -p $MBD || :
        FILE="$MBD/$NOW.sql.gz"
            $MYSQLDUMP --opt -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
        FNUM="$(find $MBD/* | wc -l)"
        if [ $FNUM -ge 0 ] ; then
            find $MBD/* -type f -mtime 20 -exec rm -rf {} \;
        fi
    fi

done

Самый простой backup-скрипт на bash Linux

В этой заметке я покажу пример самого простого бэкап-скрипта на bash Linux.

#!/bin/bash
# This is my backup file - created by 

# here I am setting a time stamp variable which I like to use for logging
TIMESTAMP=`date +%Y%m%d.%H%M`

# here I am setting up the backup directory as a variable
DEST_DIR="/backup/my-backup"

# here I am setting up the directory in which I want to backup, again another variable
SRC_DIR="/home//Documents"

# let's create a variable for the backup file name file
FNAME="MyBackup"

# let's create a variable for the log file, let's also name the log file with the filename and timestamp it
LOG="/home//log/$FNAME-$TIMESTAMP.log"

# start the backup, create a log file which will record any messages run by this script
echo -e "Starting backup of  $SRC_DIR directory" >> ${LOG}

# compress the directory and files, direct the tar.gz file to your destination directory
tar -vczf ${DEST_DIR}/${FNAME}-${TIMESTAMP}.tar.gz ${SRC_DIR} >> ${LOG}

# end the backup, append to log file created by this script
echo -e "Ending backup of  $SRC_DIR" >> ${LOG}

Сохраняем его в удобном для вас каталоге и задаем выполнение по расписанию. Для этого открываем файл /etc/crontab и в конец добавляем строку:

00 00   * * *   root    sh /home/backup/backup1c.sh