1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # Optional variables for a backup script MYSQL_USER="root" MYSQL_PASS="password" BACKUP_ROOT=/var/backups/mysql; BACKUPS=2; BACKUP_DIR="$BACKUP_ROOT/$(date +%Y-%m-%dT%H_%M_%S)"; # Create folders test -d "$BACKUP_DIR" || mkdir -p "$BACKUP_DIR" # Get the database list, exclude information_schema for db in $(mysql -B -s -u $MYSQL_USER --password=$MYSQL_PASS -e 'show databases' | grep -v information_schema) do # dump each database in a separate file mysqldump -u $MYSQL_USER --password=$MYSQL_PASS "$db" | gzip > "$BACKUP_DIR/$db.sql.gz" done # backup cleanup ls "$BACKUP_ROOT" \ | head -n$(expr $(ls "$BACKUP_ROOT" | wc -l) - $BACKUPS) \ | while read in; do rm -rf "$BACKUP_ROOT/$in"; done |
Клочки бумаги, на которых обычно ведутся записи, имеют обыкновение теряться, если их вовремя не подшить. Мысли на тему линукса, а может и не только его, - чтоб не забыть.
Показаны сообщения с ярлыком bash. Показать все сообщения
Показаны сообщения с ярлыком bash. Показать все сообщения
2016-09-08
Бэкап всех баз MySQL с ротацией (удалением старых) бэкапов
Скрипт делает дампы всех БД сервера, сохраняя в папки именованные по дате и времени создания. Сохраняются последние N (переменная $BACKUPS) бэкапов.
2016-04-01
Простейший пингер с логированием под bash
Собственно пингуем, ведем лог и это все что надо )
#!/bin/bash if [[ -z "$1" ]]; then echo "Please enter IP, ex.: $0 127.0.0.1" exit else echo "Logfile: /tmp/ping_$1" fi while true do while ! ping -c1 $1 &>/dev/null do echo "Ping Fail - `date`" >> /tmp/ping_$1 done echo "Host Found - `date`" >> /tmp/ping_$1 sleep 1 done
2016-03-08
Как по порядку переименовать файлы, скачанные wget по списку
Решил скачать комикс из вконтакта, полученный список (listfile.txt) для скачивания имел примерно такой вид:
Собственно, после скачивания wget'ом (wget -i listfile.txt) я получил неудобоваримый набор файлов с рандомными названиями, и мне захотелось переименовать их в вид 001.jpg 002.jpg, согласно порядку, в котором они были в исходном файле. Хорошенько попотев, получил такой однострочник:
Или, для читаемости, так:
Немного пояснений:
https://pp.vk.me/c307313/v307313650/1e94/bj560KCwYY4.jpg https://pp.vk.me/c307313/v307313650/1692/yFPMOuXHLvw.jpg ... https://pp.vk.me/c307313/v307313650/1e7b/d-MXTKSZr34.jpg https://pp.vk.me/c307313/v307313650/1e84/Oj_DhH9Fbvw.jpg
Собственно, после скачивания wget'ом (wget -i listfile.txt) я получил неудобоваримый набор файлов с рандомными названиями, и мне захотелось переименовать их в вид 001.jpg 002.jpg, согласно порядку, в котором они были в исходном файле. Хорошенько попотев, получил такой однострочник:
cat ./listfile.txt | tr -d '\r' | while read url; do n=$((n+1)); file="`echo $url| sed -e 's/.*\///'`"; newfile="`printf \"%03d\" $n`"; mv ./"$file" ./"$newfile".jpg ; done |
Или, для читаемости, так:
cat ./listfile.txt | tr -d '\r' | while read url; do n=$((n+1)); file="`echo $url| sed -e 's/.*\///'`"; newfile="`printf \"%03d\" $n`"; mv ./"$file" ./"$newfile".jpg ; done
Немного пояснений:
tr -d '\r' - исходный файл у меня был виндовосформирован, поэтому в каждой строке там был лишний символ перевода коретки, который мешался
while read url - стандартный цикл построчного чтения файла в переменную url
n=$((n+1)) - переменная n для нового имени файлов, которая будет прирастать на единицу
file="`echo $url| sed -e 's/.*\///'`" - старое имя файла, которое получается путем обрезания левой части ссылки
newfile="`printf \"%03d\" $n`" - новое имя файла, которое состоит из переменной n сформатированной в трехсимвольное отображение (1,2,3 -> 001, 002, 003).
file="`echo $url| sed -e 's/.*\///'`" - старое имя файла, которое получается путем обрезания левой части ссылки
newfile="`printf \"%03d\" $n`" - новое имя файла, которое состоит из переменной n сформатированной в трехсимвольное отображение (1,2,3 -> 001, 002, 003).
2009-05-13
Как в linux быстро и просто проверить, жив ли сервер?
Озаботился вопросом — как проверить на живость сервер и сервисы на нем? В моем случае это ряд цисок, файлсервера, да сервак Exchange. Разворачивать какую-то систему слежения там, где достаточно пинга да проверки портов, показалось слишком сложным. Бродя по инету наткнулся на довольно просто скриптец, использующий nmap для проверки открытых портов. Слегка попилив пришел к следующему:
Итого: легко и просто пиная скрипт cron'ом, мы проверяем живы ли наши сервера, и в случае абзаца наблюдаем в трее кто потерялся.
ЗЫ: А для раскраски синтаксиса был использован сервис http://highlight.hohli.com/
#!/bin/bash
# оригинальный скрипт: http://habrahabr.ru/sandbox/2096/
#
# Для работы требуются: nmap, libnotify-bin. Также
# необходимо создать рядом со скриптом файлик "servers",
# содержащий инфу об интересующих серверах в виде
# IP:PORT COMMENT, например:
#
# 192.168.310.254:443 1й снизу в левой стойке
# 192.168.410.254:80 вторая стойка, 3й снизу
#
# хватаем по строчке из списка, выхватываем часть до комментария,
# преобразуем двоеточие в " -p " и подсовываем nmap'у. Если последний
# не находит открытый порт на айпишнике — айпишник с портом записываются
# в файл serverlist (создается рядом со скриптом)
#
cat servers | while read line; do nmap `echo "${line}" | awk '{print($1)}'| sed -e 's/:/ -p /'` | grep -q "/tcp *open" || echo "${line}"; done > serverlist;
#
# Если serverlist не пуст, скидываем инфу о времени
# и инфу из serverlist в файл log (создается рядом со скриптом)
#
if (!( [ -z $(cat serverlist) ])); then
echo $DATENOW >> log
cat serverlist >> log
#
# для каждого айпишника из serverlist находится полная строка
# в servers (с комментарием). В начало каждой втыкается
# смайлег ಠ_ಠ, а в конце делается дополнительный перенос.
# Все это ложится в файл serverlist1, содержимое которого
# отправляется как системное уведомление.
#
cat serverlist| while read megaline; do grep "${megaline}" "servers"| sed -e 's/^/ಠ_ಠ /' | sed -e 's/$/\n/' ; done > serverlist1;
notify-send --expire-time=100000 АТАС-АТАС!! "`cat serverlist1`"
fi
exit
Итого: легко и просто пиная скрипт cron'ом, мы проверяем живы ли наши сервера, и в случае абзаца наблюдаем в трее кто потерялся.
ЗЫ: А для раскраски синтаксиса был использован сервис http://highlight.hohli.com/
Подписаться на:
Сообщения (Atom)