Перейти к содержанию

Hans R. Steiner

Members
  • Постов

    1822
  • Зарегистрирован

  • Посещение

Весь контент Hans R. Steiner

  1. EL[michlen писал(а) Срд, 29 Марта 2006 21:03] Цитата: 1. не нравится он мне Мне тоже))) Цитата: 2. имхо: не может быть лучше перла то, что изначально было написано на перле Может и был изначально, сейчас на C. Цитата: 3. пхп никак нельзя откомпилировать Можно. Только зачем это в рамках данного вопроса? Цитата: 4. имхо: кривой скрипт пхп опаснее кривого скрипта перл Как раз наоборот. Прибавь к этому эффективность PHP как средства разработки (работа с БД и т.п.) - получается весьма интересный вариант. Но мы плавно уходим от темы. Можем продолжить во флейме, как считаешь? 3. Хм... возможно что-то упустил, но как откомпилировать PHP-скрипт? -- откомпилированый вариант работает быстрее. 4. Как правило, кривой перловый скрипт, просто не будет работать. -- В зависимости от настроек сервера, можно ограничить доступ -- к скриптам. -- Если на сервере траблы с пхп, он вполне может открыться как -- обычный текст... а часто, это очень не желательно... -- Согласен... лучше во флейм или в программазм...
  2. Да если что, я поделюсь... мне не жалко ))
  3. White_Mouse писал(а) Срд, 29 Марта 2006 10:47 Религиозные войны назревают Может за кружкой пива лучше? согласен, но на следующей неделе... на этих выходных я в Питере
  4. 1. не нравится он мне 2. имхо: не может быть лучше перла то, что изначально было написано на перле 3. пхп никак нельзя откомпилировать 4. имхо: кривой скрипт пхп опаснее кривого скрипта перл и вообще, рассуждать можно много...
  5. Когда я начинал, я даже о linux.ru не знал... хотя, не так уж и давно это было... каких-то лет шесть/семь назад
  6. Думаю, Windows Вам вполне подойдет... а вообще http://www.linux.ru/forum/index.php?S=3a0867c1e56200924b365e 895d4b669c&SQ=0&t=search&srch=%EA%E0%EA%EE%E9+%E 4%E8%F1%F2%F0%E8%E1%F3%F2%E8%E2+%E2%FB%E1%F0%E0%F2%FC&bt n_submit=%CF%EE%E8%F1%EA&field=all&forum_limiter=&am p;search_logic=AND&sort_order=DESC&author=
  7. MikeDM писал(а) Втр, 28 Марта 2006 18:34 Hans R. Steiner писал(а) Втр, 28 Марта 2006 22:12 MikeDM писал(а) Пнд, 27 Марта 2006 13:51 Для начала советую поюзать некоторое время KNOPPIX это Live-CD дистрибутив основанный на DEBIAN само то доля тех кто первый раз видит линух. Немного на нем подучишься а потом можно и на более серьезный дистрибутив пересесть на такой как Suse Debian Mandriva PS Я сижу на Suse 10 и рад жизни ИМХО: кнопикс лучше не трогать... человек после вообще к оинуху близко не подойдет после таких вчепятлений... По своему опыту, могу посоветовать продукцию MandrakeSoft. Усли ее не канать и не извращаться, работает исправно... как только станет мало, можно будет думать о переходе на что-нибудь серьезное (Slackware, SuSE, Gentoo, Debian...), но по крайней мере, к тому моменту уже будут какие-то знания и навыки... и способность выбрать то, что хочется выбрать. нда... а вот попробует он поставить тот же самый мандрайк и не сможет установить по какой либо простейшей ошибке, даже по глупости. и убьет инфу на винте. потом будет говорить. Lunux **** итп. Live-CD само то для ознакомления. ибо сам с него начинал. А для того, что бы инфу не убить, надо на отдельный винт ставить ... а еще лучше, на отдельную машину... или, как минимум, бэкапы делать...
  8. White_Mouse писал(а) Втр, 28 Марта 2006 06:15 MR.Z писал(а) Пнд, 27 Марта 2006 21:28 я выкачиваю каждый месяц не более (!!! И НЕ МЕНЕЕ !!!) 21 гига Ужас На винчестерах разориться можно. У меня раньше примерно такой же трафик был... исошники качал, фильмы и т.д.. и на болванки лил А теперь из инета качать нечего пусто там
  9. Цитата: EvilShadow писал(а) Пнд, 27 Марта 2006 14:35 Какие еще признаки? Нелогичность обращения сразу по нескольким адресам? Как ни странно и таким способом тоже. Собрать статистику и сравнить ее со средней активностью одного пользователя, который серфит по сети несложно, верно? В любом случае, у провайдера найдется сатанинская хитрость на этот случай, поскольку работа у него такая Анализировать среднюю загрузку никто не будет... всех ломает, да и не верная это величина... она лишь может привлеч внимание... Выследить только по анализу трафика можно...
  10. EvilShadow писал(а) Пнд, 27 Марта 2006 12:35 White_Mouse писал(а) Пнд, 27 Марта 2006 13:06 Maestro писал(а) Пнд, 27 Марта 2006 13:18 а провайдер если захочет все равно выяснит что не ты один по этому IP лазишь Этточна Ой ли... каким, скажите пожалуйста, образом он это выяснит? Опять же, применительно к указанной задаче, когда мак - роутера по определению ип - маскируется ттл - корректируется Какие еще признаки? Нелогичность обращения сразу по нескольким адресам? Как вариант: если провайдер заинтересуется и проанализирует трафик, в случае с NAT, можно выяснить по портам, с которых устанавливается соединение так, как они не будут соответствовать стандартным клиентским портам... к примеру, для того же http на 80 port. В общем, запустите tcpdump за NAT и все увидете PS: можно tcpdump -vv -n если простой не все показывает
  11. Цитата: вот уж дудки я заплатил за унлимит как хочу так и использую (если иное явно не описано в договоре) а провайдер если захочет все равно выяснит что не ты один по этому IP лазишь Верно, но как правило такое обьяснение (идущее в разрез с договором большинства мелких и районных провайдеров) прокатывае только в том случае, если Вам режут полосу пропускания на анлиме.
  12. MikeDM писал(а) Втр, 28 Марта 2006 07:21 Все дистрибутивы различаются только в мелких деталях. Вот пример: в Debian для полнятия сети можно использовать netcardconfig а в SUSE 10 YaST НО в обоих системах эти утилиты по своей сути являются надстройкой над ifconfig Отсюда выводы: каждый кулик хвалит свое болото. Порой мелочи заставляют очень сильно поднапрячся... к примеру, различный синтаксис arping в Linux и FreeBSD... кзалось бы мелочь что во FreeBSD для указания девайса используется "-i" а в Linux "-I" но при написании скриптов или в экстренной ситуации, Вы весь свой запас не нормативной лексики на эту мелочь потратите... Такие же различия и в дистрибутивах Linux... а еще стабильность, специффические скрипты и политики...
  13. Цитата: несмотря на то что линукс от дистрибутива к дистрибутиву все больше и больше поворачивается к пользователю лицом в ближайшие несколько лет linux не заменит windows (хотя многие здесь со мной не согласны) по причине недостатка софта и плохой поддержке нового оборудования но поскольку пошел учится на программиста то linux поюзать просто необходимо и для повышения квалификации и для гимнастики для мозгов я бы посоветовал что то от редхата федору например просто потому что на нее в сети много документации Если уж человеку действительно предстоит работать с Linux, я бы его держал подальше от RPM based и уж тем более от Шапочки (Федоры)... но это имхо... И еще одно имхо: если цели серьезные то и средства должны быть серьезными... т.е. - Source based дистрибутивы. Если говорить о документыции то, документации по всем дистрибутивам кватает... учитывая то, что все они схожы, но в данном случае, много документации по КОНКРЕТНОМУ дистрибутиву - не плюс, а минус... человеку еще надо научится и знания свои адаптировать под среду и среду под знания... а не копировать с бумажки...
  14. MikeDM писал(а) Пнд, 27 Марта 2006 13:51 Для начала советую поюзать некоторое время KNOPPIX это Live-CD дистрибутив основанный на DEBIAN само то доля тех кто первый раз видит линух. Немного на нем подучишься а потом можно и на более серьезный дистрибутив пересесть на такой как Suse Debian Mandriva PS Я сижу на Suse 10 и рад жизни ИМХО: кнопикс лучше не трогать... человек после вообще к оинуху близко не подойдет после таких вчепятлений... По своему опыту, могу посоветовать продукцию MandrakeSoft. Усли ее не канать и не извращаться, работает исправно... как только станет мало, можно будет думать о переходе на что-нибудь серьезное (Slackware, SuSE, Gentoo, Debian...), но по крайней мере, к тому моменту уже будут какие-то знания и навыки... и способность выбрать то, что хочется выбрать.
  15. Держи, балуйся... хоть я еще не дописал этот текст и повыдирал все, что могло бы указывать на тот сервер, где я это делал и на основе чего все это писал, все достатосно понятно и просто... конесно же, если правильно установлены /dev/head и /dev/hands Apache + MySQL + Proftpd Оглавление 1.Конфигурация 2.Сервисы 3.Настройка 4.Приложение А – массовый ldd с копированием 5.Приложение Б - /etc/rc.d/rc.mysqld 6.Приложение В - /etc/rc.d/rc.httpd Конфигурация На сервер установлена операционная система Slackware Linux 10.2 со стандартным для дистрибутива набором приложений. Сервисы На данный момент, на сервере SERVER.RU, работают следующие сервисы: Apache v. 1.3.33 WEB-сервер MySQL v. 4.1.14 MySQL-сервер ProFTPd v. 1.2.10 FTP-сервер SendMail v. 8.13.4 SMTP-сервер Настройка 1.Перенос Apache в CHROOT 1.Создаем пользователя:группу «www:www» с UID:GID 80:80 2.Создаем каталог /var/chroot/apache 3.Создаем дерево каталогов для Apache mkdir -p /var/chroot/dev mkdir -p /var/chroot/lib mkdir -p /var/chroot/etc mkdir -p /var/chroot/usr/sbin mkdir -p /var/chroot/usr/lib mkdir -p /var/chroot/var/run mkdir -p /var/chroot/var/log/apache; chmod 750 /var/chroot/log/apache mkdir -p /var/chroot/home/www 4.Копируем файлы Apache в CHROOT cp -r /etc/apache /var/chroot/apache/etc/ cp -r /var/www /var/chroot/apache/home/www/ cp /usr/sbin/httpd /var/chroot/apache/usr/sbin/ 5.Создаем /dev/null mknod /var/chroot/apache/dev/null c 1 3 chmod 666 /var/chroot/apache/dev/null 6.Копируем SSL cp -r /etc/ssl/ /var/chroot/apache/etc/ cd /var/chroot/apache/etc/ssl/; chmod 666 * */* 7.Копируем разделяемые библиотеки Для определения разделяемых библиотек, мы будем использовать комманды ldd [filename] и strace -f -e trace=open [filename] cp /lib/libm.so.6 /var/chroot/apache/lib/libm.so.6 cp /lib/libcrypt.so.1 /var/chroot/apache/lib/libcrypt.so.1 cp /lib/libdb-3.3.so /var/chroot/apache/lib/libdb-3.3.so cp /usr/lib/libexpat.so.0 /var/chroot/apache/usr/lib/libexpat.so.0 cp /lib/libdl.so.2 /var/chroot/apache/lib/libdl.so.2 cp /lib/libc.so.6 /var/chroot/apache/lib/libc.so.6 cp /lib/ld-linux.so.2 /var/chroot/apache/lib/ld-linux.so.2 ... и еще некоторые библиотеки cp /lib/libnsl* /var/chroot/apache/lib/ cp /lib/libnss_compat* /var/chroot/apache/lib/ cp /lib/libnss_dns* /var/chroot/apache/lib/ cp /lib/libnss_files* /var/chroot/apache/lib/ ... и /etc/localtime cp /etc/localtime /var/chroot/apache/etc/ 8.Переносим пользователя в CHROOT cat /etc/passwd | grep www > /var/chroot/apache/etc/passwd cat /etc/group | grep www > /var/chroot/apache/etc/group ... и некоторые конфигурационные файлы cp /etc/resolv.conf /var/chroot/apache/etc/ cp /etc/hosts /var/chroot/apache/etc/ cp /etc/nsswitch.conf /var/chroot/apache/etc/ 9.Редактируем syslog Заменяем в /etc/rc.d/rc.syslog строку /usr/sbin/syslogd на /usr/sbin/syslogd -a /var/chroot/apache/dev/log 10.Теперь, переносим файлы Apache из нашего установочного пакета, с учетом тех изменений, которые мы произвели. 11.Пишем скрипт /etc/rc.d/rc.httpd для запуска Apache в CROOT #!/bin/sh DIR="/var/chroot/apache" BIN="/usr/sbin/httpd" PID="/var/run/httpd.pid" ## RESTARTING WEB SERVER restart () { stop sleep 1 start } ## STARTING WEB SERVER start () { chroot "${DIR}" "${BIN}" } ## WEB SERVER STOP stop () { kill -9 `ps -C httpd -o pid=` } case $1 in restart) restart;; start) start;; stop) stop;; esac ## END FILE Стоит заметить, что этот стартовый скрипт предусматривает, что у Вас запущен только один HTTP-сервер. Если у Вас запущено несколько различных HTTP-серверов и все они видны в списке процессов как httpd, Вам прийдется переписать этот скрипт самостоятельно. 12.И так, все файлы перенесены и мы можем приступать к настройке Apache, но для начала, удалим каталог конфигурации /etc/apache и создадим ссылки на то, что мы создали... таким образом, мы сможем настраивать наш WEB-сервер при помощи всяких удобных нам утилит... к примеру, с помощью того же «webmin» ln -s /var/chroot/apache/etc/apache /etc/apache ln -s /var/chroot/apache/home/www /home/www 13.Далее, скриптом из приложения А, проверяем, все ли зависимости соблюдаются и переходим к настройке сервера. 2.Настройка Apache Примечание: Все пути указаны относительно chroot-директории. Будьте внимательны и не попортите файлы реальной системы. 1.Копируем файл /etc/apache/httpd.conf.default в /etc/apache/httpd.conf и одновременно удаляем из него комментарии, что бы нам было проще в нем ориентироваться... все равно мы их читать не будем... потому,что у нас есть свой справочник... cd /etc/apache; cat httpd.conf.default | awk '{ if ($1 != "#") { print $_ }; }' > httpd.conf 2.И так, теперь мы можем перейти к настройке самого Apache Изначально, в нашей конфигурации Apache, как каталог, где будут лежать все сайты, страницы и прочие бяки-документы, установлен каталог /var/www, а пользователь, от имени которого запускается Apache – nobody:nobody Для начала,давайте изменим пользователя-владельца Apache, на ранее созданного нами пользователя www:www и удалим всех остальных пользователей из /etc/passwd и группы из /etc/group и заменяем в конфигурационном файле путь к корню документов на /home/www/htdocs 3.Теперь прикрутим PHP, Perl и Shell. Чтобы меньше возиться с выявлением необходимых файлов, просто берем пакет PHP от нашего дистрибутива, и распаковываем его в chroot-директорию. Копируем разделяемые библиотеки (сразу выводим сформированную комманду для копирования и просто вставляем ее в командную строку) ldd /usr/libexec/apache/libphp4.so | awk '{ if ($3) { print "cp", $3, "/var/chroot/apache" $3 ";" } else { print "cp", $1, "/var/chroot/apache" $1 ";" }; }' Проверяем PHP: кладем в /home/www/htdocs файл index.php с простым содержимым: <? echo «Hello world!» ?>, перезапускаем сервер и в результате, зайдя на него через браузер, мы должны увидеть надпись «Hello world!». Теперь Perl. Так же, как и в случае с PHP, воспользуемся стандартным для нашего дистрибутива пакетом и распакуем его в croot. Для копирования разделяемых библиотек, используем тот же способ, что и в PHP. ldd /usr/libexec/apache/libperl.so | awk '{ if ($3) { print "cp", $3, "/var/chroot/apache" $3 ";" } else { print "cp", $1, "/var/chroot/apache" $1 ";" }; }' И так, проверяем работу Perl: вводим в браузере server.ru/cgi-bin/printenv и... еслиполучаем какой-нибудь результат, значит все работает. Для работоспособности Shell-скриптов, нам надо сделать совсем мало mkdir /var/chroot/apache/bin; cp /bin/bash /var/chroot/apache/bin/ cd /var/chroot/apache/bin; ln -s bash sh cp /lib/libtermcap.so.2 /var/chroot/apache/lib/ и теперь проверяем работу на server.ru/cgi-bin/test-cgi 4.Настройка виртуальных хостов (субдоменов) Я не буду описывать настройку всего сервера Apache, это слишком долго и нудно... да и книг по вылизыванию конфигов, написано достаточно много... я лишь опишу некоторые основные моменты конфигурирования доменов (субдоменов). Для того, чтобы человек, набравший имя нашего домена и не указавший конкретный хост, не попал на первый же указанный в конфигурации виртуальный домен, мы должны настроить главный домен. Для этого, мы создадим первый виртуальный с именем нашего главного домена а все остальные имена, будут располагаться следом за ним. Так же, для облегчения добавления доменов, в корне chroot, лежит файл mkvhost. 3.Перенос MySQL в CHROOT 1.Создаем каталог /var/chroot/mysql 2.Для начала, давайте перенесем в croot shell Для этого, создадим в croot директории необходимые каталоги mkdir /var/chroot/mysql/bin mkdir /var/chroot/mysql/dev mkdir /var/chroot/mysql/etc mkdir /var/chroot/mysql/lib Теперь, мы можем перенести Shell cp /bin/awk /var/chroot/mysql/bin/ cp /bin/bash /var/chroot/mysql/bin/ cp /bin/gawk /var/chroot/mysql/bin/ cp /bin/gawk-3.1.5 /var/chroot/mysql/bin/ cp /bin/sh /var/chroot/mysql/bin/ cp /lib/ld-linux.so.2 /var/chroot/mysql/lib/ cp /lib/libdl.so.2 /var/chroot/mysql/lib/ cp /lib/libnsl-2.3.5.so /var/chroot/mysql/lib/ cp /lib/libnss_compat-2.3.5.so /var/chroot/mysql/lib/ cp /lib/libnss_dns-2.3.5.so /var/chroot/mysql/lib/ cp /lib/libresolv.so.2 /var/chroot/mysql/lib/ cp /lib/libc.so.6 /var/chroot/mysql/lib/ cp /lib/libm.so.6 /var/chroot/mysql/lib/ cp /lib/libnsl.so.1 /var/chroot/mysql/lib/ cp /lib/libnss_compat.so.2 /var/chroot/mysql/lib/ cp /lib/libnss_dns.so.2 /var/chroot/mysql/lib/ cp /lib/libtermcap.so.2 /var/chroot/mysql/lib/ cp/etc/group /var/chroot/mysql/etc/ cp/etc/hosts /var/chroot/mysql/etc/ cp/etc/nsswitch.conf /var/chroot/mysql/etc/ cp/etc/passwd /var/chroot/mysql/etc/ cp/etc/pear.conf /var/chroot/mysql/etc/ cp/etc/resolv.conf /var/chroot/mysql/etc/ 3.Создаем /dev/null mkdir /var/chroot/mysql/dev mknod /var/chroot/mysql/dev/null c 1 3 chmod 666 /var/chroot/mysql/dev/null 4.Установка MySQL Теперь, как и в случае с Apache, возьмем пакет MySQL из нашего дистрибутива и распакуем его в chroot-директорию MySQL. Для того, что бы меньше морочиться со всякими символическими ссылками, мы можем воспользоваться файлом doinst.sh, который идет вместе с пакетом (такой файл есть в каждом пакете для Slackware Linux), но что бы сделать это, мы должны перенести в chroot еще некоторые файлы cp /bin/cp /var/chroot/mysql/bin/ cp /bin/cat /var/chroot/mysql/bin/ cp /bin/rm /var/chroot/mysql/bin/ cp /bin/mv /var/chroot/mysql/bin/ cp /bin/ln /var/chroot/mysql/bin/ cp /usr/bin/md5sum /var/chroot/mysql/usr/bin/ cp /usr/bin/basename /var/chroot/mysql/usr/bin/ cp /usr/bin/dirname /var/chroot/mysql/usr/bin/ 5.Перед запуском для того, что бы нормально запускать MySQL в croot, нам понадобится перенести еще некоторые файлы. cp /usr/bin/sed /var/chroot/mysql/usr/bin/ cp /usr/bin/touch /var/chroot/mysql/usr/bin/ cp /usr/bin/chown /var/chroot/mysql/usr/bin/ cp /usr/bin/date /var/chroot/mysql/usr/bin/ cp /usr/bin/tee /var/chroot/mysql/usr/bin/ cp /lib/libpthread.so.0 /var/chroot/mysql/lib/ cp /lib/librt.so.1 /var/chroot/mysql/lib/ cp /lib/libcrypt.so.1 /var/chroot/mysql/lib/ 6.Теперь, устанавливаем базу данных cp /usr/bin/resolveip /var/chroot/mysql/usr/bin/ cp /usr/bin/mkdir /var/chroot/mysql/usr/bin/ cp /usr/bin/chmod /var/chroot/mysql/usr/bin/ cp /usr/lib/libz.so.1 /var/chroot/mysql/usr/lib/ cp /usr/lib/libssl.so.0 /var/chroot/mysql/usr/lib/ cp /usr/lib/libcrypto.so.0 /var/chroot/mysql/usr/lib/ cp /etc/ld.so.cache /var/chroot/mysql/etc/ cp /lib/libnsl.so.1 /var/chroot/mysql/lib/ cp /lib/libm.so.6 /var/chroot/mysql/lib/ cp /lib/libc.so.6 /var/chroot/mysql/lib/ cp /lib/libnss_files.so.2 /var/chroot/mysql/lib/ 7.Теперь, запускаем MySQL cp /usr/lib/libncurses.so.5 /var/chroot/mysql/usr/lib/ cp /lib/libgpm.so.1 /var/chroot/mysql/lib/ 8.Редактируем файл /etc/rc.d/rc.mysqld комментируем строку SKIP="—skip-networking" для того, чтобы наша база могла работать по сети 9.Далее, скриптом из приложения А, проверяем, все ли зависимости соблюдаются и переходим к настройке сервера. 4.Настройка MySQL 1.Установка базы Заходим в нашу среду chroot и идем в /var/lib/mysql chroot /var/chroot/mysql cd /var/lib/mysql и устанавливаем базу данных и запускаем MySQL mysql_install_db /etc/rc.d/rc.mysqld start и выделяем права пользователю root /usr/bin/mysqladmin -u root password 'new-password' 2.Теперь, для того, чтобы мы могли подключаться к нашей базе, мы должны создать файл /etc/my.cnf в основной файловой системе. Выглядеть этот файл будет так: [client] socket = /var/chroot/mysql/var/run/mysql/mysql.sock [mysqld] socket = /var/run/mysql/mysql.sock Так же, при загрузке сервера, мы должны будем создавать символическую ссылку на соккет MySQL. Сделать это можно с помощью следующей команды: ln -s -f /var/chroot/mysql/var/run/mysql/mysql.sock /var/run/mysql/mysql.sock 3.В приложении Б, приведен не много измененный скрипт для запуска MySQL-сервера не входя в chroot-окружение 5.Перенос ProFTPd в CHROOT Теперь мы добрались до FTP-сервера. В нашем случае, FTP будет использоваться для обновления сайтов, которые лежат у нас на хостинге и по этому, мы поместим ProFTPd в ту же среду, что и Apache. 6.Установка И так, как мы уже делали раньше, воспользуемся стандартным пакетом нашего дистрибутива и распакуем его в среду Apache. 7.Настройка ProFTPd Настройка ProFTPd довольно проста. Все, что нам нужно сейчас сделать это: 1.Изменить пользователя и группу, под которыми будет запускаться сервер на www:www и установить пароль на этого пользователя. 2.Теперь, можно запускать FTP-сервер Для того, что бы ProFTPd запускался автоматически при старте сервера, нам надо написать скрипт, аналогичный тому, что запускает Apache Пример скрипта приведен в приложении Д 8.Настройка SendMail И так, учитывая, что мне никто не давал имена почтовых ящиков, которые надо создать, а почтовый сервер настроить надо то, я предполагаю, что почтовик нам будет нужен для перенаправления всей почты, в том числе и системной, на некий почтовый адрес, за пределами нашего сервера (или просто на другой компьютер). В общем, все что нам надо сделать, это просто создать файл /root/.forward содержащий почтовый адрес, на который надо перенаправлять всю почту. Приложение А #!/bin/sh my_bin () { FILE=`which "${NAME}"` if [ "${1}" != "test" ]; then cp "${FILE}" "${ROOT}${FILE}" fi if ls "${ROOT}${FILE}" 2> /dev/null 1> /dev/null; then NAME=`echo "${FILE}" | sed s/${NAME}//` echo "cp ${FILE} ${ROOT}${NAME}" fi } my_lib () { FILE=`locate "${NAME}" | grep "^/[^var].*${NAME}$"` FILE=`echo ${FILE} | awk '{ print $(NF) }'` if [ "${1}" != "test" ]; then cp "${FILE}" "${ROOT}${FILE}" fi if ls "${ROOT}${FILE}" 2> /dev/null 1> /dev/null; then NAME=`echo "${FILE}" | sed s/"${NAME}"//` echo "cp ${FILE} ${ROOT}${NAME}" fi } for NAME in ${@}; do case "${NAME}" in --bin) TYPE="bin";; --lib) TYPE="lib";; --ldd) TYPE="ldd";; *) PARA="${PARA} ${NAME}";; esac done if [ ! "${TYPE}" ]; then TYPE="bin"; fi if [ "${TYPE}" == "ldd" ]; then PARA=`echo ${PARA} | awk '{ if (NF < 2) { print $_, "*"; }; }'`; fi for NAME in ${PARA}; do if [ ! "${ROOT}" ]; then ROOT="${NAME}" else case "${TYPE}" in bin) my_bin ;; lib) my_lib ;; ldd) PARA=`ls "${ROOT}"` for ITEM in ${PARA}; do LIBS=`ldd "${ROOT}${ITEM}" | awk '{ if ($3) { print $3 } else { print $1 }; }' | awk -F '/' '{ print $(NF) }'` for LIB in ${LIBS}; do FILE=`locate "${LIB}" | grep "^/[^var].*${LIB}$"` FILE=`echo ${FILE} | awk '{ print $(NF) }'` ROOTDIR=`echo "${ROOT}" | awk -F '/' '{ if ($3 == "chroot") { print "/var/chroot/" $4 } else { print $_ }; }'` if ! ls "${ROOTDIR}${FILE}" 1> /dev/null 2> /dev/null; then echo "${ITEM} ==> ${FILE}" echo -ne "Copy needed file? [y/n]: "; read INPUT; if [ "${INPUT}" == "y" ]; then CFILE=`echo "${FILE}" | awk -F '/' '{ print $(NF)}'` CDIRS=`echo "${FILE}" | sed s/"${CFILE}"//` mkdir -p "${ROOTDIR}${CDIRS}" cp "${FILE}" "${ROOTDIR}${CDIRS}" fi fi done done break ;; esac fi done ## END FILE Приложение Б #!/bin/sh ROOT="/var/chroot/mysql" HTTP="/var/chroot/apache" # Start mysqld: mysqld_start() { if [ -x "${ROOT}"/usr/bin/mysqld_safe ]; then # If there is an old PID file (no mysqld running), clean it up: if [ -r "${ROOT}"/var/run/mysql/mysql.pid ]; then if ! ps axc | grep mysqld 1> /dev/null 2> /dev/null ; then echo "Cleaning up old /var/run/mysql/mysql.pid." rm -f "${ROOT}"/var/run/mysql/mysql.pid fi fi chroot "${ROOT}" /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysql/mysql.pid & ln -s -f /var/chroot/mysql/var/run/mysql/mysql.sock /var/run/mysql/mysql.sock fi } # Stop mysqld: mysqld_stop() { # If there is no PID file, ignore this request... if [ -r "${ROOT}"/var/run/mysql/mysql.pid ]; then killall mysqld # Wait at least one minute for it to exit, as we don't know how big the DB is... for second in 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 \ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 60 ; do if [ ! -r "${ROOT}"/var/run/mysql/mysql.pid ]; then break; fi sleep 1 done if [ "$second" = "60" ]; then echo "WARNING: Gave up waiting for mysqld to exit!" sleep 15 fi fi } # Restart mysqld: mysqld_restart() { mysqld_stop mysqld_start } case "$1" in 'start') mysqld_start ;; 'stop') mysqld_stop ;; 'restart') mysqld_restart ;; *) echo "usage $0 start|stop|restart" esac Приложение В #!/bin/sh DIR="/var/chroot/apache" BIN="/usr/sbin/httpd" PID="/var/run/httpd.pid" ## RESTARTING WEB SERVER restart () { stop sleep 1 start } ## STARTING WEB SERVER start () { chroot "${DIR}" "${BIN}" } ## WEB SERVER STOP stop () { kill -9 `ps -C httpd -o pid=` } case $1 in restart) restart;; start) start;; stop) stop;; esac ## END FILE Приложение Д #!/bin/sh DIR="/var/chroot/apache" BIN="/usr/sbin/proftpd" PID="/var/run/proftpd.pid" ## RESTARTING WEB SERVER restart () { stop sleep 1 start } ## STARTING WEB SERVER start () { chroot "${DIR}" "${BIN}" } ## WEB SERVER STOP stop () { kill -9 `ps -C proftpd -o pid=` } case $1 in restart) restart;; start) start;; stop) stop;; esac ## END FILE
  16. Hans R. Steiner

    Perl vs PHP

    Дизайны я придлагал... но на это кто-то забил Движек... пишу сейчас для форума своей сети... ЗЫ: я катигорически против PHP... ЗЫ.ЗЫ: Perl or Perl + mason
  17. А мне было смешно mkdir [path]/directory mknod [path]/directory/null c 1 3 chmod 666 [path]/directory/null вот только как /dev/head и /dev/hands прикручивать, подсказать не могу... с такой проблемой не сталкивался
  18. новая все опубликованные работы
  19. чтобы запускалось на фоне: > [path]/[file] & чтобы запускалось при старте: # прописать в rc.local чтобы сама запускалось при вылете: # пишите скрипт проверки и запуска
×
×
  • Создать...