Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 4934-й день

 Скрипты для системных администраторов *NIX, Полезные скрипты для *NIX

Pilson
Dec 24 2010, 16:59
  
Пост #1



Репутация:   379  
Selachimorpha
****

Группа: Модеры
Сообщений: 2 759
С нами с: 23-May 09


Предлагаю в этой теме делиться различными скриптами для маленьких и не очень нужд, для облегчения жизни себе, любимым drinks.gif
В основном для Bash, PERL, AWK, но также приветствуется и остальное.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
5 Страницы  < 1 2 3 4 > »   
Reply to this topicStart new topic
Ответов(20 - 39)
Pilson
Sep 21 2012, 15:03
  
Пост #21



Репутация:   379  
Selachimorpha
****

Группа: Модеры
Сообщений: 2 759
С нами с: 23-May 09


(fli @ Sep 21 2012, 15:39) Перейти к цитате

Хм, только если удалить файлы из source, в destination они не удаляются.

man rsync
man rsync | grep delete
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
baltazor
Sep 21 2012, 16:58
  
Пост #22

Благодарности: 26426

Репутация:   526  
Смерть - это лишь начало
****

Группа: Модеры
Сообщений: 3 609
С нами с: 5-September 07


(fli @ Sep 21 2012, 15:39) Перейти к цитате

Хм, только если удалить файлы из source, в destination они не удаляются.


через rsync можно синхронизировать рекурсивно: добавление новых файлов, удаление, обновление сущ. файлов

А так, тут хорошо расписано: opennet

Сообщение отредактировал baltazor - Sep 21 2012, 17:01
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Navern
Sep 21 2012, 22:54
  
Пост #23



Репутация:   544  
Aut vincere , aut mori
****

Группа: Пользователи
Сообщений: 2 827
С нами с: 10-October 06


Простенький скрипт бэкапа с отправкой на почту

» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Pilson
Sep 22 2012, 0:24
  
Пост #24



Репутация:   379  
Selachimorpha
****

Группа: Модеры
Сообщений: 2 759
С нами с: 23-May 09


(Navern @ Sep 21 2012, 23:54) Перейти к цитате

Простенький скрипт бэкапа с отправкой на почту

Ну раз на то пошло - вот непростенький biggrin.gif
Есть два конфига:
1. sys_backup.conf
по одному архиву в одну строку
имя архива, директория, кол-во хранимых бекапов, опции (nocompress или encrypt). Можно комментировать строки.
Пример:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «

2. exclude.conf
содержит список всего что НЕ надо архивировать (исключения).
по одному файлу или вайлдкарду в строке
Пример:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «


Если директория - это например уже сжатые архивы, и их нужно просто перенести на бекап сервер - то используется параметр nocompress. Тогда скрипт просто копирует директорию на бекап сервер в таком виде в каком она есть. Если боитесь что по дороге до сервера трафик могут перехватить - ставите параметр encrypt. Используется асинхронное шифрование с помощью gpg через публичный ключ. Расшифровка только через приватный ключ. На данный момент реализовано использование либо шифрования, либо простого переноса директории. В будущем будет вдохновение или необходимость на работе - буду думать как использовать оба параметра одновременно.
Внутри скрипта указывается путь к рабочей директории, куда будут складываться бекапы, путь к конфигам, имя gpg ключа, URL бекап сервера (используется rsync), файл с паролем для бекап сервера (дабы не светить пароль в списке процессов).
Также скрипт умеет дампить mysql (можно отключить - on|off) каждую базу в отдельный файл, архивировать его на лету и шифровать, и лишь конечный результат уже пишется на диск. Т.е. перехватить промежуточный результат не получится. Пароль от mysql также не светится в списке процессов. Он сохранен в конфиге mysql сервера, и на конфиг выставляются владелец root:root и права 600, дабы никто кроме рута не имел к нему доступ.
пример:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «

Также скрипт устанавливает на свою рабочую директорию пользователя root:root и права 600, дабы никто кроме рута не мог туда добраться.
Некоторые моменты внутри мне очень не нравятся - хочется, можно и нужно сделать элегантней, но пока лениво, да и особо некогда.
Скрипт нужно запускаь от рута, и, например, через крон.

Теперь, собственно - сам скрипт:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «

Как создавать связку ключей - приватный и публичный - я тут не описывал. Также не описывал как сконфигурировать на сервере и запустить rsync в режиме демона.
Идеи по функционалу приветствуются smile.gif

Сообщение отредактировал Pilson - Jan 25 2013, 23:15
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
tischenkov
Nov 21 2012, 20:25
  
Пост #25



Репутация:   236  
Cтаршой
**

Группа: Пользователи
Сообщений: 571
С нами с: 3-May 11


Доброго дня.

Есть написанный скрипт для копирования информации с сайта и сохранения в файл .txt. в данном случае это копирование улиц киева. с сайта http://sezamka.kiev.ua/streets.htm

Написанный скрипт не переходит на следующую страницу.

Пожалуйста, подскажите, как правильно сделать. за ранее благодарен.


for count in seq 1 50; do links -dump "http://sezamka.kiev.ua/streets$count.htm" | grep район -A50 | tail -n10 >> addresses.txt; sleep 3;done
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
olexande
Nov 23 2012, 10:28
  
Пост #26



Репутация:   132  
Старожил
****

Группа: Пользователи
Сообщений: 2 025
С нами с: 27-February 07


Попробуйте добиться в ручном режиме "грабинга" любой 1 отдельной страницы.
Потом уже сможете запускать скрипт в цикле, обходя все страницы по очереди.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
$w@mp
Dec 20 2012, 19:50
  
Пост #27



Репутация:   35  
Активист
*

Группа: Пользователи
Сообщений: 201
С нами с: 16-October 07


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

Машина, на которой выполняется скрипт и роутер - разные устройства . До роутера можно достучатся только по телнету.

Сообщение отредактировал $w@mp - Dec 20 2012, 20:21
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
baltazor
Dec 20 2012, 20:00
  
Пост #28

Благодарности: 26426

Репутация:   526  
Смерть - это лишь начало
****

Группа: Модеры
Сообщений: 3 609
С нами с: 5-September 07


Что то типа:


ping -c2 x.x.x.x >/dev/null

if [ $? -eq 0 ]; then
    echo "ok"
else
    /sbin/reboot
fi


Сообщение отредактировал baltazor - Dec 20 2012, 20:00
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
$w@mp
Dec 20 2012, 20:22
  
Пост #29



Репутация:   35  
Активист
*

Группа: Пользователи
Сообщений: 201
С нами с: 16-October 07


(baltazor @ Dec 20 2012, 20:00) Перейти к цитате

Что то типа:


ping -c2 x.x.x.x >/dev/null

if [ $? -eq 0 ]; then
    echo "ok"
else
    /sbin/reboot
fi


Не подходит - машина, на которой выполняется скрипт и роутер - разные устройства . До роутера можно достучатся только по телнету.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Sintorres
Dec 20 2012, 20:26
  
Пост #30

Благодарности: 1861

Репутация:   817  
Старожил
****

Группа: Модеры
Сообщений: 3 549
С нами с: 20-March 06


$w@mp,
Для виндов ТАК

Сообщение отредактировал Sintorres - Dec 20 2012, 20:27
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
$w@mp
Dec 20 2012, 20:32
  
Пост #31



Репутация:   35  
Активист
*

Группа: Пользователи
Сообщений: 201
С нами с: 16-October 07


(Sintorres @ Dec 20 2012, 20:26) Перейти к цитате

$w@mp,
Для виндов ТАК

а для линукса?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Sintorres
Dec 20 2012, 20:45
  
Пост #32

Благодарности: 1861

Репутация:   817  
Старожил
****

Группа: Модеры
Сообщений: 3 549
С нами с: 20-March 06


#!/usr/bin/expect
spawn $env(SHELL)
send -- "telnet 192.168.1.1 23\r"
expect -- "login"
send -- "root\r"
expect -- "Password: "
send -- "Admin\r"
expect -- "#"
send -- "kill -1 `cat /var/run/ppp0.pid`\r"
expect -- "#"

нарыл тут _ttp://www.beta.acorp.ru/forum/viewtopic.php?t=2123&postdays=0&postorder=asc&start=15
тут еще глянь.
http://forum.dlink.ru/viewtopic.php?f=6&t=139290
ПС у меня для виндов есть приблуда, которая пингует и ребутит adsl модем

Сообщение отредактировал Sintorres - Dec 20 2012, 20:48
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Sintorres
Dec 20 2012, 21:01
  
Пост #33

Благодарности: 1861

Репутация:   817  
Старожил
****

Группа: Модеры
Сообщений: 3 549
С нами с: 20-March 06


наверное ЭТО оно
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
$w@mp
Dec 20 2012, 21:31
  
Пост #34



Репутация:   35  
Активист
*

Группа: Пользователи
Сообщений: 201
С нами с: 16-October 07


Спасибо за помощь - все работает clapping.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
nerve
Feb 1 2013, 12:10
  
Пост #35



Репутация:   278  
Постоялец
***

Группа: Пользователи
Сообщений: 1 731
С нами с: 5-January 07


как в одну строчку через пайп сделать svnadmin dump и tar так что бы сразу создавался архив дампа?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Sera
Feb 13 2013, 20:28
  
Пост #36

Благодарности: 105

Репутация:   77  
Дух


Группа: Пользователи
Сообщений: 188
С нами с: 17-March 06


Возможно немного с опозданием, но все таки отвечу на вопрос. Есть вот такие варианты решений:

svnadmin dump /var/lib/svn/repositories/repo_name | split -b 700m - .dump.tar.gz

где split -b 700m выпонит нарезку архивов размером по 700Мб
cat dump.tar.gz* | svnadmin load /var/lib/svn/repositories/repo_name


Вариант с gzip:
svnadmin dump /var/lib/svn/repositories/repo_name | gzip -9 > dump.gz


gunzip -c dump.gz | svnadmin load /var/lib/svn/repositories/repo_name
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
nerve
Feb 14 2013, 9:40
  
Пост #37



Репутация:   278  
Постоялец
***

Группа: Пользователи
Сообщений: 1 731
С нами с: 5-January 07


да, с gzip вариант рабочий, а вот с первым я таки не понял
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
chagarna
Feb 21 2013, 0:16
  
Пост #38



Репутация:   18  
Cтаршой
**

Группа: Пользователи
Сообщений: 840
С нами с: 22-January 13


просьба помочь написать скриптик, последовательность такая:
1) монтируется винт с ext4
2) проходит 1 минута
3) создается папка например 19.03.2013 и в ней подпапки, например 1, 2, 3 и тд
4) с определённых папок копируются данные в эти папки 1 2 3 и тд
5) после окончания копирования проходит 1 минута
6) размонтируется винт

убунта сервак smile.gif решил таким способом бекапить smile.gif только тапками не кидайтесь, пытаюсь сам разобратся, но только пытаюсь..
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
nerve
Mar 7 2013, 17:17
  
Пост #39



Репутация:   278  
Постоялец
***

Группа: Пользователи
Сообщений: 1 731
С нами с: 5-January 07


(Pilson @ Sep 22 2012, 0:24) Перейти к цитате

Идеи по функционалу приветствуются smile.gif

не совсем в тему, но проблема такая:
1) работает, отправляет
NOW=`date +%d%m%y`
mysqldump -u root -p123 db > /root/backup/db.dump
tar czf /root/db$NOW.tar.gz -C /root/backup db.dump
mutt -s "mysql db for $NOW" -a /root/db$NOW.tar.gz -- backup@gmail.com < /root/text.txt

2) работает, отправляет, но gmail не принимает
NOW=`date +%d-%m-%y`
rm -rf /root/backup/*.tar.gz.*
tar cz /etc/mail \
/etc/cron.d /etc/rc.d/init.d /etc/unicorn /etc/yum.repos.d \
/etc/httpd /etc/nginx /etc/sysconfig /etc/ssh \
/etc/fstab /etc/hosts ... | split -d -b 15M - /root/backup/host-$NOW.tar.gz.
mutt -s "host for $NOW part 1" -a /root/backup/host-$NOW.tar.gz.00 -- backup@gmail.com < /root/text.txt
mutt -s "host for $NOW part 2" -a /root/backup/host-$NOW.tar.gz.01 -- backup@gmail.comt < /root/text.txt

2)если делать тоже самое с гзипом - то gmail принимает, но гзип следует по симлинкам в директориях, а это не подходит
gzip -cr /etc/mail \
/etc/cron.d /etc/rc.d/init.d /etc/unicorn /etc/yum.repos.d \
/etc/httpd /etc/nginx /etc/sysconfig /etc/ssh \
/etc/fstab /etc/hosts ... | split -d -b 15M - /root/backup/host-$NOW.gz.
mutt -s "host for $NOW part 1" -a /root/backup/host-$NOW.gz.00 -- backup@gmail.com < /root/text.txt

не пойму, что ему не нравится в tar.gz разбитом сплитом..
хелп!

Сообщение отредактировал nerve - Mar 7 2013, 17:22
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
loky12
Mar 9 2013, 16:57
  
Пост #40



Репутация:   57  
Активист
*

Группа: Пользователи
Сообщений: 245
С нами с: 19-June 07


(nerve @ Mar 7 2013, 17:17) Перейти к цитате

не пойму, что ему не нравится в tar.gz разбитом сплитом..
хелп!

Насколько помню gmail'у не нравится много расширений попробуйте не дописывать tar.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

5 Страницы  < 1 2 3 4 > » 
Reply to this topicStart new topic

 



- Упрощённая версия
Сейчас: 18th September 2019 - 13:11
Сайт не предоставляет электронные версии произведений, а занимается лишь коллекционированием и каталогизацией ссылок, присылаемых и публикуемых на форуме нашими читателями. Если вы являетесь правообладателем какого-либо представленного материала и не желаете чтобы ссылка на него находилась в нашем каталоге, свяжитесь с нами и мы удалим её. Файлы для обмена предоставлены пользователями сайта.