Иногда нужно например удалить все правила IPTables и прописать только нужное, так вот для удобства можно указать их в скрипте, после чего выполнить его.
Читать далее «Скрипт быстрой настройки IPTables»Архивы рубрик:Скрипты
Резервное копирование конфигурации Cisco Catalyst 6500
Для теста набросал скрипт автоматического резервного копирования конфигурации Cisco Catalyst 6509-E.
Собственно сам скрипт:
#!/bin/bash
# Backup CISCO config
(
sleep 5
echo "user"
sleep 4
echo "password"
sleep 4
echo "copy running-config tftp:"
sleep 2
echo "192.168.1.4"
sleep 2
echo "cisco.cfg"
sleep 6
echo "exit"
) | telnet 192.168.1.5
mv /srv/tftp/cisco.cfg /backups/devices/cisco/`date +%Y-%m-%d`_cisco.cfg
find /backups/devices/cisco/ -type f -mtime +30 -exec rm {} \;
Содержимое скрипта добавим например в файл backup_cisco.sh и добавим его в cron, добавив указанную ниже строку в файл /etc/crontab:
0 2 * * * root /backups/scripts/backup_cisco.sh > /dev/null 2>&1
Файл можно открыть например в текстовом редакторе nano (Ctrl+X для выхода, y/n для сохранения или отмены изменений):
sudo nano /etc/crontab
Скрипт выполняет подключение по telnet к 192.168.1.5 и копирует конфигурацию на tftp сервер 192.168.1.4, потом файл перемещается в удобную директорию для хранения.
Последняя строчка в скрипте удаляет файлы старее 30 дней.
Как запустить tftp сервер смотрите в моих статьях: Установка и настройка TFTP сервера в Ubuntu или Запуск TFTP сервера на Windows.
Смотрите также: Использование и настройка CRON.
Резервное копирование на Yandex диск
Приведу пример скрипта для создания резервных копий на 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();
?>