Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Shell скрипты

361
19 апреля 2008 года
Odissey_
661 / / 19.09.2006
В данной теме можно публиковать ваши полезные shell скрипты (вводный обзор что это -- здесь).
Таким образом будем создавать этакий сборник рецептов на все случаи жизни.

Если вы не нашли нужный вам скрипт здесь, его можно поискать в книге Менделя Купера. На данный момент наиболее полно shell скриптинг описан в книге - Mendel Cooper. Advanced Bash-Scripting Guide. (электронную версию книги от 02.04.08 можно скачать здесь).

Как оформляем скрипты?
Пишем короткое описание что скрипт делает, при необходимости описание входных и выходных параметров. Можно описать особенности работы.
Приводим код скрипта заключенный в теги [ highlight=bash] [ /highlight] (без пробелов в начале).

Ниже примитивный скрипт в качестве примера оформления.


Backup файлов в текущем каталоге.
Скрипт создает архив всех файлов с расширением *.c и *.h начиная от текущей папки рекурсивно.

[highlight=bash]#!/bin/bash
find . -name "*.[ch]" -print0 | xargs -0 zip backup_`date '+%F'`.gz > /dev/null
[/highlight]
38K
29 мая 2008 года
Panchos111
5 / / 29.05.2008
Простой скрипт, подсчитыват количество символов в параметре и количество параметров

 
Код:
for i in ` seq $#`
do
echo "$1 = `expr "$1" : '.*'`"
shift
done
echo obshee chislo: $i
502
10 ноября 2008 года
Jail
550 / / 30.01.2007
Описание контента по директориям:
Shell/dual_isp.sh/dual_isp.sh - скрипт для поддержки избыточности интернет канала на сервере. Т.е. при отваливании одного типа интернет соединения в работу задействуется другой. Разработано под OpenBSD, но при наличии рук, растущих из нужного места, можно переделать под любой Linux/Unix.
Shell/iptables/iptables_init.sh - скриптик для автоматической настройки iptables использующий blacklist.txt и whitelist.txt списки хостеров.
Shell/ksh/fun - всякие веселости, показывающие одновременно и легкость и мощь командного интерпретатора Korn Shell.
Shell/ksh/tests - "тестовые" скриптики разработанные на Solaris. Так же при наличии рук все легко переделывается.
Shell/rsync/servers_sync/balance-push.sh - выполняет параллельный перенос содержимого с ведущего сервера (localhost) на клиентские и серверные системы (подойдет для Linux и BSD систем. Для систем Solaris существуют более вразумительные средства, framework's).
Shell/rsync/snapshots/daily_snapshot_rotate.sh - Утилита для создания ежедневных мгновенных копий состояния файловой системы (так же Linux/BSD. Для Solaris бессмысленная трата времени =).
Shell/rsync/snapshots/make_snapshot.sh - Утилита для создания мгновенных копий состояния файловой системы с циклическим сдвигом (тоже Linux/BSD).
2
10 ноября 2008 года
squirL
5.6K / / 13.08.2003
Цитата: Jail
[
Shell/rsync/snapshots/daily_snapshot_rotate.sh - Утилита для создания ежедневных мгновенных копий состояния файловой системы (так же Linux/BSD. Для Solaris бессмысленная трата времени =).


не понял глубокого смысла, при наличии UFS2 snapshots иt snapshot'ов в LVM

502
11 ноября 2008 года
Jail
550 / / 30.01.2007
Цитата: squirL
не понял глубокого смысла, при наличии UFS2 snapshots иt snapshot'ов в LVM


Смысл достаточно поверхностен. Это ведь топик про Shell скриптинг, а UFS2 snap и LVM snap's этож сам понимаешь другое дело.
Да и UFS2 snapshots и snapshot'ы в LVM смогут разве обеспечить "кросплатформенность" снапшотов при переносе их с Linux на BSD и в обратном направлении, если такая задача появиться в парке машин Linux и BSD. А копии сделанные с помощью pax или gzip помогут. Тот скрипт просто растусовывает снапшоты предварительно сделанные утилитой pax или gzip из cron.

9.3K
14 июня 2009 года
iridum
175 / / 26.08.2007
Запасной вариант на случай, если всё же программа вылетит, но надо обеспечить её работу, конечно, нужно зделать так, чтобы никаких вылетов не было и в помине, но всякое может случиться...

 
Код:
#!/bin/sh
while true ; do
./programm
sleep 1
done


если есть лучшие варианты, пишите
502
15 июня 2009 года
Jail
550 / / 30.01.2007
Цитата: iridum

если есть лучшие варианты, пишите


Конечно есть. Service Management Facility (SMF).
http://www.opensolaris.org/os/community/smf/
http://www.sun.com/bigadmin/content/selfheal/smf-quickstart.jsp

2
16 июня 2009 года
squirL
5.6K / / 13.08.2003
а также - старые, но еще используемые daemontools от djb.
12K
09 февраля 2011 года
davav
64 / / 27.08.2008
есть script который считает контрольные суммы фалов сайта и сравнивает с шаблоном. Чтобы script все время работал я добавил
#!/bin/sh
while true ; do
SCRIPT
done
Но Время от времени необходимо остановить выполнения скрипта. Что и не удается:(
Думал вставить скрипт в cron. Все же задача остается.
как можно решить задачу?
Спосибо
73K
04 июля 2011 года
hedgehog$
1 / / 04.07.2011
Помогите, пожалуйста!!
мне надо написать скрипт, подсчитывающий количество вводимых символов, если их больше 10 вывести ОК.
Спасибо за помощь!
277
05 июля 2011 года
arrjj
1.7K / / 26.01.2011
Код:
echo "Hello! Input your name:";
read b;
c=${#b};
if [ $c -gt 10 ]
then
    echo "Length more than 10";
elif [ $c -eq 10 ]
then
    echo "Length is 10";
else
    echo "Length less than 10"
fi;
echo "Your name is $b length=$c";


или

 
Код:
echo "Hello! Input your name:";
for (( c=1; c<=10; c++ ))
do
    read -n1 tmp;
    name="$name$tmp";
done;
echo "";
echo "Your name is $name";
77K
20 ноября 2011 года
Student-novi4ok
1 / / 20.11.2011
Можете наглядно продемонстрировать пример на массивы:
как записывать в массив слова, допустим я ввожу слова и каждое слово записывается в массив, а потом в цикле вывод каждого слова из массива по отдельности, спасибо.
80K
20 января 2012 года
crimper
2 / / 20.01.2012
ребята помогите пожалуйста скрипт сделать а то я ничего не понимаю.......
. Напишите скрипт для добавления записей в телефонный справочник и их сортировки. Справочник находится в каталоге, маршрут к которому указывается при запуске скрипта с командной строки
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог