Изменения

Перейти к: навигация, поиск

~s - скрипты-утилиты

441 байт добавлено, 23:12, 2 марта 2011
м
Нет описания правки
На данной странице описаны наиболее применимые из них, остальные можно увидеть по [{{SVN|vitalif/trunk/scripts/}} ссылке].
 
= Демоны =
 
[[rupedia:Daemon|Демоны]] и около-демонические скрипты.
== [{{SVN|vitalif/trunk/scripts/logautocommit.pl|co}} logautocommit.pl] ==
Ещё может оказаться полезным версионировать схемы всех баз данных, но это уже частично относится к разработке.
 
== [{{SVN|vitalif/trunk/scripts/cpshift.c|co}} cpshift.c] ==
 
Простая C-программка для копирования кусков файлов. Возможно, велосипед, но с первого взгляда я такой стандартной unix-тулы не нашёл. Есть, конечно, dd, но он работает в ПИЦОТ раз медленнее, потому что приходится говорить bs=1 (чтение и запись по 1 байту).
 
Компилировать и использовать тривиально:
 
gcc -o cpshift cpshift.c
./cpshift --skip SKIP_BYTES --size SIZE_BYTES infile outfile
 
SKIP_BYTES — смещение от начала входного файла, SIZE_BYTES — максимальный размер копируемой области.
 
== [{{SVN|vitalif/trunk/scripts/GoogleSrchUIMod.js|co}} GoogleSrchUIMod.js] ==
 
[http://www.opera.com/docs/userjs/ User JS] для Opera, направленный на возвращение Гугла к прежнему (старому) виду:
* '''без грёбаной панельки''' слева — она показывается свёрнутой, её можно развернуть
* без рекламы справа
* без javascript’ов, которые:
** подменяют ссылки на сайты ссылками на редиректы так, что их не скопипастишь
** '''противодействуют User JS’ам!'''
** ставят какие-то таймеры, замеряют времена выполнения и делают ещё фиг знает что троянистое
* с результатами поиска, выровненными по левому краю, а не по центру — удобно для широких мониторов
* со ссылочкой «Только на русском» под строкой поиска
 
Основан на [http://shirish.thekamathfamily.com/pages/hack-opera-userjs-to-get-back-the-old-google-search-ui/ Opera UserJS To Get Back The Good Ol’ Google Search UI].
 
Устанавливать следующим образом — скачать по [{{SVN|vitalif/trunk/scripts/GoogleSrchUIMod.js|co}} ссылке], создать любую папочку под свои юзер-скрипты, положить туда скачанный файл, прописать её в <tt>Preferences &rarr; Advanced &rarr; Content &rarr; JavaScript options &rarr; User JavaScript folder</tt>. Наслаждаться.
== FastPerl ==
* {{SVN|vitalif/trunk/scripts/gcauthcd.pl|markup}}
 
== gamin.pl ==
 
'''Пригодный для автоматизации''' скрипт для мониторинга изменений файлов и директорий с помощью модуля {{CPAN|Sys::Gamin}} (использующего реализацию FAM’а (File Alternation Monitor) «libgamin») версии 0.1. События выводятся на STDOUT в две колонки. Первая — имя события (одно из: change, delete, start_exec, stop_exec, create, move, ack, exist, end_exist), вторая — имя файла. К имени события может быть дописаны суффиксы:
* «|D» = «путь является каталогом и запрошен нерекурсивный режим»
* «|M» = «запрошен рекурсивный режим, запускаю мониторинг каталога»
* «|C» = «путь удалён, отменяю мониторинг каталога»
 
Соответственно, скрипт можно использовать в каких-нибудь скриптах (шелл или не очень) как монитор ФС, читать и парсить его вывод, и действовать по ситуации.
 
Синтаксис вызова:
./gamin.pl [-n] /directory1 /directory/2 some.file
 
Опция «-n» означает «мониторить нерекурсивно».
 
* {{SVN|vitalif/trunk/scripts/gamin.pl|markup}}
 
== bind9-forwarders-resolvconf ==
 
Скрипт для обновления [http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.ch06.html#id2557350 forwarder’ов DNS-сервера bind] при DHCP-обновлении набора доступных DNS. То есть, это скрипт для установки на машину-роутер, потому что, предположительно, только машина-роутер может иметь и внешний интерфейс, на котором работает DHCP, получающий обновления DNS провайдера, и bind, которому нужны корректные forwarder’ы.
 
Скрипт сильно похож на стандартный дебиановский [[DebianMagicResolvConfBind|/etc/resolvconf/update.d/bind]] и тоже предназначен для установки в /etc/resolvconf/update.d/, отличается от стандартного следующим:
* Написан на perl &rArr; не использует «особую уличную магию» с кучей вызовов <tt>sed</tt> и посему не глючит
* Берёт /etc/bind/named.conf.options.in, заменяет в нём $FORWARDERS на список обнаруженных DNS, разделённых точками с запятой (но без; в конце, то есть надо писать forwarders { $FORWARDERS; }) и записывает в <tt>/etc/bind/named.conf.options</tt>.
* Не дёргает без надобности (когда конфиги не менялись) rndc reconfig.
 
* {{SVN|vitalif/trunk/scripts/bind9-forwarders-resolvconf|markup}}
 
= Команды =
 
Простые полезные консольные команды, которых часто не хватает в UNIX-окружении.
== fromto ==
* {{SVN|vitalif/trunk/scripts/whichpm|markup}}
 
== mc.color ==
 
Настройки цветов для Midnight Commander.
 
* [{{SVN|vitalif/trunk/scripts/mc.color|markup}} Чёрный фон].
* [{{SVN|vitalif/trunk/scripts/mc-for-production.color|markup}} Чёрный фон, красные менюшки] — использую на боевых серверах, чтобы сразу понимать, где находишься.
== unzip.pl ==
* {{SVN|vitalif/trunk/scripts/unzip.pl|markup}}
== Syntax [{{SVN|vitalif/trunk/scripts/cpshift.c|co}} cpshift.c] ==
Описания синтаксиса Простая C-программка для Midnight Commanderкопирования кусков файлов. Возможно, велосипед, но с первого взгляда я такой стандартной unix-тулы не нашёл. Есть, конечно, dd, но он работает в ПИЦОТ раз медленнее, потому что приходится говорить bs=1 (чтение и запись по 1 байту).
* [{{SVN|vitalif/trunk/scripts/Syntax}} Syntax]* [{{SVN|vitalif/trunk/scripts/tt.syntax}} tt.syntax] — синтаксис шаблонов {{CPAN|TemplateКомпилировать и использовать тривиально::Toolkit}}.* [{{SVN|vitalif/trunk/scripts/tpl.syntax}} tpl.syntax] — синтаксис шаблонов [[Шаблонизатор VMX::Template|VMX::Template]].* [{{SVN|vitalif/trunk/scripts/perl.syntax.patch}} патч для perl.syntax] — исправленный синтаксис для Perl кода.
== pgraph gcc -dot ==o cpshift cpshift.c ./cpshift --skip SKIP_BYTES --size SIZE_BYTES infile outfile
Скрипт для вывода графов зависимостей с использованием [http://www.graphviz.org/ Graphviz] веток патчей для расширения системы контроля версий [http://arrenbrecht.ch/mercurial/pbranch/ Mercurial pbranch]SKIP_BYTES — смещение от начала входного файла, служащего для автоматизированного управления множеством веток патчейSIZE_BYTES — максимальный размер копируемой области.
Использовать в каталоге Mercurial== convert-репозитория следующим образом: <tt>pgraph-dot имяфайла.формат</tt>, где формат — один из поддерживаемых Graphviz форматов вывода (png, svg, dot и т. п.)filenames ==
* [{{SVN|vitalif/trunk/scripts/pgraph-dot|markup}} pgraph-dot]Скрипт для перекодирования имён файлов в каталоге из одной кодировки в другую. Сама ничего не выполняет, только выводит на STDOUT список команд mv A B. Пример использования:
Пример такого графа: ./convert-filenames /path/ cp1251 koi8-r | sh
'''[[Файл:PgraphDotExample.svg* {{SVN|400px]]'''vitalif/trunk/scripts/convert-filenames|markup}}
== sgold-note.pl timestamp ==
Небольшой скрипт Простая утилита преобразования дат для извлечения заметок из файлов базы данных тех, кто привык к коду MediaWiki (<tt>0[[mediawikiwiki:/system/apo/note/</tt>) платформ Siemens <tt>SGold</tt> Manual:WfTimestamp|wfTimestamp(x65/x75 кроме S75/SL75) и <tt>NewSGold</tt> (S75/SL75]]).
По умолчанию запускается для <tt>SGold</tt> . Чтобы запустить для <tt>NewSGold</tt>, нужно раскомментировать строчку timestamp <ttжелаемый_формат_даты>#my $h = 4; # for NewSGold</ttдата> (убрать # в начале). Использовать, просто натравливая его на эти самые файлы — не на каталоги, а на сами файлы, ибо рекурсивно каталоги скрипт не обходит.
* [http://svnНа входе дата в любом из желаемых форматов.yourcmcЕдинственное замечание — чтобы корректно парсить даты в формате TS_MW, нужно передавать их с пробелом в начале, типа <tt>.ru/viewvc.pytimestamp TS_UNIX ' 20100101000000'</vitalif/trunk/scripts/sgold-note.pl?revision=748&view=markup sgold-notett>, чтобы «сплошное число» можно было отличить от UNIX времени.pl]
== bind9Форматы даты/времени поддерживаются следующие:;TS_UNIX: UNIX время (число секунд с 01.01.1970).;TS_DB: YYYY-forwardersMM-resolvconf ==DD HH:MM:SS.;TS_DB_DATE: YYYY-MM-DD.;TS_MW: YYYYMMDDHHMMSS.;TS_ISO_8601: YYYY-MM-DD'''T'''HH:MM:SS.;TS_EXIF: YYYY:MM:DD HH:MM:SS.;TS_RFC822: Wday, DD Mon YYYY HH:MM:SS +ZZZZ. Wday — 3-буквенная латинская аббревиатура дня недели, Mon — 3-буквенная латинская аббревиатура месяца, ZZZZ — зона, смещение от GMT в формате HHMM (часы, минуты).;TS_ORACLE: DD-Mon-YYYY HH.MM.SS AM|PM.
Скрипт для обновления [http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.ch06.html#id2557350 forwarder’ов DNS== convert-сервера bind] при DHCP-обновлении набора доступных DNS. То есть, это скрипт для установки на машину-роутер, потому что, предположительно, только машина-роутер может иметь и внешний интерфейс, на котором работает DHCP, получающий обновления DNS провайдера, и bind, которому нужны корректные forwarder’ы.many ==
Скрипт сильно похож на стандартный дебиановский для перекодирования множества изображений из одного формата в другой с помощью [[DebianMagicResolvConfBind|http:/etc/resolvconf/updatewww.graphicsmagick.dorg/bindGraphicsMagick]] и тоже предназначен для установки в /etc/resolvconf/update.d/, отличается от стандартного следующимили [http:* Написан на perl &rArr; не использует «особую уличную магию» с кучей вызовов <tt>sed</tt> и посему не глючит* Берёт /etc/bind/namedwww.confimagemagick.options.inorg/ ImageMagick], заменяет в нём $FORWARDERS на список обнаруженных DNSвозможно, разделённых точками с запятой (но без; в конце, то есть надо писать forwarders { $FORWARDERS; }) и записывает в <tt>/etc/bind/named.conf.options</tt>.* Не дёргает без надобности (когда конфиги не менялись) rndc reconfigнесколько потоков.Пример использования:
* {{SVN|vitalif find /trunkpath/scripts/bind9-forwardersname *.png | xargs ./convert-resolvconfmany png jpg 2 |markup}}sh
== * {{SVN|vitalif/trunk/scripts/convert-filenames ==many|markup}}
Скрипт для перекодирования имён файлов в каталоге из одной кодировки в другую== bashrc. Сама ничего не выполняет, только выводит на STDOUT список команд mv A B. Пример использования:any ==
Команды для переключения кодировок koi8, utf8, cp1251 в Konsole из консоли, не прибегая к помощи менюшек.Версии для KDE [{{SVN|vitalif/convert-filenames trunk/pathscripts/ cp1251 koi8-r bashrc.any?revision=706&view=markup}} 4.x] и [{{SVN| shvitalif/trunk/scripts/bashrc.any?revision=704&view=markup}} 3.x].
* {{SVN|vitalif/trunk/scripts/convert-filenames|markup}}А команда yc вам не нужна, удаляйте её. :)
== gamin.pl =Патчи и настройки =
'''Пригодный для автоматизации''' скрипт для мониторинга изменений файлов и директорий с помощью модуля {{CPAN|Sys::Gamin}} (использующего реализацию FAM’а (File Alternation Monitor) «libgamin») версии 0.1. События выводятся на STDOUT в две колонки. Первая — имя события (одно из: changeПатчи, deleteмодификации, start_execфайлы настроек, stop_exec, create, move, ack, exist, end_exist), вторая — имя файлаюзер-скрипты. К имени события может быть дописаны суффиксы:* «|D» = «путь является каталогом и запрошен нерекурсивный режим»* «|M» = «запрошен рекурсивный режим, запускаю мониторинг каталога»* «|C» = «путь удалён, отменяю мониторинг каталога»
Соответственно, скрипт можно использовать в каких-нибудь скриптах (шелл или не очень) как монитор ФС, читать и парсить его вывод, и действовать по ситуации== [{{SVN|vitalif/trunk/scripts/GoogleSrchUIMod.js|co}} GoogleSrchUIMod.js] ==
Синтаксис вызова[http: ./gamin/www.pl [-n] opera.com/directory1 docs/directoryuserjs/2 some.fileUser JS] для Opera, направленный на возвращение Гугла к прежнему (старому) виду:* '''без грёбаной панельки''' слева — она показывается свёрнутой, её можно развернуть* без рекламы справа* без javascript’ов, которые:** подменяют ссылки на сайты ссылками на редиректы так, что их не скопипастишь** '''противодействуют User JS’ам!'''** ставят какие-то таймеры, замеряют времена выполнения и делают ещё фиг знает что троянистое* с результатами поиска, выровненными по левому краю, а не по центру — удобно для широких мониторов* со ссылочкой «Только на русском» под строкой поиска
Опция «Основан на [http://shirish.thekamathfamily.com/pages/hack-n» означает «мониторить нерекурсивно»opera-userjs-to-get-back-the-old-google-search-ui/ Opera UserJS To Get Back The Good Ol’ Google Search UI].
* Устанавливать следующим образом — скачать по [{{SVN|vitalif/trunk/scripts/gaminGoogleSrchUIMod.pljs|markupco}}ссылке], создать любую папочку под свои юзер-скрипты, положить туда скачанный файл, прописать её в <tt>Preferences &rarr; Advanced &rarr; Content &rarr; JavaScript options &rarr; User JavaScript folder</tt>. Наслаждаться.
== timestamp mc.color ==
Простая утилита преобразования дат Настройки цветов для тех, кто привык к коду MediaWiki ([[mediawikiwiki:Manual:WfTimestamp|wfTimestamp()]])Midnight Commander.
* [{{SVN|vitalif/trunk/scripts/mc.color|markup}} Чёрный фон].* [{{SVN|vitalif/timestamp <желаемый_формат_даты> <дата>trunk/scripts/mc-for-production.color|markup}} Чёрный фон, красные менюшки] — использую на боевых серверах, чтобы сразу понимать, где находишься.
На входе дата в любом из желаемых форматов. Единственное замечание — чтобы корректно парсить даты в формате TS_MW, нужно передавать их с пробелом в начале, типа <tt>./timestamp TS_UNIX ' 20100101000000'</tt>, чтобы «сплошное число» можно было отличить от UNIX времени.== Syntax ==
Форматы датыОписания синтаксиса для Midnight Commander. * [{{SVN|vitalif/времени поддерживаются следующие:trunk/scripts/Syntax}} Syntax];TS_UNIX: UNIX время (число секунд с 01* [{{SVN|vitalif/trunk/scripts/tt.01syntax}} tt.1970).;TS_DBsyntax] — синтаксис шаблонов {{CPAN|Template: YYYY-MM-DD HH:MM:SSToolkit}}.;TS_DB_DATE: YYYY-MM-DD* [{{SVN|vitalif/trunk/scripts/tpl.;TS_MW: YYYYMMDDHHMMSSsyntax}} tpl.;TS_ISO_8601syntax] — синтаксис шаблонов [[Шаблонизатор VMX: YYYY-MM-DD'''T'''HH:MMTemplate|VMX:SS.;TS_EXIF: YYYY:MM:DD HH:MM:SSTemplate]].;TS_RFC822: Wday, DD Mon YYYY HH:MM:SS +ZZZZ* [{{SVN|vitalif/trunk/scripts/perl. Wday — 3-буквенная латинская аббревиатура дня недели, Mon — 3-буквенная латинская аббревиатура месяца, ZZZZ — зона, смещение от GMT в формате HHMM (часы, минуты)syntax.;TS_ORACLE: DD-Mon-YYYY HHpatch}} патч для perl.MM.SS AM|PMsyntax] — исправленный синтаксис для Perl кода.
== gamin2.pl и патч Sys::Gamin ==
Похож на [[#gamin.pl|gamin.pl]], но а) рассчитан на [{{SVN|vitalif/trunk/scripts/Sys-Gamin-0.1-userData.diff}} патченую] версию Sys::Gamin 0.2, с поддержкой userData, и б) сильно менее полезен.
./gamin2.pl /directory1 /directory/2 -u UserData2 some.file
* [{{SVN|vitalif/trunk/scripts/apache1-configure|markup}} apache1-configure]
== bashrcfglrx_30.any diff ==
Команды Патч для переключения кодировок koi8, utf8, cp1251 в Konsole из консоли, не прибегая к помощи менюшек. Версии для KDE компиляции модуля ядра <tt>fglrx</tt> Linux-версии проприетарного драйвера [{{SVN|vitalifhttp:/trunk/scripts/bashrcati.any?revision=706&view=markup}} 4amd.x] и [{{SVN|vitalifcom/trunkproducts/scriptscatalyst/bashrcindex.any?revision=704&view=markup}} 3.xhtml ATi Catalyst]для версий 9-6 и 9-7 и версии Linux ядра 2.6.30. Для более новых версий драйвера <tt>fglrx</tt> патч не требуется.
А команда yc вам не нужна, удаляйте её. * [http:)//svn.yourcmc.ru/viewvc.py/vitalif/trunk/scripts/fglrx_30.diff?view=log fglrx_30.diff]
== convert-many =Инструменты =
Скрипт для перекодирования множества изображений из одного формата в другой с помощью [http://www.graphicsmagick.org/ GraphicsMagick] или [http://www.imagemagick.org/ ImageMagick], возможно, в несколько потоков. Пример использования:== pgraph-dot ==
find Скрипт для вывода графов зависимостей с использованием [http:/path/ -name *www.png | xargs graphviz.org/convert-many png jpg 2 | shGraphviz] веток патчей для расширения системы контроля версий [http://arrenbrecht.ch/mercurial/pbranch/ Mercurial pbranch], служащего для автоматизированного управления множеством веток патчей.
* {{SVN|vitalifИспользовать в каталоге Mercurial-репозитория следующим образом: <tt>pgraph-dot имяфайла.формат</trunk/scripts/convert-many|markup}}tt>, где формат — один из поддерживаемых Graphviz форматов вывода (png, svg, dot и т. п.)
== fglrx_30.diff ==* [{{SVN|vitalif/trunk/scripts/pgraph-dot|markup}} pgraph-dot]
Патч для компиляции модуля ядра <tt>fglrx</tt> Linux-версии проприетарного драйвера [httpПример такого графа://ati.amd.com/products/catalyst/index.html ATi Catalyst] для версий 9-6 и 9-7 и версии Linux ядра 2.6.30. Для более новых версий драйвера <tt>fglrx</tt> патч не требуется.
'''[[Файл:PgraphDotExample.svg|400px]]''' == sgold-note.pl == Небольшой скрипт для извлечения заметок из файлов базы данных (<tt>0:/system/apo/note/</tt>) платформ Siemens <tt>SGold</tt> (x65/x75 кроме S75/SL75) и <tt>NewSGold</tt> (S75/SL75). По умолчанию запускается для <tt>SGold</tt>. Чтобы запустить для <tt>NewSGold</tt>, нужно раскомментировать строчку <tt>#my $h = 4; # for NewSGold</tt> (убрать # в начале). Использовать, просто натравливая его на эти самые файлы — не на каталоги, а на сами файлы, ибо рекурсивно каталоги скрипт не обходит. * [http://svn.yourcmc.ru/viewvc.py/vitalif/trunk/scripts/fglrx_30sgold-note.diffpl?revision=748&view=log fglrx_30markup sgold-note.diffpl]
== find-alisska.pl ==

Навигация