|
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера use Catalyst;/Записи в блоге |
|
use Catalyst;
Голосов: 1 Адрес блога: http://xeim.blogspot.com/ Добавлен: 2008-02-19 12:50:23 блограйдером Lurk |
|
Windows scripting: отправка электронной почты
2008-08-19 04:47:00 (читать в оригинале)К сожалению, в реальной жизни системному администратору приходится работать не только с unix-подобными системами. Иногда нужно решать задачи системного администрирования на плохо приспособленных и слабодокументированных операционных системах семейства windows. О таких хорошо зарекомендовавших себя инструментах как bash, perl или даже простой grep говорить не приходится. Что же мы имеем в наличии? Фактически имеется технология Windows Script Host с возможностью писать скрипты на языках JScript и VBScript. Мда, ну и выбор... и чтобы усугубить глубину собственного падения далее будем использовать язык VBScript.
Задача. Довольно часто встречается ситуация, когда скрипт должен уведомить администратора по электронной почте о наступлении какого-либо события или ситуации. Для примера напишем скрипт, посылающий уведомление о загрузке windows сервера.
Теория. Составной частью оперционных систем windows 2000/xp/2003 является динамическая библиотека сdosys.dll. Эта библиотека выдрана из почтового сервера MS Exchange и её функциональность сильно урезана. Тем не менее, с ее помощью можно сформировать сообщение электронной почты и отправить его внешнему почтовому серверу (MTA). Называется это счастье «CDO for Windows 2000», по ссылке доступна подробная документация из MSDN.
Решение. Исходный код скрипта email_notify.vbs:
Set email = CreateObject("CDO.Message")
With email.Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
= "mail.localnet"
.Update
End With
email.From = "robot@mycompany.ru"
email.To = "admins@mycompany.ru"
Set wshNetwork = WScript.CreateObject("WScript.Network")
email.Subject = wshNetwork.ComputerName & " включен"
email.Textbody = ""
email.TextBodyPart.charset = "koi8-r"
email.Send
Надеюсь, вам не составит труда пробится через синтаксис VBScript. Сам скрипт короткий и достаточно прозрачный для понимания. В основном используются методы объекта CDO.Message, они документированы по приведенной выше ссылке. Конечно, по сравнению с linux реализацией той же функциональности:
echo "" | mailx -s "`hostname` is up" admins@mycompany.ru
мы получили монстроподобного уродца, но тут уж ничего не поделаешь, такова участь несчастных администраторов windows.
На этом собственно задача отправки электронных писем из windows скриптов решена. По двойному клику на файле email_notify.vbs скрипт выполнится. Однако, нам еще осталось рассмотреть тонкий момент запуска скрипта при загрузке операционной системы. Ярлык на такой скрипт нельзя помещать в меню «Startup» («Автозагрузка»). Ведь такие ярлыки обрабатываются не при загрузке операционной системы, а при начале сеанса конкретного пользователя. По той же причине не подходят и прочие места автозапуска, которые в большом количестве могут быть обнаружены на просторах реестра windows. Некорректно такой скрипт запускать и как системную службу. Вот правильное решение:
Выполняем команду «Start > Run...» и вводим магическую команду «gpedit.msc»:
В открывшемся окне с заголовком «Group Policy Object Editor» выбираем ветку «Local Computer Policy > Computer Configuration > Windows Settings > Scripts (Startup/Shutdown)»:
Дважды кликаем на элемент «Startup» в правой части окна и появляется диалоговое окно «Startup Properties»:
Нажимаем кнопку «Add...». Во вновь отрывшемся диалоговом окне «Add a Script» задаем полный путь к нашему скрипту email_notify.vbs. Официально рекомендованный путь для размещения загрузочных скриптов — «C:\WINDOWS\system32\GroupPolicy\Machine\Scripts\Startup».
Нажимаем кнопку «OK», чтобы закрыть диалоговое окно «Add a Script». В списке скриптов диалогового окна «Startup Properties» появляется новый скрипт автозапуска.
Нажимаем кнопку «OK», чтобы закрыть диалоговое окно «Startup Properties». Закрываем программу «Group Policy Object Editor». Все, можно проверять запуск скрипта при загрузке.
Выводы. Не смотря на то, что вам придется писать уродливые скрипты на бейсике, а также не помешают навыки скоростного кликанья мышкой, операционная система windows худо-бедно поддается автоматизации системного администрирования.
IP прокси средствами фаервола Linux
2008-07-22 10:57:00 (читать в оригинале)Здесь я покажу пример проксирования IP пакетов средствами межсетевого экрана операционной системы Linux.
Как известно, фаервол в Linux один — netfilter. И так как он давно встроен в ядро linux, то не понадобится устанавливать никаких дополнительных программ. Используемый дистрибутив Linux также не имеет значения.
Сначала несколько слов о том, зачем все это нужно. Например у нас есть две сети: «Сеть A» и «Сеть B» соединенные linux-маршрутизатором. Компьютеру клиента из «Сети A» необходимо получить доступ к серверу в «Сети B». Причем обе сети имеют сложную организацию, не являются простыми ethernet сегментами. У нас имеется контроль над компьютерами клиента, сервером и маршрутизатором. Над остальными частями сетей контроль отсутствует.

Проксирование ip трафика осуществляется с помощью следующих команд, выполняемых на linux-маршрутизаторе:
iptables -t nat -I PREROUTING \
-s 172.18.247.24 -d 172.18.55.17 \
-j DNAT --to-destination 192.168.19.3
iptables -t nat -I POSTROUTING \
-s 172.18.247.24 -d 192.168.19.3 \
-j SNAT --to-source 192.168.19.218
Первая команда создает правило фаервола, заставлюящее менять адрес назначения (destination) пакетов на адрес сервера в «Сети B». Второй вызов iptables меняет адрес источника пакетов (source) на адрес маршрутизатора в «Сети B».
С компьютера клиента нужно будет обращаться на ip адрес маршрутизатора. Например использовать URL http://172.18.55.17 или выполнить команду:
ping 172.18.55.17
Фактически же на запросы будет отвечать не маршрутизатор, а сервер. Причем со стороны сервера будет казаться что запросы поступают от ip адреса маршрутизатора в «Сети B», т.е. от 192.168.19.218. Таким образом в каждой из сетей будут бегать пакеты только между разрешенными хостами в данной сети и все будут жить долго и счастливо.
Развертывание типового (эталонного) образа Ubuntu Linux
2008-07-04 03:24:00 (читать в оригинале)В конторе периодически закупаются новые компьютеры и сотрудникам IT-отдела приходится отрываться от более интересных дел и заниматься рутиной в виде установки и настройки операционной системы. Установка Ubuntu традиционным способом с помощью компакт-диска, установка драйверов, обновлений и дополнительных программ из интернета, настройка всего занимают слишком много времени. Одним из способов оптимизации процесса является создание типового образа операционной системы и затем быстрое его развертывание на новых компьютерах.
Создание эталонного образа.
Прежде всего необходимо создать эталонный образ Ubuntu. Для этого нам потребуется эмулятор виртуальных машин, например VirtualBox или VMWare. Далее:
- Устанавливаем Ubuntu в виртуальной машине.
Настраиваем установленную операционную систему. Например так:
- включить основные и дополнительные репозитарии и произвести обновление пакетов;
- установить полную локализацию системы;
- установить мультимедийные кодеки;
- установить пакеты с драйверами для видео карт nvidia и ati;
- установить flash плугин для браузера;
- установить плугин для открытия документов MSOffice 2007 (*.docx и др.) в OpenOffice;
- установить необходимые программы и утилиты: ssh сервер, vnc сервер, unrar, wine, virtualbox и много чего ещё...;
- указать сетевые настройки, например адреса dns и ntp серверов, маршруты;
- отключить загрузку не нужных демонов;
- отключить запуск не нужных заданий по расписанию cron;
- любые другие программы и/или настройки.
Настройка профиля пользователя по умолчанию. Для этого создаем пользователя, например testuser, логинимся под ним и производим настройку. Например:
- отключить эффекты рабочего стола;
- разрешить удаленный доступ к рабочему столу (vnc) и задать пароль для него;
- прописать настройки соединения в браузере: проски-сервер и прочее;
- в редакторе меню отключить запуск некоторых программ, например подменю "Игры";
- в настройках сеанса, отключить запуск не нужных программ;
- любые другие настройки.
После завершения настройки профиля, копируем содержимое /home/testuser в /etc/skel. Делаем владельцом пользователя root:
sudo chown -R root:root /etc/skel
Просматриваем директорию /etc/skel, удаляем все лишнее, заменяем в файлах абсолюный путь /home/testuser на относительный ~/.
Теперь при создании нового пользователя в его домашнюю директорию будет копироваться содержимое /etc/skel.
Для создания образа будем использовать livecd дистрибутив System Rescue CD.
После загрузки, поднимаем сеть:
sysresccd ~ # net-setup
Монтируем директорию по сети, куда мы будем копировать образ:
sysresccd ~ # mkdir /mnt/etalon
пример для sftp:
sysresccd ~ # mount -t fuse sshfs#login@192.168.0.1:/etalon /mnt/etalon
пример для smb:
sysresccd ~ # mount -t cifs -o user=login //192.168.0.2/etalon /mnt/etalon
Далее, монтируем жесткий диск виртуальной машины:
sysresccd ~ # mkdir /mnt/sda1 sysresccd ~ # mount /dev/sda1 /mnt/sda1
Создаем образ обычной утилитой tar:
sysresccd ~ # cd /mnt/sda1 sysresccd sda1 # tar cvzf /mnt/etalon/etalon-ubuntu8.04-20080704.tar.gz *
Образ операционной системы создан. У меня файл образа занимает около 1,5 Гб. Остается только записать его на dvd болванку.
Развертывание эталонного образа на новом компьютере
Развертывание образа эта операция ради которой и затевалось создание самого образа. Здесь нас снова поможет незаменимый инструмент системного администратора System Rescue CD. Загружаем новый компьютер с его помощью, при загрузке вводим опции, чтобы после можно было освободить dvd привод:
rescuecd docache doeject
Вытаскиваем livecd, устанавливаем в привод болванку с образом. Далее:
Разметка диска. Например: все место под корневой раздел, файловая система reiserfs, под swap 2ГБ:
sysresccd ~ # сfdisk /dev/sda sysresccd ~ # mkfs.reiserfs /dev/sda1 sysresccd ~ # mkswap /dev/sda2
Монтируем диски и разворачиваем эталон:
sysresccd ~ # mkdir /mnt/sda1 sysresccd ~ # mount /dev/sda1 /mnt/sda1 ... sysresccd ~ # mkdir /mnt/etalon sysresccd ~ # mount /dev/cdrom /mnt/etalon ... sysresccd ~ # tar -С /mnt/sda1 xvzf /mnt/etalon/etalon-ubuntu8.04-20080704.tar.gz
Правим файлы /mnt/sda1/etc/fstab и /mnt/sda1/boot/grub/menu.lst чтобы UUID метки дисков соответствовали новым томам. UUID метки можно узнать с помощью команды:
sysresccd ~ # blkid
Устанавливаем загрузчик grub в mbr область нового диска:
sysresccd ~ # grub-install --root-directory=/mnt/sda1 /dev/sda
Если все прошло успешно, то мы уже можем загрузить с операционную систему с жесткого диска. Дальше:
Сконфигурируем видео драйвер (в эталоне должен быть установлен универсальный драйвер vesa):
administrator@etalon:~# sudo dpkg-reconfigure -phigh xserver-xorg
После перезапуска иксов (Ctrl-Alt-Backspace) должен подняться нормальный видео драйвер.
Сменим имя хоста и сетевые настройки:
administrator@etalon:~# sudo gedit /etc/hostname administrator@etalon:~# sudo gedit /etc/network/interfaces
Компьютер готов к работе. После установки на рабочее место пользователя ещё потребуется настроить принтера, но это уже отдельная история.
После приобретения некоторого опыта установка операционной системы на новый компьютер занимает около 20 минут. Конечно предварительно должно быть потрачено время на создание эталонного образа и периодическое его обновление, но при больших количествах новых компьютеров оно окупается. Данный способ успешно применяется уже 1,5 года.
Установка 1С Предприятие 7.7 на WINE@Etersoft
2008-06-03 07:24:00 (читать в оригинале)Установка 1С Предприятие 7.7 (сетевая версия) на Ubuntu Linux Desktop 8.04 LTS с использованием коммерческой версии WINE@Etersoft SQL 1.0.8.
По большому счету, используемый дистрибутив Linux не имеет значения, но желательно чтобы он был в списке поддерживаемых. Предполагается что установка не эмулятора wine и драйвера ключей защиты Aladdin HASP 4 уже произведена:
admin@zam:~$ wine --version WINE@Etersoft 1.0 SQL (1.0.8), registration number is XXXX-XXXX. Legality check is available on the page http://sales.etersoft.ru/product/. admin@zam:~$ sudo /etc/init.d/haspd status [sudo] password for admin: Hardware protection keys support bundle. Etersoft (c) 2007 : haspd.init,v 1.102 2007/11/15 17:39:03 lav Exp $ Aladdin HASP 4/HL driver status: -e kernel module aksparlnx is loaded -e aksusbd is running -e winehasp is running -e hasplm is running Daemon version: 1.8.1 - key API (USB) version: 3.85, key API (parallel driver) version: 3.86 Smartkey 3 USB/LPT driver status: -e skeyd is running skeymon v11.5 - Smartkey server monitor Copyright (C) 2004 Eutron==================================================== Smartkey server statistics ==================================================== Opens keys: 0 servers: 1 ==================================================== Messages received: 0 sent: 0 error: 0 ==================================================== Clients logged: 0 removed: 0 ==================================================== SafeNet Sentinel status: -e usbdaemon is running -e SntlKeysSrvrlnx is running
Обязательно копируем дистибутив 1С в директорию диска C: — ~/wine_c. В противном случае можем нарваться на сообщение об ошибке:
Устанавливаем 1C Предприятие:
admin@zam:~$ wine ~/wine_c/1s/P770025/entrm/DISK1/setup.exe
Дальше установка идет обычным способом, как в Windows, просто серия скриншотов:
Устанавливаем конфигурацию, например такую:
admin@zam:~$ wine ~/wine_c/1s/conf/482/R770482/DISK1/setup.exe
Ещё скриншоты:
Далее запускаем из стартового меню «Приложения >> Wine >> Программы >> 1С Предприятие 7.7 >> 1С Предприятие» Первый запуск делаем в монопольном режиме и отвечаем на все задаваемые вопросы. После этого можно запускать 1С в обычном пользовательском режиме.
admin@zam:~$ wine "C:\\Program Files\\1Cv77\\BIN\\1cv7"
Установка PostgreSQL-1С для Slackware 12
2008-05-23 02:14:00 (читать в оригинале)Замечательная компания «Этерсофт» выпускает некий программный продукт SELTA@Etersoft. Для работы этого продукта требуется патченная версия СУБД PostgreSQL. Для скачивания доступны исходные коды и бинарные сборки для большого количества операционных систем.
Теперь хватит рекламы, приступаю к описанию проблемы. Среди поддерживаемых операционных систем заявлена Slackware 12. Однако, предоставленные пакеты не работают «искаробки» без доработки напильником. Справедливости ради надо заметить, что компания честно предупреждает о создании пакетов в неком производном от Slackware дистрибутиве MOPSLinux. Все это написано главным образом для себя, т.к. установку пришлось делать уже во второй раз, и не факт, что последний.
Шаг 1. Убеждаемся что установлен пакет sysvinit-functions:
root@darkstar:~# ls /var/log/packages/sysvinit-functions* /var/log/packages/sysvinit-functions-8.53-i486-2
Если нет, то устанавливаем его.
Шаг 2. Устанавливаем выкачанные пакеты PostreSQL 1C:
postgresql8.2.1C-8.2.4
postgresql8.2.1C-server-8.2.4
postgresql8.2.1C-libs-8.2.4
postgresql8.2.1C-contrib-8.2.4
Шаг 3. Почему-то при установке не создается необходимый пользователь и группа. Делаем это вручную:
root@darkstar:~# groupadd postgres root@darkstar:~# useradd -g postgres postgres root@darkstar:~# chown -R postgres:postgres /var/lib/pgsql
Шаг 4. Стартовый скрипт /etc/rc.d/init.d/postresql категорически не способен работать в Slackware. Накладываем патч:
84c84
< . /etc/sysconfig/network
---
> #. /etc/sysconfig/network
189c189
< $SU -s /bin/sh -l postgres -c "$PGENGINE/postmaster -p '$PGPORT' -D '$PGDATA' ${PGOPTS} &" >> "$PGLOG" 2>&1 < /dev/null
---
> $SU postgres -c "$PGENGINE/postmaster -p \"$PGPORT\" -D \"$PGDATA\" ${PGOPTS} &" >> "$PGLOG" 2>&1 < /dev/null
207c207
< $SU -s /bin/sh -l postgres -s /bin/sh -c "$PGENGINE/pg_ctl stop -D '$PGDATA' -s -m fast" > /dev/null 2>&1 < /dev/null
---
> $SU postgres -c "$PGENGINE/pg_ctl stop -D \"$PGDATA\" -s -m fast" > /dev/null 2>&1 < /dev/null
243c243
< $SU -l postgres -s /bin/sh -c "LANG=ru_RU.UTF-8 $PGENGINE/initdb --pgdata='$PGDATA' --auth='ident sameuser'" >> "$PGLOG" 2>&1 < /dev/null
---
> LANG=ru_RU.UTF-8 $SU postgres -c "$PGENGINE/initdb --pgdata=\"$PGDATA\" --auth=\"ident sameuser\"" >> "$PGLOG" 2>&1 < /dev/null
263c263
< $SU -l postgres -s /bin/sh -c "$PGENGINE/pg_ctl reload -D '$PGDATA' -s" > /dev/null 2>&1 < /dev/null
---
> $SU postgres -c "$PGENGINE/pg_ctl reload -D \"$PGDATA\" -s" > /dev/null 2>&1 < /dev/null
Шаг 5. Шаманства кончились. Далее инициализируем базу данных:
root@darkstar:~# /etc/rc.d/init.d/postgresql initdb Initializing database: [ OK ]
Шаг 6. Запуск сервера PostreSQL:
root@darkstar:~# /etc/rc.d/init.d/postgresql start Starting postgresql service: [ OK ]
Шаг 7. Прописываем запуск PostreSQL при загрузке компьютера:
root@darkstar:~# cd /etc/rc.d/rc3.d root@darkstar:/etc/rc.d/rc3.d# ln -s ../init.d/postgresql S40postgresql root@darkstar:/etc/rc.d/rc3.d# ln -s ../init.d/postgresql K60postgresql
Все, установка PostreSQL завершена. В завершение необходимо выполнить действия по его настройке.
|
| ||
|
+27 |
41 |
biletiks |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
|
-5 |
36 |
Счастливые мамашки |
|
-9 |
2 |
gvud |
|
-16 |
13 |
mydorian |
|
|
|
|
|
|
|
|
Загрузка...
взяты из открытых общедоступных источников и являются собственностью их авторов.
