Приведу пример скрипта для создания резервных копий на Yandex диск.
Читать далее «Резервное копирование на Yandex диск»Архивы рубрик:Скрипты
Скрипт архивирования файлов за прошлый месяц
Понадобилось однажды написать скрипт, который должен был каждого первого числа архивировать из одной папки только файлы с датой прошлого месяца, помещать архив в отдельную директорию и удалять файлы которые архивировались.
Читать далее «Скрипт архивирования файлов за прошлый месяц»Скрипт резервного копирования конфигурации DOCSIS ARRIS Cadant C3 CMTS
Собственно вот мой скрипт:
#!/bin/bash # Backup DOCSIS CADANTS config ( sleep 5 echo "user" sleep 5 echo "password" sleep 5 echo "enable" sleep 2 echo "password" sleep 2 echo "copy startup-configuration tftp://192.168.0.1/cadant1.xml" sleep 5 echo "exit" ) | telnet 192.168.0.50 mv /srv/tftp/cadant1.xml /backups/devices/docsis/`date +%Y-%m-%d`_cadant1.xml
Где 192.168.0.50 — cadant, 192.168.0.1 — tftp сервер.
Вы можете добавить скрипт в /etc/crontab для автоматического выполнения (например, каждый день в час ночи):
0 1 * * * root /path/to/script/backup_cadants.sh > /dev/null 2>&1
Выполнение SQL запроса из скрипта в Linux
Понадобилось недавно написать скрипт выполняющий sql запрос в базу MySQL.
Пример содержимого:
# Описание, тут я написал для других что скрипт добавлен в crontab, дабы его не переместили mysql -u ПОЛЬЗОВАТЕЛЬ -pПАРОЛЬ -h 127.0.0.1 -e "UPDATE nika_system.abon SET otkl=0 WHERE depozit > '10' AND (otkl='-1' OR otkl='-2');";
Чтобы скрипт выполнялся автоматически, откроем в любом текстовом редакторе файл crontab (в редакторе nano CTRL+X для выхода и y/n для сохранения или отмены изменений):
sudo nano /etc/crontab
Добавим в него следующую строку:
0 9 * * * root /home/nika/scripts/reset_credit_nika.sh > /dev/null 2>&1
Теперь ежедневно в 9 утра скрипт будет выполняться.
Приведу пример ежедневного автоматического вывода данных из sql таблицы в текстовый файл:
#!/bin/bash mysql -u ПОЛЬЗОВАТЕЛЬ -pПАРОЛЬ -h 192.168.1.1 -s -N -e "SELECT id FROM nika_system.abon WHERE tarif=109;";
В /etc/crontab добавим:
0 8 * * * root /scripts/freektb.sh > /srv/samba/dir/mirazh/$(date +%Y-%m-%d).txt
В целях безопасности лучше не указывать пароль в скриптах, смотрите мою статью — Подключение к MySQL из localhost без ввода пароля
Как преобразовать список IP-адресов в DNS-имена
В Linux преобразовать список IP-адресов в DNS-имена можно например простеньким скриптом.
Для этого создадим пустой файл с расширением .sh, сделаем его исполняемым и добавим в него содержимое:
#!/bin/sh while read ip traf ; do name=`host $ip|awk '{print $NF}'` echo -e "$name\t$ip\t$traf" done >name_ip_traf.lst <ip_traf.lst
Где ip_traf.lst — файл со списком IP-адресов которые необходимо преобразовать в DNS-имена.
Исполняемым его можно сделать командой:
chmod +rwx file.sh
Запускать скрипт необходимо находясь в директории где он находится командой:
./file.sh
Или запустить указав полный путь:
/dir/file.sh
После запуска необходимо подождать некоторое время либо оборвать выполнение комбинацией клавиш CTRL+C.
Bash скрипт перезагрузки оборудования через telnet
Заметил что некоторое дешевое управляемое оборудование, может через несколько дней или недель начать некорректно работать, поэтому возникла идея написать скрипт перезагрузки и добавить его в cron.
Содержимое скрипта:
#!/bin/bash ( sleep 5 echo "admin" sleep 5 echo "password" sleep 5 echo "reboot" sleep 5 echo "y" sleep 5 echo "quit" ) | telnet 192.168.1.10
sleep 5 означает паузу в 5 секунд после каждой команды, это значение оптимально для долго думающего оборудования. К примеру для клиентских коммутаторов D-Link DES-3200 паузу можно вовсе убрать или выставить 1.
Смотрите также:
Использование и настройка CRON
Скрипт удаления старых файлов
Недавно делал что-то типа частного файлообменника, и чтобы не контролировать что пользователи закачивают, добавил скрипт в cron чтобы файлы которым больше 3 дней удалялись автоматически.
Читать далее «Скрипт удаления старых файлов»Как вытащить данные из одного столбца mysql таблицы
Чтобы увидеть данные из одно столбца, достаточно выполнить SQL запрос (где «abcd» — имя столбца в таблице):
SELECT abcd FROM table;
Для экспорта в файл достаточно выполнить команду в Linux:
mysql -u root -e "SELECT abcd FROM database;" -s -N > file.txt
Приведу пример экспорта email адресов из mysql таблицы на http страницу используя PHP.
Мысль сразу пришла такого плана (создаем php файл и открываем его через браузер):
<?php // Соединяемся с mysql сервером mysql_connect("localhost", "USER", "PASSWORD") or die (mysql_error ()); // Выбираем базу данных mysql_select_db("users") or die(mysql_error()); // SQL-запрос $rows = "SELECT * FROM account"; // Выполняем этот SQL-запрос $d = mysql_query($rows); // Каждый ряд становится массивом ($row) с помощью функции mysql_fetch_array while($row = mysql_fetch_array($d)) { // Выводим значения столбца email echo $row['email'] . "<br />"; } // Закрываем соединение с базой данных mysql_close(); ?>
Вариант резервного копирования в Windows (winrar+bat)
Вариант резервного копирования файлов с помощью winrar в Windows:
Создадим файл с расширением *.bat и добавам в него содержимое:
set rar_path="C:\Program Files\WinRAR\rar.exe" set backup_path=D:\Backup\ set archive_name=backup-file_all -ag_DD.MM.YYYY %rar_path% a -r -m2 -dh -ow -ppassword %backup_path%%archive_name% D:\files\*.*
Или можно указать список файлов и категорий для архивирования в текстовом файле:
set rar_path="C:\Program Files\WinRAR\rar.exe" set backup_path=D:\Backup\ set archive_name=backup-file_all -ag_DD.MM.YYYY set backup_list=@D:\Backup\backuplist.txt %rar_path% a -r -m2 -dh -ow -ppassword %backup_path%%backup_list%%archive_name%
Ключи winrar:
-ac Снять атрибут «архивный» после архивации или извлечения
-ad Добавить к пути назначения имя архива
-af Указать формат архива
-ag[формат] Добавить к имени архива текущую дату и время
-ao Добавить файлы с установленным атрибутом «архивный»
-ap Установить путь внутри архива
-as Синхронизировать содержимое архива
-av Добавить электронную подпись
-av- Запретить добавление/проверку электронной подписи
-cfg- Игнорировать профиль по умолчанию и переменную окружения
-cl Преобразовать имена файлов в нижний регистр
-cu Преобразовать имена файлов в верхний регистр
-df Удалить файлы после архивации
-dh Открывать совместно используемые файлы
-ds Не сортировать файлы при архивации
-ed Не добавлять пустые папки
-en Не добавлять блок «конец архива»
-ep Исключить пути из имён
-ep1 Исключить из пути базовую папку
-ep2 Сохранять полные пути файлов
-ep3 Сохранять полные пути, включая букву диска
-e[+] Задать исключение или включение файлов из/в обработку по маске атрибутов
-f Освежить имеющиеся файлы
-hp[пароль] Шифровать и данные, и заголовки файлов
-iadm Запрашивать административный доступ для SFX-архива
-ibck Запустить WinRAR как фоновый процесс в системном лотке
-ieml[.][адрес] Отправить архив по электронной почте
-iicon<имя > Указать значок для SFX-модуля
-iimg Указать логотип для SFX-модуля
-ilog[имя] Записывать протокол ошибок в файл
-inul Не выводить сообщения об ошибках
-ioff Выключить компьютер
-k Заблокировать архив
-kb Сохранять на диске файлы, извлечённые с ошибками
-m Установить метод сжатия
-mc Указать дополнительные параметры сжатия
-md Установить размер словаря
-ms[список] Указать типы файлов для архивирования без сжатия
-mt Установить число потоков
-n Включить в обработку только указанный файл
-n@ Включить в обработку только файлы, указанные в файле-списке
-oc Установить NTFS-атрибут «сжатый»
-or Переименовывать файлы автоматически
-os Сохранить потоки NTFS
-ow Обработать информацию о правах доступа к файлам
-o+ Перезаписывать существующие файлы
-o- Не перезаписывать существующие файлы
-p[пароль] Установить пароль
-r Обрабатывать вложенные папки
-r0 Обрабатывать вложенные папки по шаблону
-ri Установить приоритет и время простоя
-rr[N] Добавить информацию для восстановления
-rv[N] Создать тома для восстановления
-s Создать непрерывный архив
-sc[объекты] Указать набор символов (и объекты)
-se Создать непрерывные группы, используя расширения файлов
-sfx[имя] Создать самораспаковывающийся архив
-sl Обрабатывать файлы размером меньше указанного
-sm Обрабатывать файлы размером больше указанного
-sv Создать независимые непрерывные тома
-sv- Создать зависимые непрерывные тома
-s- Запретить создание непрерывных архивов
-t Протестировать файлы после архивирования
-ta Обрабатывать файлы, изменённые после указанной даты
-tb Обрабатывать файлы, изменённые до указанной даты
-tk Сохранять исходное время архива
-tl Установить время архива по самому новому файлу
-tn Обрабатывать файлы не старее, чем указанный период времени
-to Обрабатывать файлы более старые, чем указанный период времени
-ts Сохранить/восстановить время файлов (модификации, создания, последнего доступа)
-u Обновить файлы
-v[k |b|f|m|M|g|G] Создать многотомный архив
-vd Очищать сменный диск перед архивацией на него
-ver[n] Управление версиями файлов
-vn Использовать старую схему именования томов
-vp Делать паузу перед каждым томом
-x<файл > Не обрабатывать указанный файл
-x@<файл-список > Не обрабатывать файлы, указанные в файле-списке
-y Подразумевать ответ «Да» на все запросы
-z Прочитать комментарий архива из файла
— Прервать дальнейший поиск ключей в командной строке
Рестартер TrinityCore под Linux
Приведу пример примитивного рестартера TrinityCore под Linux:
Читать далее «Рестартер TrinityCore под Linux»