blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · web view2021. 3....

75
Практическое занятие №1 Аварийное восстановление операционной системы. Практическая работа рассчитана на 6 академических часов. Цель работы. Научиться проводить аварийное восстановление ОС Windows 10 с помощью образа системы. Примечание: Предполагается, что обучающиеся имеют базовые навыки работы в программном продукте виртуализации VirtualBox (Oracle VM VirtualBox) Теоретическая часть. Резервирование данных Введение: терминология резервирования Сегодня на рынке можно обнаружить множество методов резервирования, опций и вариантов, а также программных решений. Можно выбрать для резервирования что-то попроще или более сложные варианты. Чтобы выбрать подходящее решение следует сначала познакомиться с терминологией. Так мы и поступим. Позвольте напомнить базовую терминологию, использующуюся в решениях резервирования данных. Оперативное и автономное резервирование o Оперативное резервирование (Online Backup). Это означает, что накопитель, на который будет проводиться резервирование или с которого будет выполняться восстановление, подключён. Жёсткий диск может или работать, или быть в режиме бездействия, ожидая команды пользователя. Он может быть либо подключён напрямую к компьютеру, либо доступен по сети. Но доступ к нему есть, накопитель готов к выполнению задач резервирования или восстановления данных. o Автономное резервирование (Offline Backup). Данный способ подразумевает хранение резервной копии на съёмном носителе, кассете или картридже, который перед использованием следует установить в привод.

Upload: others

Post on 22-Mar-2021

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Практическое занятие №1Аварийное восстановление операционной системы.

Практическая работа рассчитана на 6 академических часов.

Цель работы. Научиться проводить аварийное восстановление ОС Windows 10 с помощью образа системы.

Примечание: Предполагается, что обучающиеся имеют базовые навыки работы в программном продукте виртуализации VirtualBox (Oracle VM VirtualBox)

Теоретическая часть.

Резервирование данных

Введение: терминология резервирования

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

Позвольте напомнить базовую терминологию, использующуюся в решениях резервирования данных.

Оперативное и автономное резервирование o Оперативное резервирование (Online Backup). Это означает, что

накопитель, на который будет проводиться резервирование или с которого будет выполняться восстановление, подключён. Жёсткий диск может или работать, или быть в режиме бездействия, ожидая команды пользователя. Он может быть либо подключён напрямую к компьютеру, либо доступен по сети. Но доступ к нему есть, накопитель готов к выполнению задач резервирования или восстановления данных.

o Автономное резервирование (Offline Backup). Данный способ подразумевает хранение резервной копии на съёмном носителе, кассете или картридже, который перед использованием следует установить в привод.

Что касается ноутбуков, то тут есть ещё одна проблема: доступен он или нет. Поскольку ноутбук подразумевает мобильность, то не всегда можно получить окружение резервирования, будь то внешний жёсткий диск, стример или другой компьютер в офисной или домашней сети. Мы поговорим об этой ситуации позже.

Типы резервирования

Page 2: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

o Полное резервирование (Full Backup). Создаётся резервный архив всех системных файлов, обычно включающий состояние системы (system state), реестр и другую информацию, необходимую для полного восстановления ноутбука. То есть резервируются не только файлы, но и вся информация, которая необходима для работы системы.

o Добавочное (инкрементное) резервирование (Incremental Backup). Резервный архив составляется из всех файлов, которые были модифицированы после предыдущего резервирования, полного или добавочного.

o Разностное (дифференциальное) резервирование (Differential Backup). Архив состоит из всех файлов, которые были изменены после последнего полного резервирования.

o Выборочное резервирование (Selective Backup). Архив состоит только из отобранных файлов, например, из документов Word и Excel.

Поскольку каждое добавочное резервирование включает только файлы, которые были изменены после предыдущего резервирования, то при восстановлении большого числа файлов или полного диска (с полного резервирования и ежедневных добавочных копий) может потребоваться сначала выполнить восстановление с последней полной копии, а затем - восстановление со всех или с большинства добавочных копий по очереди. Большинство программ резервирования с подобными ситуациями справляются самостоятельно.

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

Но добавочное резервирование позволяет экономить место на носителе с резервными копиями, поскольку оно включает только те файлы, которые изменились после последнего резервирования. А отнюдь не все файлы, которые были изменены после последнего полного резервирования, как делает разностный способ.

Выборочное резервирование тоже может быть полным, разностным или добавочным. Конечно, при выборочном резервировании каждая резервная копия содержит только те файлы, которые вы указали. Обычно выборочное резервирование выполняется вручную с помощью программ (например, Super Flexible File Synchronizer) или командных утилит, таких как copy и xcopy. Для выполнения резервирования можно составить пакетные файлы с командами (.cmd).

Где хранить резервные копии?

Page 3: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Современные компьютеры (настольные и ноутбуки) содержат большое число интерфейсов и возможностей подключения, так что выбор стратегий резервирования достаточно богат. Ниже мы перечислим самые распространённые носители, используемые для резервирования данных.

Второй жёсткий диск является, наверное, наиболее популярной средой резервирования. У настольных ПК можно поместить второй привод внутри, но большинство ноутбуков позволяют установить только один внутренний жёсткий диск, поэтому, скорее всего, придётся подключать внешний накопитель по интерфейсу USB или FireWire. Есть и некоторые преимущества: многие модели внешних жёстких дисков поставляются с программами для резервирования. Кроме того, подобное решение, если брать 2,5" модели, будет весьма компактным. Вряд ли с ноутбуком будет удобно носить массивные оснастки для 3,5" винчестеров.

Приводы ZIP и стримеры уже долгое время используются для резервирования данных. Но кассеты и приводы ZIP не всегда идут в ногу со временем. Диски ZIP имеют максимальную ёмкость 750 Мбайт, а доступные по цене стримеры редко работают с кассетами больше 36 или 72 Гбайт (несжатая информация). С появлением новых 2,5" жёстких дисков, обладающих ёмкостью 100 Гбайт, и даже 160 Гбайт у некоторых моделей, альтернативные технологии становятся уже не такими привлекательными, как раньше. Но стримеры и приводы ZIP всё ещё активно используются на многих домашних компьютерах и в офисе.

Накопители PC Card подключаются через слот PCMCIA. Этот слот у многих пользователей ассоциируется с модемами, адаптерами или другими устройствами ввода/вывода, но в него можно подключать и специальные накопители.

Записываемые диски DVD или CD прекрасно подходят для резервирования. Что касается ноутбуков, то в этом случае будет лучше, если поблизости есть розетка питания. У подобного способа резервирования есть существенный недостаток: высокое энергопотребление, поскольку одновременно активны и жёсткий диск, и оптический привод. Кроме того, следует воспользоваться помощью программы записи дисков или программным обеспечением для резервирования, которое поддерживает такую возможность.

Встроенные "картоводы" Compact Flash/SD/MMC/MS есть практически во всех современных ноутбуках и у многих ПК. В них можно вставлять карты на 8 Гбайт, хотя 4-Гбайт версии стоят дешевле. Если для резервирования большого объёма данных такие карты не подойдут, ёмкости от 4 до 8 Гбайт вполне достаточно для хранения образа ОС, информации о состояния системы и важных документов.

Page 4: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Резервирование по сети довольно давно используется в организациях, когда ноутбуки и ПК сгружают резервные копии на централизованный сервер резервирования. Домашним пользователям можно пойти тем же самым путём, выгрузив резервную копию на другой компьютер в сети или сетевое хранилище. Но нужно будет воспользоваться программой для резервирования, которая поддерживает подобную функцию.

Как резервировать?

На рынке есть несколько прекрасных программных пакетов для резервирования с богатыми возможностями, например “Acronis True Image”, “Acronis Backup (Advanced)” и др. Впрочем, некоторые из них слишком дорогие для индивидуального использования. Поэтому мы рассмотрим приложение, которое бесплатно, простое в использовании и совместимо с разными версиями Windows (начиная с Windows 7) “Резервное копирование и восстановление (Windows 7)”. Кроме того, выбранная нами программа может работать с сетью. Но перед тем, как мы перейдём непосредственно к обзору утилиты, позвольте рассмотреть ещё некоторую общую информацию, касающуюся резервирования. А именно, какие файлы следует резервировать?

Что резервировать?

Возможно, вы уже выполняли выборочное резервирование, например, личных данных (контакты Outlook и почта, закладки Internet Explorer, документы Word, Excel и т.д.), чтобы затем восстановить эту информацию на другом компьютере Windows. Подобный способ не всегда удобен (в отличие от полного резервирования системы), но позволяет, кроме всего прочего, копировать рабочее окружение с одного компьютера на другой с минимальными затратами времени и усилий. Подобный способ создаёт дубликаты файлов, которые можно использовать и для других целей.

Реестр Windows содержит огромное количество информации об аппаратной начинке компьютера и ПО. Так что это ещё один важный объект для резервирования. Дело в том, что испорченный реестр может привести к нерабочим приложениям или даже системе. Поэтому, как показывает практика, во время резервирования Windows всегда следует копировать и реестр.

Но с этим возникают свои проблемы. Большинство утилит резервирования, включая собственную от Microsoft, не могут объединять копии реестра из разных резервных копий. Так что здесь придётся полагаться на полный рабочий образ системы Windows.

Page 5: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Резервное копирование и восстановление Windows 10 средствами Windows 7

Microsoft предоставляет надежное средство резервного копирования и восстановления в Windows 10, которое позволяет пользователям создавать резервные копии файлов и образы системы.

Процедура резервного копирования и восстановления файлов в Windows 10 изменилась, но вы по-прежнему можете использовать удобное средство архивации и восстановления как в Windows 7.

Архивация и восстановление Windows 10 средствами Windows 7В строке поиска введите «Панель», нажмите на появившийся результат «Панель управления».

Page 6: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Щелкните по ссылке «Архивация и восстановление (Windows 7)».

Page 7: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Нажмите ссылку «Настроить резервное копирование», чтобы начать.Вам будет предложено сохранить резервную копию на локальный диск, внешний накопитель или сетевой диск. В этом руководстве мы выбрали "Локальный диск D".

При нажатии на кнопку «Далее» откроется окно, в котором будет предложено создать резервную копию. Вы можете выбрать «Предоставить выбор Windows» или «Предоставить мне выбор».

Page 8: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Нажав на «Предоставить мне выбор», можно выбрать папки, которые необходимо включить в резервную копию, а так же образ системы для восстановления компьютера в случае неисправности.

Отметьте элементы, для которых хотите создать резервную копию, и нажмите «Далее».

Проверьте настройки архивации и нажмите «Сохранить параметры и запустить архивацию».

Page 9: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

После чего, начнется резервное копирование выбранных данных.

Процесс резервного копирования займет некоторое время и может сделать ваш компьютер менее отзывчивым.

Ниже настроек архивации данных в разделе "Восстановление" вы можете восстановить файлы всех пользователей системы или выбрать другой архив, из которого будут восстанавливаться файлы. Заметьте, что для восстановления из образа, может потребоваться создать диск восстановления системы.

Page 10: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Задание

1. Скачать установщик Windows 10. (http://files.gvsoft.ru/distrib/iso/)

2. С помощью Oracle VM VirtualBox и установщика Windows 10 создать рабочую виртуальную машину Windows 10.

3. В созданную виртуальную машину добавить новое внешнее устройство для хранения образов рабочей операционной системы.

4. Создать рабочий образ текущего состояния машины средствами ОС из виртуальной машины.

5. Смоделировать ситуацию логического либо физического повреждения жёсткого диска (hdd) виртуальной машины Windows 10.

6. Произвести восстановление виртуальной машины Windows 10 с помощью образа системы и установщика Windows 10.

7. Убедиться в работоспособности восстановленной системы.

8. Сделать отчет, в котором предоставить снимки экранов ключевых этапов операций 2-7 и прокомментировать каждый снимок.

Page 11: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Практическое занятие №2Программирование в интерпретаторе Windows.

Практическая работа рассчитана на 8 академических часов.

Цель работы. Научиться писать файлы пакетной обработки (скрипты) на языке интерпретатора командной строки ОС Windows.

Внимание! Работа носит потенциально опасный характер с точки зрения повреждения или нарушения работоспособности операционной системы, по этому, выполняется в заранее созданной виртуальной машине Windows.

Теоретическая часть.

Cmd.exe — интерпретатор командной строки (англ. command line interpreter) для операционных систем OS/2, Windows CE и для семейства операционных систем, базирующихся на Windows NT (англ. Windows NT-based). cmd.exe является аналогом COMMAND.COM, который используется в семействах MS-DOS и Windows 9x. В операционных системах семейства Windows NT для архитектуры IA-32 и OS/2 имеется и COMMAND.COM для совместимости со старыми программами. В настройках интерпретатора присутствует возможность изменить размер курсора, шрифт, цвет текста и размер окна.

Версии

Therese Stowell разработала начальную версию cmd.exe для Windows NT.[1] Хотя некоторые старые команды DOS не поддерживались или были изменены, cmd.exe всё ещё имеет большое количество унаследованных от DOS команд.

В отличие от command.com, cmd.exe в системах OS/2 и семействе Windows NT имеет более детальные сообщения, чем общее «Неверная команда или имя файла» (англ. "Bad command or file name") в случае неправильно введённых команд. Сообщения об ошибках cmd.exe выводит на том языке, который установлен в системе как текущий.

Разработка cmd.exe была фактически остановлена после выхода Windows 2000. Он всё ещё остаётся частью современных операционных систем Microsoft для персональных компьютеров (в том числе Windows 8, Windows Server 2012 и Windows 10) для обеспечения обратной совместимости. В качестве основной командной оболочки в этих системах рассматривается Windows PowerShell.

Примеры команд

shutdown -r -f -t 30 -c # «мягкая» перезагрузка компьютера через 30 сек

xcopy "C:\folder1" "D:\folder2" /e # копирование содержимого из одной папки в другую

control userpasswords # вызов окна учетных записей пользователей

ping -t "8.8.8.8" # запуск утилиты ping в непрерывном режиме

Page 12: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

ipconfig /all # просмотр полных сведений о сетевом интерфейсе

Пакетный файл (англ. batch file) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла программа-интерпретатор (как правило, COMMAND.COM или cmd.exe) читает его строка за строкой и последовательно исполняет команды. Пакетный файл — аналог скриптовых файлов командной строки (shell script) в Unix-подобных операционных системах.

Пакетные файлы в DOS имеют расширение .BAT; для других операционных систем они могут иметь другие расширения — например, .CMD в Windows NT и OS/2 или .BTM в 4DOS или подобных оболочках.

История

Поддержка пакетных файлов имелась в MS-DOS с самого начала. Командные интерпретаторы этой системы (а затем и Windows) предлагают два режима работы: интерактивный (когда пользователь подтверждает выполнение каждой команды пакетного файла) и обычный (когда все команды пакетного файла выполняются без подтверждения). Концепция обоих режимов была почерпнута из интерфейсов командной строки предшествующих ОС (таких как CP/M) и Unix-оболочек.

Командный интерпретатор в MS-DOS (а следом и в семействе Windows 9x) имеет название COMMAND.COM. Наиболее известным пакетным файлом в этих системах является AUTOEXEC.BAT, который автоматически исполняется COMMAND.COM во время загрузки операционной системы.

Семейство Windows NT (2k, XP и далее) не основаны на MS-DOS и включают интерпретатор cmd.exe, который частично совместим с COMMAND.COM. Некоторые старые возможности COMMAND.COM в нём недоступны, однако вместо них появились новые. COMMAND.COM включается в NT-подобные системы для обеспечения лучшей обратной совместимости.

Существуют и другие командные интерпретаторы, разработанные сторонними компаниями и предоставляющие расширенный синтаксис команд для пакетного программирования — например, 4DOS.

Также существуют компиляторы пакетных файлов (например, Bat To Exe Converter), преобразующие пакетные файлы в самостоятельные исполнимые программы.

Применение

Пакетные файлы полезны для автоматического запуска приложений. Основная область применения — автоматизация наиболее рутинных операций, которые регулярно приходится совершать пользователю компьютера: например, копирование, перемещение, переименование, удаление файлов; работа с папками; архивация и т.п.

Вирусы и программы-шутки могут быть написаны в виде пакетного файла, известны также генераторы вирусов, являющиеся пакетными файлами (Virra 1.0, BADtch R.A.T. 0.4, и другие).

Page 13: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Пакетные файлы поддерживают операторы if, goto и for (в системах семейства Windows NT его возможности существенно расширены), что позволяет обрабатывать результаты выполнения предыдущих команд или приложений и в зависимости от этого выполнять дальше тот или иной блок команд (как правило, в случае удачного завершения приложение возвращает 0 в переменной errorlevel; в случае неудачного — 1 или большее значение).

Пакетные файлы могут содержать как внутренние команды, обрабатываемые непосредственно COMMAND.COM или CMD.EXE, так и обращения к внешним утилитам, существующим в виде отдельных программ (файлов .EXE либо любых других исполнимых модулей).

Пример

Пример пакетного файла, вычисляющего выражения введённые пользователем:

@echo offchcp 65001title Калькуляторcolor 71:startecho Введите выражение:set /p exp=set /a result="%exp%"clsecho Вычисленоecho Ваше выражение:%exp%echo Результат:%result%echo.pauseclsgoto start

1. Выключение «эхо» (вывода выполняющихся строк на экран). 2. Смена текущей кодировки на "кириллицу" 3. Изменение заголовка окна Windows на строку «Калькулятор». 4. Изменение цвета текста и фона (тёмно-синий на светло-сером). 5. Создание метки. 6. Вывод строки «Введите выражение». 7. Создание переменной exp для хранения ввода пользователя. 8. Вычисление результата выражения и помещение его в переменную result. 9. Очистка экрана. 10. Вывод строки «Вычислено». 11. Вывод строки «Ваше выражение» и значения переменной exp. 12. Вывод строки «Результат» и значения переменной result. 13. Вывод пустой строки. 14. Остановка выполнения кода до нажатия любой клавиши. 15. Очистка экрана 16. Переход на метку start, выполнение кода начнётся со следующей после метки

команды.

Page 14: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Операторы командной строки

Можно перенаправить вывод команды на вход другой команды - это называется конвейером. Оператором конвейера в *nix и cmd, является символ вертикальной черты.

|

Например, вывод всех текстовых файлов в текущей папке покажет команда

dir | find ".txt"

Оператор объединения команд&

Пример: Команда1 & Команда2 – сначала выполнятся Команда1, а уже потом Команда2

Оператор И&&

Пример: Команда1 && Команда2 — Команда2 будет выполняться только в том случае, если произошло успешное выполнение Команды1

Оператор ИЛИ||

Пример: Команда1 || Команда2 — Команда2 будет выполняться только в том случае, если Команда1 не смогла выполниться.

Для группирования команд используются круглые скобки, примеры: (Команда1 & Команда2) && Команда3 – Если Команды1 и Команды2, выполнятся

успешно, произойдет выполнение Команды3. (Команда1 & Команда2) || Команда3 — Если Команды1 и Команды2, не выполнятся,

произойдет выполнение Команды3.

Про самые стандартные команды консоли можно узнать тривиальным способом:заходим в cmd и пишем:

help

Не будем подробно рассматривать команды типа copy (т.е. совсем тривиальные) так как о них можно прочитать введя команду типа

copy /?

Ввод-вывод

Рассмотрим команды, которые в основном хэлпе не написаны или описаны недостаточно подробно.Для начала хотелось бы написать про операторы перенаправления ввода-вывода.

Page 15: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Таковыми операторами являются >, >>, <. Они нам могут пригодиться как минимум в трех ситуациях:

Просмотр логов бат-файла Чтение длинных хелпов по консольным утилитам Подхватывание каких-либо переменных из лежащего рядом файла

При желании примеров можно придумать сколько угодно.

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

команда > имя_файла

Если при этом заданный для вывода файл уже существовал, то он перезаписывается (старое содержимое теряется), если не существовал — создается. Можно также не создавать файл заново, а дописывать информацию, выводимую командой, в конец существующего файла. Для этого команда перенаправления вывода должна быть задана так:

команда >> имя_файла

С помощью символа < можно прочитать входные данные для заданной команды не с клавиатуры, а из определенного (заранее подготовленного) файла:

команда < имя_файла

Приведем несколько примеров перенаправления ввода/вывода.

1. Вывод встроенной справки для команды COPY в файл copy.txt:

COPY /? > copy.txt

2. Добавление текста справки для команды XCOPY в файл copy.txt:

XCOPY /? >> copy.txt

3. Ввод новой даты из файла date.txt (DATE — это команда для просмотра и изменения системной даты):

DATE < date.txt

Команда FOR - организация циклической обработки результатов выполнения других команд, списков, и строк в текстовых файлахКоманда FOR используется для выполнения команды, заданной в виде параметра, для каждого элемента из набора. В качестве элементов могут использоваться файлы, каталоги, наборы строк.

Page 16: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Формат командной строки:

FOR %переменная IN (набор) DO команда [параметры]

Параметры:

%переменная - Однобуквенный подставляемый параметр.

(набор) - Определяет набор, состоящий из одного или нескольких элементов, обрабатываемых командой.

команда - Команда, которую следует выполнить для каждого элемента набора.

параметры - Параметры для команды, выполняемой по отношению к элементам набора.

В пакетных файлах для команды FOR используется запись

%%переменная вместо %переменная. Имена переменных учитывают регистр букв (%i отличается от %I).

Поддерживаются также дополнительные форма команды FOR:

FOR /D %переменная IN (набор) DO команда [параметры]

Ключ /D задает в качестве набора имена каталогов (не файлов).

FOR /R [[диск:]путь] %переменная IN (набор) DO команда [параметры]

Ключ /R задает выполнение команды для каталога [диск:]путь, а также для всех подкаталогов этого пути. Если после ключа /R не указано имя каталога, используется текущий каталог. Если набор - это одиночный символ точки (.), команда просто перечисляет дерево каталогов.

FOR /L %переменная IN (начало,шаг,конец) DO команда [параметры]

Ключ /L задает обработку набора из последовательности чисел с заданными началом, концом и шагом приращения. Так, набор (1,1,5) раскрывается в (1 2 3 4 5), а набор (5,-1,1) - в (5 4 3 2 1)

FOR /F ["ключи"] %переменная IN (набор-файлов) DO команда [параметры]

FOR /F ["ключи"] %переменная IN ("строка") DO команда [параметры]

FOR /F ["ключи"] %переменная IN ('команда') DO команда [параметры]

Ключ /F задает обработку файлов, строковых значений или результатов стандартного вывода другой команды. Набор файлов - содержит имена одного или нескольких файлов, которые по

Page 17: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

очереди открываются, читаются и обрабатываются. Обработка состоит в чтении файла, разбивке его на отдельные строки текста и разборе каждой строки в ноль или более подстрок. Затем вызывается тело цикла "for", при выполнении которого каждая найденная подстрока используется в качестве значения переменной. По умолчанию ключ /F выделяет из каждой строки каждого файла первую отделенную пробелами подстроку. Пустые строки в файле пропускаются. Необязательный параметр "ключи" служит для переопределения правил разбора по умолчанию. Он представляет собой заключенную в кавычки строку, содержащую одно или несколько ключевых слов для определения параметров разбора. Ключевые слова:

eol=символ - знак начала комментария в конце строки ( признак конца обрабатываемых данных строки). Задается в виде одиночного символа.

skip=n - число пропускаемых при обработке строк от начала файла.

delims=xxx - набор разделителей между обрабатываемыми элементами строк. По умолчанию, в качестве разделителей используются пробелы и знаки табуляции.

tokens=x,y,m-n - номера подстрок из каждой строки, передаваемые в тело цикла "for" для каждой итерации. Например, для обычного текстового файла, подстроками будут слова, а разделителями подстрок - пробелы или знаки табуляции. При использовании этого ключа выделяются дополнительные имена переменных. Формат m-n представляет собой диапазон подстрок с номерами от m по n. Если последний знак в строке tokens= является звездочкой, то создается дополнительная переменная, значением которой будет весь оставшийся текст в строке после разбора последней подстроки.

usebackq - режим обработки кавычек. Строка, заключенная в обратные кавычки, выполняется как команда, строка, заключенная в прямые одиночные кавычки, является строкой символов, а двойные кавычки могут использоваться для задания имен файлов, содержащих пробелы.

Поясняющий пример:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

Выполняется разбор файла myfile.txt. Все строки, которые начинаются с символа точки с запятой (eol=; ), пропускаются. Вторая и третья подстроки из каждой строки ( tokens=2,3 ) передаются в тело цикла "for", причем подстроки разделяются запятыми и/или пробелами. В теле цикла переменная %i принимает значение второй подстроки, %j - третьей, а %k - все оставшееся поле до конца строки после третьей подстроки . Имена файлов, содержащие пробелы, необходимо заключать в двойные кавычки. Чтобы использовать двойные кавычки, необходимо использовать параметр usebackq, иначе двойные кавычки будут восприняты как определение строки-литерала для разбора.

В данном примере переменная %i явно объявлена в инструкции "for", а переменные %j и %k объявляются неявно с помощью ключа tokens= . Ключ tokens= позволяет извлечь из одной строки файла до 26 подстрок. Следует помнить, что имена переменных FOR являются однобуквенными, с учетом регистра, поэтому одновременно не может быть активно более

Page 18: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

52 переменных, задаваемых как явно, так и неявно.

Команда FOR /F может также использоваться для обработки явно заданной строки, заключенной в одиночные кавычки и указанной в качестве параметра в скобках. Она будет разобрана так же, как одиночная строка, считанная из входного файла.

В качестве обрабатываемого набора, также, может быть использован вывод ( выходные данные ) другой команды. В этом случае используется в качестве параметра в скобках строка в обратных одиночных кавычках . Эта строка передается для выполнения дочернему обработчику команд CMD.EXE, а вывод этой команды сохраняется в памяти и разбирается так, как если бы это был файл. Пример:

FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i,

Выполняется команда SET, отображающая значения переменных среды и команда FOR /F выведет их перечень с использованием команды echo .

В команде FOR возможно использование ссылок на переменные. Допускается применение следующих синтаксических конструкций:

%~I - из переменной %I удаляются обрамляющие кавычки (")%~fI - переменная %I расширяется до полного имени файла%~dI - из переменной %I выделяется только имя диска%~pI - из переменной %I выделяется только путь к файлу%~nI - из переменной %I выделяется только имя файла%~xI - из переменной %I выделяется расширение имени файла%~sI - полученный путь содержит только короткие имена%~aI - переменная %I расширяется до атрибутов файла%~tI - переменная %I расширяется до даты /времени файла%~zI - переменная %I расширяется до размера файла%~$path:I - проводится поиск по каталогам, заданным в переменной среды path, и переменная %I заменяется на полное имя первого найденного файла. Если переменная path не определена или в результате поиска не найден ни один файл, то этот модификатор заменяется на пустую строку.

При объединении нескольких операторов можно получить следующие результаты:

%~dpI - переменная I раскрывается в имя диска и путь%~nxI - переменная I раскрывается в имя файла и его расширение%~fsI - переменная I раскрывается в полный путь с короткими именами%~dp$path:I - проводится поиск по каталогам, заданным в переменной среды path, и переменная I раскрывается в имя диска и путь к первому найденному файлу.%~ftzaI - переменная I раскрывается в строку, подобную выдаваемой командой DIR

В приведенных выше примерах переменные I и path можно заменить на другие допустимые значения. Синтаксическая конструкция с символами ~ заканчивается допустимым именем переменной цикла FOR.

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

Page 19: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

модификаторы, которые не различают регистр.

При использовании команды FOR в командных файлах, если внутри цикла нужно выполнить более одной команды, то они заключаются в скобки:

FOR %переменная IN (набор) DO ( команда1 [параметры] команда2 . . . )

Пример:

@echo OFFfor /L %%I in (1,1,5) DO ( echo FIRST%%I ECHO LAST%%I)

Обычно, в командных файлах команда FOR используется не только для разбора данных, но и их обработки, что требует использования переменных внутри цикла FOR. И здесь возникает проблема - изменения значений переменных не происходит, т.е. их применение внутри скобок невозможно. Подобное явление вызвано не логическими предпосылками, а всего лишь определенными особенностями реализации командного процессора CMD.EXE, и это нужно обязательно учитывать при обработке переменных внутри циклов команд FOR и IF. Другими словами, использование значений переменных внутри скобок, требует изменения стандартного режима интерпретации командного процессора. Разработчиками предусмотрена возможность запуска CMD.EXE с параметром /V:ON, что включает разрешение отложенного расширения переменных среды с применением символа восклицательного знака (!) в качестве разделителя. То есть, параметр /V:ON разрешает использовать !var! в качестве значения переменной var во время выполнения внутри циклов команд FOR и IF. Но на практике чаще используется возможность локального включения данного режима внутри командного файла специальной директивой:

Setlocal EnableDelayedExpansion

После чего, можно обрабатывать принимаемые переменными значения внутри цикла, используя вместо знаков процента восклицательные знаки. Синтаксически, использование обоих разделителей допускается, но результаты этого использования будут разными, что наглядно демонстрируется следующим командным файлом:

Setlocal EnableDelayedExpansion@ECHO OFFset VAR=beforeif "%VAR%" == "before" ( set VAR=after if "!VAR!" == "after" @echo Со знаком процента=%VAR% , Со знаком вопроса=!VAR!)

Команда set VAR=after выполняется внутри подпрограммы, ограниченной скобками и, если убрать команду Setlocal EnableDelayedExpansion или не использовать для получения значения переменной VAR восклицательные знаки, ее значение останется старым ( тем, что

Page 20: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

было установлено до входа в цикл команды FOR ).

Данная особенность реализации командного процессора Windows нередко приводит к неожиданным результатам при использовании групп команд, объединенных скобками в конструкциях FOR и IF и тогда, когда значение какой-либо переменной изменяется внутри цикла с одной командой. Например, для получения списка файлов текущего каталога такой командный файл работать не будет:

set LIST= for %%i in (*) do set LIST=%LIST% %%iecho %LIST%

Вроде бы, логически все верно, но не учтена особенность обработки значений переменных. Значение переменной LIST внутри цикла команды FOR изменено не будет, оно останется пустым ( задано командой SET LIST= ), каким и было на начало цикла FOR. Команда SET LIST= %LIST% %%I должна в каждом цикле менять значение переменной LIST на текущее, плюс символ пробела, и плюс текущее значение переменной I, которое принимает значение имени файла в текущем каталоге. Синтаксически, команда верная, но из-за озвученной выше особенности реализации командного процессора - не работает, и значение переменной LIST не изменяется. Для того, чтобы это произошло, командный файл нужно изменить, таким же образом, как и в примере для группы команд:

Setlocal EnableDelayedExpansionset LIST=for %%i in (*) do set LIST=!LIST! %%iecho %LIST%

Теперь, значение переменной LIST внутри цикла FOR будет изменяться, последовательно принимая значения имен файлов, разделенных пробелом ( set LIST=!LIST! %%i).

Эту особенность реализации CMD нужно учитывать и при использовании значений системных переменных внутри циклов, как например, переменной ERRORLEVEL:

IF !ERRORLEVEL!==0 вместо %ERRORLEVEL%==0

Весь список команд CMD Windows

Примеры работы с файлами и командой FOR

Чтобы произвести разбор файла, игнорируя комментарии, можно использовать следующую команду:

for /F "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k

Данная команда производит разбор каждой строки в файле Myfile.txt, игнорируя строки, начинающиеся с точки с запятой, и передает второй и третий элементы из каждой строки в тело цикла команды FOR. Элементы разделяются запятыми и/или пробелами. Тело инструкции FOR использует %i для получения второго элемента, %j для получения третьего элемента и %k для получения оставшихся элементов в строке. Если имена файлов содержат пробелы, их следует заключать в кавычки (например, «ИмяФайла»). Для использования

Page 21: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

кавычек необходима команда usebackq. В противном случае кавычки рассматриваются как определение символьной строки для разбора.

Переменная %i объявлена явно в инструкции FOR, а %j и %k объявлены неявно с помощью tokens=. С помощью tokens= можно указать до 26 элементов, если это не вызовет попытки объявить переменную с именем, большим буквы «z» или «Z».

Для разбора вывода команды с помощью помещения параметра Множество Имен Файлов в скобки можно использовать следующую команду:

for /F "usebackq delims==" %i IN (`set`) DO @echo %i

В данном примере перечисляются имена переменных среды в текущем окружении.

Как получить список всех компьютеров сети. Это можно сделать так:

FOR /F "skip=3 delims=\ " %%A IN ('NET VIEW') DO ECHO %%A>>c:\tmp\comps.txt

Имеем список всех компьютеров в сети в столбик.

copy con file.txt

Перенаправляет вывод с клавиатуры в файл (CTRL+Z — завершение ввода).type file.txt > prn

Печает на принтере file.txt

Задание

Внимание! Все задания выполнять в виртуальной машине windows 10 или windows xp!

1. Прочитать теоретический материал, проделать все примеры из него для понимания работы интерпретатора, его операторов, встроенных и внешних команд.

2. Создать файл среднесуточных температур воздуха в формате: «дата температура» в каждой строке файла. Сделать командный скрипт, который выведет список из этого файла на консоль (экран) и посчитает среднюю температуру, максимальную, минимальную, выведет её на консоль. Имя файла температур должно передаваться скрипту в качестве входного параметра.

3. С помощью командного скрипта создать файл, имя которого будет состоять из текущей даты и времени в формате: деньмесяцгод_часыминуты.dat.Его содержимое должно быть следующим: 1 строка — путь к файлу данного скрипта (полное имя его каталога=папки); остальное наполнение — список всех файлов и папок данного каталога.

4. Запустить одновременно 2 виртуальных машины с разными сетевыми именами в режиме «Тип подключения: Сетевой мост». Создать на диске каждой из машин папку public с общим сетевым доступом. Создать несколько файлов с расширениями *.avi, *.mpg, *.mpeg, *.mp3,

Page 22: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

имитирующих видео и файлы звуков. Написать скрипт, который осуществит поиск и отображение имён файлов указанных типов в сети.

5. В каталоге имеется множество файлов, которые надо переименовать так, чтобы номера были последовательными числами. В качестве параметра скрипту будем передавать маску файлов и первый номер для начала отсчета нумерации.

6. Написать скрипт, который объединяет все текстовые файлы в текущей директории в файл some.txt двумя способами: с использованием цикла for, с помощью команды copy.

7. Удаление старых файлов. Создать множество файлов вручную или с помощью скрипта в тренировочной папке. Написать скрипт, удаляющий старые файлы из заданного каталога, имя которого передаётся скрипту первым параметром. В качестве второго параметра скрипту передаём сколько свежих (последних) файлов хотим оставить.

Page 23: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Практическое занятие №3Создание скрипта для резервного копирования с помощью архиватора.

Практическая работа рассчитана на 4 академических часа.

Цель работы. Написать скрипт на языке командного интерпретатора Windows с использованием свободной программы для архивирования 7-Zip.

Теоретическая часть. Повторить часть теории из работы 2 по командному интерпретатору windows и созданию скриптов. Прочитать справку по свободному файловому архиватору 7-Zip по работе в режиме командной строки и через графическую оболочку.

Работа с 7zip из командной строкиЧто такое 7zip.

Приведенные ниже команды выполняются после перехода в каталог с установленным 7-Zip. Как правило, это:

cd "C:\Program Files\7-Zip"

Распаковать и заархивироватьОбщий синтаксис:

7z <команда> <ключи> <пути к каталогам и файлам>

РаспаковкаСинтаксис для распаковки:

7z <x или e> <архивный файл> -o"<путь, куда распаковываем>"

* ключ x распаковывает с сохранением каталожной структуры; e — все в одно место.

Пример:

7z x c:\temp\archive.7z -o"c:\temp\"

* в данном примере мы распакуем файл c:\temp\archive.7z в папку c:\temp

АрхивацияСинтаксис для архивирования:

7z a <ключи> <архивный файл> <объект архивирования>

Например:

7z a -tzip -mx5 -r0 c:\temp\archive.zip c:\temp

* в данном примере мы создадим zip - архив с уровнем компрессии 5; в архив попадет все содержимое всех каталогов; название для файла c:\temp\archive.zip; запаковываем все содержимое папки c:\temp.

7z a -mx1 c:\temp\archive.7z c:\temp\file1.txt c:\temp\file2.txt c:\temp\file3.txt

* в данном примере мы архивируем файлы c:\temp\file1.txt, c:\temp\file2.txt, c:\temp\file3.txt с низкой компрессией 1; в итоге будет получен архив c:\temp\archive.7z.

Page 24: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

* описание ключей ниже.

Резервное копирование с помощью 7-ZipОдин из самых распространенных примеров использования 7zip из командной строки — резервирование данных.

Для начала переходим в каталог с установленной программой:

cd "C:\Program Files\7-Zip\"

* так как в пути имеется пробел, его необходимо писать в кавычках.

Сама команда выглядит следующим образом:

7z a -tzip -ssw -mx1 -pPassword -r0 C:\Temp\backup.zip C:\Data

* в данном примере мы архивируем содержимое папки C:\Data и сохраняем в виде файла C:\Temp\backup.zip.* описание ключей смотрите ниже или командой 7z —help.

Описание ключей и команд 7zВ синтаксисе работы с 7zip идут команды и ключи.

Описание основных командКоманда Описаниеa Добавление файлов в архив. Если архивного файла не существует, создает его.d Удаление файла из архиваe Извлечение файлов из архива. Все файлы оказываются в одной папке.l Вывод содержимого архива.rn Переименовывание файла внутри архива.u Обновление файлов в архиве. Если файла нет, создает новый.x Извлечение файлов из архива. Пути сохраняются.

Описание ключейЧасто используемые:

Ключ Описание-t Тип архива. По умолчанию создаются файлы в формате 7z. Примеры, -tzip, -tgz

-ssw Включить файл в архив, даже если он в данный момент используется. Для резервного копирования очень полезный ключ.

-mx Уровень компрессии. 0 - без компрессии (быстро), 9 - самая большая компрессия (медленно). Например, -mx4

-p Пароль для архива. Например, -pStrong2!3paSsword-o Задает директорию, например, в которую будут распакованы файлы.

-r Рекурсивное архивирование для папок. Задается числом от 0 (все каталоги) до количества уровней каталогов, которые нужно включить в архив.

Другие полезные ключи:

Ключ Описание-sdel Удалить файлы после создания архива.

Page 25: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Ключ Описание-sfx Создание самораспаковывающегося sfx - архива.-y Утвердительно ответить на все вопросы, которые может запросить система.-x Исключить файлы или папки из архива.

-v Позволяет разбить архив на фрагменты. Если указать -v1g, то архив будет разбит на части по 1 Гб.

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

Полный список ключей и команд можно получить командой 7z --help.

ПримерыИсключение файлов и папок

Отдельно стоит рассказать про возможность исключения. Есть два варианта ее применения.

Первый — создать список исключений в отдельном файле.

Пример команды 7z:

7z.exe a -tzip -ssw -mx9 -r0 [email protected] C:\Temp\backup.zip C:\Data

* где exclus.txt — файл с исключениями.

Пример файла с исключениями:

test*.tmp

* в данном примере мы исключаем каталог с именем test и все файлы с расширением tmp.

Второй — указать исключение в команде.

7z.exe a -tzip -ssw -mx9 -r0 -xr!Шаблон* C:\Temp\backup.zip C:\Data

Резервирование баз 1С

Данные базы 1С находятся в файлах с расширением .1CD. Для их резервирования используем команду:

7z.exe a -tzip -mmt=2 -ssw -mx5 -r0 C:\Temp\backup.zip D:\Bases_1C\*.1CD

Задание.

1. Создать виртуальную машину для ОС Windows XP на Oracle VM VirtualBox.

2. Скачать и подключить готовый образ Windows XP для виртуальной машины.http://files.gvsoft.ru/distrib/%d0%9e%d0%b1%d1%80%d0%b0%d0%b7%d1%8b%d0%92%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d1%85%d0%9c%d0%b0%d1%88%d0%b8%d0%bd/winxp.vdiВсе дальнейшие действия выполнять в гостевой виртуальной машине!

Page 26: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

3. Скачать и установить свободный файловый архиватор 7-Zip с высокой степенью сжатия данных. https://www.7-zip.org/

4. Изучить основные ключи и параметры работы архиватора 7-Zip. По умолчанию в ОС семейства windows он устанавливается в C:\Program Files\7-Zip. Имя файла 7z.exe.

5. Создать любой каталог (папка) на жестком диске, наполнить его различными файлами (не более 150Мб) или воспользоваться уже существующей папкой.

6. Написать скрипт backup.cmd, который будет создавать архив любой папки, переданной ему в качестве 1-го входного параметра (источник). В качестве 2-го параметра должен передаваться путь к папке (приёмник), где будут размещаться все файлы архивов. Имя выходного файла архива должно формироваться по шаблону: backup_dd-mm-yy_часыминуты.zipгде: dd,mm,yy – текущие день, месяц, год. Часыминуты – текущее время.

7. Запустить скрипт проверить его работоспособность.

8. Создать расписание запуска данного скрипта ежедневно в 22:00. Проверить запуск по расписанию вне очереди.

Page 27: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Практическое занятие №4Изучение языка VBScript для программирования в сервере сценариев

Windows (WSH). Практическая работа рассчитана на 8 академических часов.Цель работы. Изучить базовые основы программирования на языка сценариев VBScript.

Внимание! Работа носит потенциально опасный характер с точки зрения повреждения или нарушения работоспособности операционной системы, по- этому, выполняется в заранее созданной виртуальной машине Windows!

Теоретическая часть.

VBScript (VBS, развернуто Microsoft Visual Basic Script Edition, иногда Visual Basic Script) — язык сценариев, созданный компанией Microsoft на основе языка Visual Basic, предназначенный для применения в приложениях, использующих технологию Active Scripting.

Область примененияСценарии (скрипты) на языке VBScript чаще всего применяются в следующих областях, использующих продукцию Microsoft:

в сервере сценариев Windows (WSH), предназначенном для автоматизации администрирования систем Windows;

серверный программный код в веб-страницах ASP; клиентские скрипты в браузере Internet Explorer и других приложениях,

использующих его движок, в частности HTML Application.

VBS-сценарии, в зависимости от области применения, могут располагаться в отдельных текстовых файлах (обычно, с расширением .vbs) или встраиваться в документы на других языках (например, HTML).

Для работоспособности скриптов в системе должно присутствовать исполняющее ядро («движок») языка (библиотека vbscript.dll).

Правила языкаВ Visual Basic работают следующие правила:

длина строки не ограничена; регистр символов не учитывается; количество пробелов между параметрами не учитывается; строку команды можно разрывать, а на месте разрыва нужно вставлять символ «_»; максимальная длина имени переменной 255 символов; комментарии обозначаются символом «'». несколько команд можно расположить на одной строке, разделив их символом «:»

Page 28: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

ПеременныеПо умолчанию переменные в сценариях объявляются автоматически при первом использовании в теле скрипта, если это не запрещено директивой Option Explicit. Если же в начале сценария объявить директиву Option Explicit, то все переменные нужно определять заранее с помощью следующих конструкций:

Dim ValueName1 ' переменная, доступная всем подпрограммам;Public ValueName2 ' переменная, доступная всем подпрограммам;Private ValueName3 ' переменная, доступная только текущей программе и её подпрограммам;

Константы объявляются в начале сценария с помощью конструкции:

Const ConstName1 = Value1 ' константа, доступная всем подпрограммам;Public Const ConstName2 = Value2 ' константа, доступная всем подпрограммам;Private Const ConstName3 = Value3 ' константа, доступная только текущей программе и её подпрограммам;

Тип переменной присваивается автоматически после внесения в неё первого значения. В Visual Basic существуют следующие типы данных:

empty — неинициализированная переменная; null — пустая переменная; boolean — логический тип, возможные значения: False, True или 0, 1; byte — 8-битное целое число без знака, возможные значения: 0 .. 255; integer — 16-битное целое число, возможные значения: −32768 .. 32767; long — 32-битное целое число, возможные значения: −2147483648 .. 2147483647; currency — денежный тип, возможные значения: −922337203685477,5808 до

922337203685477,5807; single — число с плавающей точкой, возможные значения: −3.402823e38 ..

−1.401298e-45 для отрицательных чисел и 1.401298e-45 .. 3.402823e38 для положительных чисел;

double — число с плавающей точкой, возможные значения: −1.79769313486232e308 .. −4.94065645841247e-324 для отрицательных чисел и 4.94065645841247e-324 .. 1.79769313486232e308 для положительных чисел;

date — дата, возможные значения: 01.01.1900 .. 31.01.9999; string — строковая переменная, вместимость до 2 миллиардов символов; object — указатель на объект; error — код ошибки.

В VBS-сценариях возможно использование массивов переменных, которые позволяют хранить списки, таблицы и даже более сложные конструкции. Одномерные массивы (списки) могут быть динамическими, то есть они позволяют изменять свой размер в ходе работы сценария. Все массивы объявляются командой Dim:

Dim ArrayName(Dimension)

Пример

Page 29: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Вот пример небольшой программы на языке VBScript, которая выводит диалоговое окно с сообщением (символы после знака апостроф являются комментариями):

' Объявление переменной:Dim strMessage' Присваивание переменной значения:strMessage = "Википедия — свободная энциклопедия"' Вывод окна с сообщением:MsgBox strMessage

По эффекту работы она аналогична прямой инструкции

MsgBox "Википедия — свободная энциклопедия"

Объекты, их методы и свойстваVBScript, как и его родитель — язык Visual Basic, является объектно-ориентированным языком программирования, то есть основной концепцией является понятие объектов и классов.

Класс — это тип, описывающий устройство объектов. Объект подразумевает под собой нечто, что обладает определённым поведением и способом представления, объект — это экземпляр класса. Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

Все объекты, с которыми работает VBScript, имеют методы и свойства. Чтобы обратиться к методу, необходимо указать объект, а через точку - метод с необходимыми параметрами.

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

Объекты и классыИзучим работу с внешними объектами в vbscript сценариях и научимся создавать собственные классы. Для начала, давайте по порядку. Под объектом мы будем рассматривать некую библиотеку (в большинстве случаев это внешний файл с расширением dll), которая содержит методы и свойства для выполнения тех или иных задач (работа с файловой системой, создание форм и так далее).

Давайте для начала рассмотрим, как происходит подключение в vbscript внешних объектов. Для этого используются две функции:

CreateObject( servername.typename[, location ] ) - Создаёт экземпляр объекта-сервера автоматизации и возвращает ссылку на него. Здесь servername - имя приложения, являющегося сервером; typename - тип или класс; location - сетевое имя компьютера.

В большинстве случае, достаточно указать только servername.typename, например:

Dim FSO, WSO Set FSO = CreateObject("Scripting.FileSystemObject") Set WSO = CreateObject("Scripting.WindowSystemObject")

Page 30: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Как видим, сначала нужно объявить переменную, далее мы используем ключевое слово Set после которого следует наша переменная. После того, как мы создали ссылку на нужный объект в vbscript сценарии, к нему можно будет обратиться уже через имя переменной.

GetObject([pathname][,classname]) - Возвращает ссылку на объект класса classname, который хранится в отдельном файле, путь к которому задает параметр pathname. Как правило, данная функция, используется при работе с Windows Management Instrumentation:Dim objServiceSet objService = GetObject("WinMgmts:\\.\Root\CIMV2")

Тут мы подключаемся к пространству имен CIMV2. В какой-то момент, может отпасть надобность использовать vbscript объекты, что бы освободить на них ссылку, используется ключевое слово Nothing:

Set FSO = Nothing Set WSO = Nothing Set objService = Nothing

А нельзя ли определить собственные объекты vbscript в теле сценария? Конечно можно, только называться они будут классами. Общий синтаксис при создании класса vbs таков:

Class <имя> Методы и свойства End Class

Как видим, всё в принципе просто, давайте создадим свой первый класс (объект) vbscript:

'**************************************** ' Простой (класс) объект vbscript ' class.vbs '**************************************** dim my_class

' Создаём класс new_class Class new_class Dim my_arr(3), a,b Function my_fun(x,y) my_fun=x+y End Function End Class

' создаём ссылку на экземпляр vbs класса new_class set my_class = new new_class

'Заполняем свойства my_class.my_arr(0) = 10 my_class.my_arr(1) = "строка" my_class.my_arr(2) = #10/10/2000# my_class.my_arr(3) = 1.32

my_class.a = 200 my_class.b = 500

Page 31: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

MsgBox my_class.my_arr(2) MsgBox my_class.my_fun(10,100)

Тут мы сначала создали объект my_class, в нём мы прописали одну функцию, две переменные и один массив. Далее, мы создали ссылку на наш объект vbscript через переменную new_class. Фактически, теперь мы взаимодействуем не с самим классом, а с его копией. Что бы не писать лишние строки кода при заполнении свойств, можно прибегнуть к помощи одной конструкции.

With ... End With - Позволяет обращаться к свойствам объекта vbscript без написания его имени, например:

with my_class .my_arr(0) = 10 .my_arr(1) = "строка" .my_arr(2) = #10/10/2000# .my_arr(3) = 1.32 ............................................... .a = 200 .b = 500 end with

Далее, для членов классов vbs в языке vbscript есть следующие ключевые слова:

Private – видимость только внутри кода для заданного класса vbs.

Public – доступность как внутри, так и снаружи (значение присуще по умолчанию).

Также, если переменной нужно присвоить значения сразу в теле класса, то можно использовать функцию Property Get, её синтаксис следующий:

Property Get имя переменной Имя переменной=значение End Property

Хотя по правде, есть и другие функции, однако, если их сейчас описывать, то это лишь запутает ситуацию, поэтому, давайте пока посмотрим на следующий пример:

'**************************************** ' Пример простого vbs класса ' class_1.vbs '**************************************** dim my_class

' Создаём класс new_class Class new_class ' глобальная видимость dim a ' Локальная видимость Private b ' только чтение Property Get c c=100 End Property

Page 32: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Function my_fun(x,y) my_fun=x+y End Function End Class

' создаём ссылку на экземпляр vbs класса new_class set my_class = new new_class

' Возникнет ошибка MsgBox my_class.b

'Заполняем свойства with my_class .a = 200 ' Возникнет ошибка .b = 500 ' Возникнет ошибка .c = 300end with

MsgBox my_class.c

Данный пример демонстрирует, как ведут себя те или иные ключевые слова или функции в теле vbscript объекта (класса).

МассивыИзучим vbscript массивы и функции для работы с ними. Массивы языка vbscript могут быть как одномерными, так и многомерными, нумерация элементов массива начинается с нуля. Если не прибегать к дополнительным функциям, то объявление массива в языке vbscript подобно объявлению переменной, только после имени переменной следуют круглые скобки. Если в круглых скобках ничего нет, то массив является динамическим – его длину можно изменять.

Вот простые примеры:

dim my_arr(10) '11 элементов dim my_matrix(3,4) 'матрица размером 4 (строки) на 5 (столбцов) dim my_dyn() 'динамический

Присвоение значений производится через индекс:

my_arr(0) = 100 my_arr(1) = "строка" my_arr(2) = #10/05/2000# my_matrix(0,0) = 25 my_matrix(0,1) = 250 my_matrix(2,3) = 2.5

Если мы объявили динамический массив vbscript, то для дальнейшего определения его размера служит ключевое слово ReDim:

Page 33: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

ReDim my_dyn(50)

Вы можете менять размерность неограниченное количество раз. Что бы произвести сохранение уже имеющейся информации используется ключевое слово Preserve:

ReDim Preserve my_dyn(80)

Что бы полностью очистить содержимое, применяется команда Erase:

Erase my_matrix

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

Array(arglist) – В качестве параметра arglist передаются аргументы массива, которые разделены между собой запятыми, например:

'***************************************** ' vbscript массивы ' array_1.vbs '***************************************** Option Explicit

dim new_arr(4), i, s dim my_arr, index, list

new_arr(0) = 0 new_arr(1) = "строка" new_arr(2) = 33.5 new_arr(3) = 100 new_arr(4) = #10/05/2000# for each i in new_arr s = s & i & vbCrLf next

MsgBox s

my_arr = Array(0,"строка",33.5,100,#10/05/2000#) for each index in my_arr list = list & index & vbCrLf next

MsgBox list

В данном примере мы создали два vbscript массива: new_arr – обычным способом и my_arr – с помощью функции Array, второй подход более эффективен, так как экономит строки кода.

IsArray(varname) – Данная функция позволяет определить, является ли переменная varname массивом, если да, то функция вернет true, и false в противном случае.

Page 34: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

UBound(имяМассива [, измерение]) - Позволяет определить верхнюю границу массива (имяМассива), параметр [,измерение] не является обязательным, он актуален в том случае, если происходит работа с многомерными. Параметры [,измерение] принимает целые значения, начиная от 1, по умолчанию параметр [, измерение] равен 1. Пример:

'***************************************** ' vbscript массивы ' функция UBound ' UBound.vbs '***************************************** Option Explicit

dim matrix(2,3) dim a, b matrix(0,0) = 2 matrix(0,1) = 4 matrix(0,2) = 5 matrix(1,0) = 4 matrix(1,1) = 5 matrix(1,2) = 99 matrix(1,3) = 6 a = UBound(matrix,1) b = UBound(matrix, 2)

MsgBox a MsgBox b

MsgBox matrix(1,2)

LBound(arrayname[, dimension]) – Аналог предыдущей функции, но выводит нижнюю границу.

Теперь давайте рассмотри более серьезные виды массивов языка vbscript.

Массив массивов – такого вида конструкция может привести новичка в заблуждение, и он подумает, что перед ним двумерный, хотя это ошибка, смотрим на пример:

'***************************************** ' vbscript массивы ' array_2.vbs '***************************************** Option Explicit

dim new_arr, s, i,j dim a, b s=""

' Это не двумерный!!! new_arr = Array(Array(2,4,5), Array(8,5,99,6))

for i=0 to 2 s=s & " " & new_arr(0)(i) next s=s & vbCrlf for j=0 to 3 s=s & " " & new_arr(1)(j) next

Page 35: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

MsgBox s

В данном примере vbscript массив new_arr является одномерным и состоит из двух значений, при чем, каждое значение является также одномерным массивом. Видим, что в предыдущем примере мы использовали синтаксис вида: matrix(1,2), а тут - new_arr(1)(j). Различие, как говорится – на лицо.

Функция в качестве значения. Может возникнуть ситуация, когда надо сохранить не просто значение, а функцию, вот тут то и происходит головная боль. Давайте взглянем на следующий пример:

'*****************************************' vbscript массивы' вызов функции' array_3.vbs'*****************************************

dim new_arr(4), i, s

function new_fun(x,y) new_fun=x+y end function

function new_fun_1(x,y) new_fun_1=x+y end function

new_arr(0) = 0new_arr(1) = "строка"

'Создаем ссылку на функцию set new_arr(2) = getref("new_fun") ' Так делать неправильно new_arr(3) = new_fun_1(x,y) new_arr(4) = #10/05/2000#

MsgBox new_arr(2)(10,5) ' Ошибка!!! MsgBox new_arr(3)(10,5)

Объект WScript.Shell метод Run - запуск внешних программРассмотрим метод Run Wscript.Shell объекта. Данный метод служит для запуска внешних приложений из тела сценариев Windows Script Host.

Для начала рассмотрим теоретическую часть, а потом приступим к программированию.

Run(strCommand, [intWindowStyle], [bWaitOnReturn]) – данный метод служит для запуска другого приложения как в консольном режиме (командная строка), так и в оконном. При открытии исполняемого файла создается новый процесс. Ему передаются следующие параметры:

Page 36: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

strCommand – данный параметр является обязательным, поскольку задает путь для файла или команды. Стоит учитывать, что если путь содержит пробелы, то его обязательно стоит заключать в двойные кавычки, иначе, возникнет ошибка "The system cannot find the file specified" – система не может найти указанный файл. Также полезно, использовать переменные окружения в пути к приложению, это экономит время.

intWindowStyle – является необязательным, и задает стиль окна. Параметр может принимать целые значения от 0 до 10. Согласно документации, в языке vbscript можно использовать именованные константы, но, они не всегда дают ожидаемый результат, и так как эти значения между собой повторяются, я упомянул лишь три: 0 – скрывает окно, будет виден только процесс в диспетчере задач. 1 – нормальный режим 2 – свернутый вид 3 – развернутый вид

bWaitOnReturn – может принимать true – сценарий будет ожидать завершения работы запущенного приложения, и только потом перейдет к выполнению следующей строчки кода, false – будет продолжатся выполнение сценария независимо от того, завершилась работа запущенного приложения или нет. Также следует учесть, что если установлено true, то метод вернет код выхода вызванного приложения, если установлено false – всегда будет возвращаться ноль.

Настало время заняться программированием. Для начала напишем программный код на языке VBScript:

'******************************************************* ' метод wscript shell run ' Запуск бл0кн0та и калькулятора ' wshshell_run.vbs '******************************************************* Option Explicit

dim path, WshShell

' задаем путь к системной папке path = "%WINDIR%\System32\"

' Создаем ссылку на объект WscriptShell set WshShell = WScript.CreateObject("Wscript.Shell")

' Открываем notepad (Wshshell Run) WshShell.Run path & "notepad.exe", ,true MsgBox "Текстовый редактор завершил работу!!!" & vbCrLf & "Запускаем калькулятор"

' Открываем calc WshShell.Run path & "calc.exe",2,false MsgBox "Этот текст выводится сразу"

Проанализируем логику работы данного сценария. Переменная path хранит путь к папке System32, так как в ней у нас лежат исполняемые файлы notepad и calc. Переменная

Page 37: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

окружения "%WINDIR%" позволяет сократить строки кода и не писать "C:\\Windows". WshShell содержит ссылку на экземпляр объекта Wscript.Shell, видим, чтобы создать саму ссылку, мы перед переменной прописали ключевое слово set, после чего идет вызов метода CreateObject класса WScript. Далее мы запускаем блокнот с помощью метода Run Wscript Shell класса, через переменную WshShell. Для программы notepad мы третий параметр команды Run поставили в true, поэтому, исполняемый файл calc запустится только после закрытия приложения блокнот, плюс, перед этим появится информационное сообщение.

Рассмотрим еще один пример.

'******************************************************* ' метод wscript run ' Запуск бл0кн0та и передача ему текста ' wscript_run.vbs '******************************************************* Option Explicit

dim WshShell

' Создаем ссылку на WscriptShellset WshShell = WScript.CreateObject("Wscript.Shell")

' Открываем текстовый редактор и вставляем в него содержимое сценарияWshShell.Run "notepad.exe " & WScript.ScriptFullName,1,trueMsgBox "Мы открывали текстовый редактор"

В этом примере мы также запустили приложение notepad, но, не прописывали путь к нему. Дело в том, что команда Run объекта Wscript.Shell работает как команда "Windows Пуск/Выполнить", и при запуске приложения, сперва идет его поиск в переменных среды Windows, в которые, и входит папка System32. Также видим, что мы передали программе содержимое нашего сценария (строка WScript.ScriptFullName), фактически, скопировали в него весть текст скрипта.

И так, давайте подытожим… Мы разобрали метод Run класса Wscript Shell, который позволяет запускать заданное приложение, и передавать ему нужные параметры, так, мы можем открыть текстовый редактор и вставить в него нужный текст. Аналогично, можно использовать и метод Exec, который тоже позволяет запускать исполняемый файл, но в отличии от метода Run, он позволяет контролировать работу исполняемого файла.

Передача значения переменной из скрипта командного интерпретатора в VBScriptЗначение переменной передается в скрипт через командную строку. Пример:

Файл From.cmd:

set ppp="Hello World from cmd script!"Into.vbs %ppp%

Файл Into.vbs:

Set objArgs = WScript.Arguments

Page 38: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

WScript.Echo objArgs(0)

Вернуть результат работы из cmd скрипта в скрипт VBScriptМожно выполнив команду, которая возвращает Errorlevel, например: cmd /c exit /b 5где 5 - произвольный код в пределах от -2147483648 до +2147483647

Для проверки запустите скрипт RunCmdWithResult.vbs:

Set oShell = CreateObject("WScript.Shell")r = oShell.Run("rrr.cmd", 1, True)WScript.Echo r

который запускает cmd — скрипт rrr.cmd:

@echo offexit /b 13

Будет выдано "13"

Справка по объектам Windows Script Hosthttps://www.script-coding.com/WSH.html

Справка по объекту WshShellhttps://www.script-coding.com/WSH/WshShell.html#3.4.

Задание

1. Прочитать материал, проделать все примеры из него для понимания работы интерпретатора VBScript, его операторов.

2. Написать скрипт, который переставляет местами элементы главной и побочной диагоналей числовой матрицы D(6,6). Полученную матрицу вывести на экран.

3. Написать скрипт, запускающий приложение notepad.exe в нормальном режиме если архитектура процессора — “AMD64“, если — "x86", запустить приложение в свёрнутом виде. Объект WshShell (Wscript.Shell).

4. Используя объект WshNetwork (Wscript.Network) написать функцию, которая проверяет наличие подключенного сетевого диска для заданной буквы и процедуру подключения сетевого диска для заданной буквы. Проверить, есть ли подключение для заданного сетевого диска, если его нет - попробовать выполнить подключение.

Page 39: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Практическое занятие №5Создание скрипта для автоматической отправки данных на электронную

почту. Практическая работа рассчитана на 6 академических часов.

Цель работы. Научиться отправлять электронную почту на языке сценариев VBScript, используя объектную модель CDO.

Внимание! Работа выполняется в заранее созданной виртуальной машине Windows!

Теоретическая часть.

Объектная модель CDO, отправка и получение сообщений средствами CDO

Outlook — прежде всего программа для работы с электронной почтой, и, если вы обратились к его объектной модели, то очень может быть, что вы хотели автоматизировать именно операции с электронной почтой. Как мы уже выяснили, нормальной работе с электронной почтой сильно мешают ограничения безопасности, встроенные в объектную модель Outlook. С ними можно бороться, а можно просто обойти, используя для отправки электронной почты специальную объектную модель CDO, в которой этих ограничений нет.

CDO (Collaboration Data Objects) — это специальный набор библиотек для работы с электронной почтой, а также для администрирования сервера Exchange Server существует множество версий и разновидностей библиотек, которые входят в набор CDO, но нас интересует только одна: Microsoft CDO for Exchange 2000 Library, которая устанавливается в том числе и с Microsoft Office. Первое, что нужно будет нам сделать — добавить на нее ссылку при помощи меню Tools -> References в редакторе VBA.

Самый простой вариант отправки почты средствами CDO выглядит так:

Dim oMyMail As New CDO.MessageoMyMail.To = "[email protected]"oMyMail.From = "[email protected]"oMyMail.Subject = "Hello from CDO"oMyMail.TextBody = "Our letter"oMyMail.AddAttachment "C:\1.txt"oMyMail.Send

Однако этот вариант с параметрами по умолчанию будет работать только в том случае, если на вашем компьютере установлен Exchange Server 2000 или 2003 или установлен Internet In-formation Server с настроенной службой SMTP, поскольку физически сообщение просто будет помещено по умолчанию в каталог C:\Inetpub\mailroot\Pickup, откуда и должна забрать служба Exchange Server или IIS. Однако есть и более удобный способ отправки сообщения через любой почтовый сервер, который поддерживает протокол SMTP. Для этого перед вызовом метода Send() мы должны настроить параметры отправки:

oMyMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

(значение 1, которое используется по умолчанию, означает – использовать каталог Pickup).

Указать почтовый сервер можно так:

Page 40: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

omyMail.Configuration.Fields.Item _("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _"smtp.YourServer.com"

Настройка режима аутентификации производится при помощи того же объекта CDO.Config-uration:

oMyMail.Configuration.Fields.Item _("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

Значение 1 означает, что используется базовая аутентификация, значение 0 – без аутентификации (анонимно), значение 2 – аутентификация NTLM.

Имя пользователя и пароль можно передать точно так же:

oMyMail.Configuration.Fields.Item _("http://schemas.microsoft.com/cdo/configuration/sendusername") = _"[email protected]"

oMyMail.Configuration.Fields.Item _("http://schemas.microsoft.com/cdo/configuration/sendpassword") = _"Password"

Иногда необходимо также определить использование специфического порта (отличного от 25), будет или нет использоваться SSL и время тайм-аута:

oMyMail.Configuration.Fields.Item _("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

oMyMail.Configuration.Fields.Item _("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False

oMyMail.Configuration.Fields.Item _("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

После любых изменений, вносимых в конфигурацию, изменения вначале надо сохранить:

oMyMail.Configuration.Fields.Update

и только после вызывать метод Send():

oMyMail.Send

Если возникает проблема с кодировками (обычно, если в системе установлен русский язык, не возникает), то можно еще перед отправкой добавить строку вида

oMyMail.TextBodyPart.Charset ="windows-1251"

К сожалению, эта библиотека работает только с протоколом SMTP и каталогом Pickup на диске. Она не умеет работать ни с протоколом POP3, ни с IMAP4, ни с MAPI, а, значит, подключиться к почтовому серверу и проверить на нем появление новых сообщений (как в нашем примере с Outlook) мы не сможем. Придется использовать другую библиотеку из набора CDO — Microsoft CDO 1.21 Library. Она умеет работать только с MAPI (читайте — Exchange Server), зато она умеет выполнять различные операции в почтовом ящике на Ex-change Server без всяких предупреждающих сообщений. Например, отследить появление новых писем можно так:

Page 41: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Добавляем ссылку на библиотеку Microsoft CDO 1.21 Library

Пишем следующий код :

Dim oSession As New MAPI.SessionDim oFolder As MAPI.FolderDim oMessage As MAPI.Message

' "Outlook" — имя почтового профиля. Если этот параметр не передать, то возникнет 'диалоговое окно с предложением выбрать нужный профиль. Имя нужного профиля 'можно узнать как раз из этого диалогового окна

oSession.Logon("Outlook")Set oFolder = oSession.InboxFor Each oMessage In oFolder.Messages If oMessage.Unread = True Then Debug.Print oMessageNext

Полную справку по этим объектным моделям можно прочитать в MSDN.

Задание

1. Прочитать теоретический материал, понимая, что там речь идёт о VBA, а мы работаем в VBScript, хотя сам язык и модель программирования мало отличаются.

2. Ниже приведён исходный VBScript код отправки сообщений на адрес электронной почты с возможностью прикрепления вложений. Необходимо его изучить, понять, написать комментарии в тех местах, где стоят знаки “???”, изменить код под настройки вашего почтового ящика и SMTP сервера.

3. Сохранить изменённый скрипт, отправить 2 сообщения: без вложения и с вложением, произвести отладку, убедиться в его работоспособности.

4. Написать отчет с кодом вашего скрипта, демонстрирующий его работоспособность: команда запуска скрипта, скриншот получения почты на заданный адрес.

Page 42: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

'=============================================================================================' Скрипт отправки e-mail' Для работы должен быть определен SMTP сервер в эккаунте из которого скрипт запускается!'' Запуск скрипта:' Cscript SendMail.VBS /Subj:<Subject String> /Body:<Body String> /Attach:<Attachment Path>' где:' <Subject String> - Текст поля Subject (если содержит пробелы, то заключить в кавычки)' <Body String> - Текст тела сообщения (если содержит пробелы, то заключить в кавычки)' <Attachment Path> - Полный путь на файл, который будет передан, как аттачмент' (если содержит пробелы, то заключить в кавычки)'=============================================================================================

dim objArgs, objNamedArgsdim ErrUsage '???dim FSO,F,Sdim BodyString, SubjectString, FromString, ToString, CCString, BCCString, AddAttachmentString

Set objArgs = WScript.Arguments 'Создаем объект WshArgumentsSet objNamedArgs = objArgs.Named 'Создаем объект WshNamed

FromString = "адрес@отправителя"ToString = "адрес@получателя"CCString = "" '???BCCString = "" '???'???SubjectString = "Error in Script Usage"'???AddAttachmentString = ""

'============================================================================================='Процедура проверки аргументов коммандной строки'---------------------------------------------------------------------------------------------Sub CheckArguments

BodyString = ""AddAttachmentString = ""ErrUsage = False 'Если отсутствует параметр /Subj:"If Not objNamedArgs.Exists("Subj") Then ErrUsage = True '??? BodyString = BodyString & "The Subject is not assigned" & vbCrLfEnd If 'Если отсутствует параметр /Body:"If Not objNamedArgs.Exists("Body") Then ErrUsage = True BodyString = BodyString & "The BodyText is not assigned" & vbCrLfEnd If

Page 43: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

'Если отсутствует параметр /Attach:"If Not objNamedArgs.Exists("Attach") Then ErrUsage = True BodyString = BodyString & "The Attachment is not assigned" & vbCrLfEnd If If ErrUsage Then '??? BodyString = "Error in Example" & vbCrLf &

"-----------------------------------------" & vbCrLf & BodyString BodyString = BodyString & "-----------------------------------------" &

vbCrLf BodyString = BodyString & "EXAMPLE:" & vbCrLf BodyString = BodyString & "Cscript SendMail.VBS /Subj:<Subject String>

/Body:<Body String> /Attach:<Attachment Path>" & vbCrLf BodyString = BodyString & "-----------------------------------------" &

vbCrLfEnd If If objNamedArgs.Exists("Subj") Then SubjectString =

objNamedArgs("Subj")If objNamedArgs.Exists("Body") Then BodyString = BodyString &

objNamedArgs("Body")If objNamedArgs.Exists("Attach") Then AddAttachmentString =

objNamedArgs("Attach") BodyString = BodyString & vbCrLf &

"============================================================" & vbCrLfEnd Sub'---------------------------------------------------------------------------------------------

CheckArguments '???

Set objEmail = CreateObject("CDO.Message") '???objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 '???objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.YourServer.com" '???objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 '???objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True '???objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendtls") = True '???objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60 '???'Если сервер требует авторизации.objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "адрес@отправителя"objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "пароль_на_SMTP_сервере_отправителя"

'???objEmail.Configuration.Fields.Update

objEmail.From = FromStringobjEmail.To = ToStringobjEmail.Cc = CCStringobjEmail.Bcc = BCCStringobjEmail.Subject = SubjectStringobjEmail.Textbody = BodyString

Page 44: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

'???if objNamedArgs.Exists("Attach") Then objEmail.AddAttachment AddAttachmentString

objEmail.Send '???

Практическое занятие №6Использование системы резервного копирования данных ntbackup.

Практическая работа рассчитана на 6 академических часов.

Цель работы. Научиться работать с системой архивирования и восстановления данных ntbackup.

Внимание! Работа выполняется в заранее созданной виртуальной машине Windows XP!

Теоретическая часть.

Резервное копирование с помощью ntbackupРассмотрим одну из важных тем - резервное копирование данных.

Начнём изучение этой темы с утилиты ntbackup, встроенной в операционную систему. Забегая наперед заметим, что утилита эта появилась в составе операционной системы Windows начиная с NT, потерпела положительные изменения в Windows 2000 и кардинально изменилась в Vista. Мы же будем рассматривать работу программы ntbackup в системах Windows XP и Windows 2003 Server.

Для запуска программы зайдем в Пуск-выполнить, введем команду ntbackup и кликнем ok. Запустится мастер архивации.

Page 45: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Сразу предложим снять галочку "запускать в режиме мастера", его мы вручную выберем по необходимости, закрыть и открыть заново программу той же командой ntbackup. Мы увидим такое окно программы.

Пройдемся по всем пунктам программы по порядку:

Мастер архивации

Мастер архивации помогает создать резервную копию файлов и программ. Выберем этот пункт меню и кликнем далее, программа попросит нас выбрать необходимое действие:

Page 46: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Предположим, что мы хотим создать разовую резервную копию нужных нам данных на нашем компьютере или на сетевом диске. Выберем пункт меню "Архивировать выбранные файлы, диски и сетевые данные" и нажмем далее.

Развернем вкладку Мой компьютер, перед нами отобразятся локальные и сетевые диски. Выберем папку, которую мы хотим забекапить, я выберу сетевую шару, т.е. папку с файлами, которая физически расположена на сервере. У меня она называется Obmen и в ней хранятся документы для обмена с сотрудниками информацией по сети. Это может быть как отдельная сетевая папка, так и целиком сетевой диск. Выбранную папку отмечаем галочкой, и обязательно указываем место, где будем хранить резервную копию данных. Бекапить сетевую папку с файлами будем к себе на локальный компьютер, сохраним ее по указанному пути: "D:\Obmen_backup1310.bkf". Это означает, что наш бекап будет сохранен на локальном диске D, иметь название Obmen_backup1310. Советуем называть все бекапы своими именами,

Page 47: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

чтобы в случае необходимости о содержимом резервной копии можно было понять из ее названия. Например, из моего названия Obmen_backup1310.bkf следует, что это резервная копия папки Obmen, созданная 13 октября.

Нажимаем кнопку архивировать, проверяем еще раз правильность всех путей и заходим в пункт меню дополнительно.

В дополнительных параметрах поставим галочку "Проверка данных после архивации", а вот о типах архивов расскажем чуть ниже. Так что пока по умолчанию выбираем тип архива "Обычный".

Page 48: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Базовые настройки мы указали, нажимаем кнопку "Архивация" и дожидаемся окончания результатов.

По завершении работы мастера архивации не забудьте просмотреть "Отчет". На фото ниже указано "Операцию не удалось завершить успешно", т.к. мы не стали дожидаться окончания процесса и отменили операцию. Если операция была завершена без ошибок, Вы увидите соответствующее сообщение в своем отчете.

Page 49: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Всё, операция по созданию резервной копии нужных нам данных завершена. Теперь можно размножить резервную копию полученного архива и сохранить его копию на другом компьютере/сервере/внешнем жестком диске или DVD носителе.

Типы резервных копий.Существует 5 видов бекапов: обычный (normal), разностный (differential), добавочный (incremental), копирующий (copy) и ежедневный (daily).

Обычный (normal)При выполнении данного типа архивирования утилита ntbackup архивирует все файлы, отмеченные для архивации, при этом у всех заархивированных файлов очищается атрибут "Файл готов для архивирования". Данный вид архивирования необходим для создания еженедельных полных резервных копий каких-либо больших файловых ресурсов. Если в компании или организации имеются достаточные ресурсы, то можно ежедневно осуществлять полное архивирование данных.

Разностный (differential)При выполнении Разностного архивирования утилита ntbackup из файлов, отмеченных для архивирования, архивирует только те, у которых установлен атрибут "Файл готов для архивирования", при этом данный атрибут не очищается. Использование Обычного и Разностного архивирования позволяет сэкономить пространство на носителях с резервными копиями и ускорить процесс создания ежедневных копий. Например, если раз в неделю (как правило, в выходные дни) создавать Обычные копии, а в течение недели ежедневно (как правило, в ночное время) — Разностные, то получается выигрыш в объеме носителей для резервного копирования. При такой комбинации архивирования "Обычный + Разностный" процесс восстановления данных в случае утери информации потребует выполнения двух операций восстановления — сначала из последней Полной копии, а затем из последней Разностной резервной копии.

Добавочный (incremental)При выполнении Добавочного архивирования утилита ntbackup из файлов, отмеченных для архивирования, архивирует только те, у которых установлен атрибут "Файл готов для архивирования", при этом данный атрибут очищается. Использование Обычного (раз в

Page 50: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

неделю по выходным) и Добавочного (ежедневно в рабочие дни) архивирования также позволяет сэкономить пространство на носителях с резервными копиями и ускорить процесс создания ежедневных копий. Но процесс восстановления данных при использовании комбинации "Обычный + Добавочный" уже будет выполняться иначе: в случае утери информации для восстановления данных потребуется сначала восстановить данные из последней Полной копии, а затем последовательно из всех Добавочных копий, созданных после Полной копии.

Копирующий (copy)При таком типе архивирования утилита ntbackup заархивирует все отмеченные файлы, при этом атрибут "Файл готов для архивирования" остается без изменений.

Ежедневный (daily)Ежедневный тип архивирования создает резервные копии только тех файлов, которые были модифицированы в день создания резервной копии.

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

Если возникла необходимость восстановить какой либо файл/папку из резервной копии, мы также запускаем утилиту ntbackup и выбираем пункт меню "мастер восстановления файлов", а затем, соответственно, указываем что, откуда и в какое место восстанавливать.

Прочитав эту статью, у Вас наверняка возникнет вопрос: а как автоматизировать операцию резервного копирования и исключить свое присутствие в этом процессе? Выход из ситуации есть - это запуск и работа утилиты ntbackup в режиме командной строки.

Восстановление с помощью NTBackup

Теперь попробуем восстановить данные. Для этого достаточно запустить NTBackup, как мы уже делали ранее. Но в окне Мастера следует выбрать "Восстановление файлов и параметров".

Page 51: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Затем будет выведен список доступных резервных копий. Выберите ту копию, которую вы желаете восстановить.

Просмотрите выбранные опции. Клавиша "Дополнительно" открывает диалоговое окно, которое позволяет восстанавливать файлы в другое место, оставлять или замещать существующие файлы, восстанавливать права безопасности и точек соединения.

Page 52: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

На первой странице опций, доступных по клавише "Дополнительно", мы выбрали восстановление в корень диска C:. Таким образом, оригинальные файлы не будут перезаписаны.

В опциях, вызываемых клавишей "Дополнительно", есть возможность выбрать один из трёх способов восстановления файлов. Будьте осторожны в выборе опций, поскольку вы можете заменить обновлённый файл старой резервной копией. Если вы новичок в сфере

Page 53: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

резервирования, оставьте рекомендованные настройки по умолчанию.

На следующей странице опций "Дополнительно" указаны настройки по умолчанию. Лучше их оставить как есть, если у вас нет каких-либо веских причин изменить настройки.

Page 54: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Проверьте ещё раз опции и нажмите "Готово", если всё указано правильно.

Будет запущен процесс восстановления.

Восстановление прошло успешно: мы получили копию резервных данных на диске C:.

Page 55: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Команда Ntbackup

Команда Ntbackup позволяет создавать сценарии заданий архивации. Ее синтаксис таков:

Ntbackup backup {"path to backup" or "@selectionfile.bks"} /j "Job Name" options

Первый параметр команды, backup , задает рабочий режим: нельзя восстановить данные из командной строки. За ним следует параметр, указывающий, что именно нужно архивировать. Можно указать путь к локальной папке, сетевому общему ресурсу или файлу. Кроме того, можно указать путь к файлу выбора архивации (с расширением .bks ), используя синтаксис @файл_выбора.bks (в этом случае перед именем файла выбора архивации должен стоять символ @). Этот файл содержит информацию о файлах и папках, подлежащих архивации, и должен быть создан из графического интерфейса программы Архивация данных.

Третий параметр, /J «имя_задания», указывает описательное имя задания, которое используется в отчете архивации.

Ниже перечислены остальные параметры командной строки, сгруппированные по типам заданий архивации.

Архивация в файл

Используйте параметр /F «имя_файла», где имя_файла — полное имя файла, содержащее путь к логическому диску. Не используется с параметрами /Т /Р /G.

Следующая команда архивирует удаленный общий ресурс Data на Server01 в локальный файл на диске Е:

ntbackup backup "\\server01\Data" /J "Backup of Server 01 Data folder" /F "E:\Backup.bkf"

Дозапись в файл или на ленту

Используйте параметр /А для выполнения операции дозаписи. При дозаписи на ленту, а не в файл, с этим параметром необходимо использовать параметр /G или /Т. Не используется с параметрами /N или /Р.

Следующая команда архивирует удаленный общий ресурс Profiles на server02 и дозаписывает набор к заданию, созданному в первом примере:

ntbackup backup "\\server02\Profiles" /J "Backup of Server 02 Profiles folder" /F "E:\Backup.bkf " /A

Архивация на новую ленту или в файл либо перезапись существующей ленты

Используйте параметр /N «имя_носителя», где имя_носителя — имя новой ленты. Не используется с параметром /А.

Архивация на новую ленту

Page 56: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

Используйте параметр /N «имя_пула», где имя_пула — пул, содержащий архивный носитель. Обычно это подпул пула архивных носителей, например 4 mm DDS. Не используется с параметрами /A, /G, /F или /Т.

Следующая команда архивирует файлы и папки, перечисленные в файле выбора архивации c:\backup.bks, на ленточный накопитель:

ntbackup backup @c:\backup.bks, /j "Backup Job 101" /n "Command Line Backup Job" /p "4mm DDS"

Задание

1. Прочитать теоретический материал, проделать различные типы резервных копий: Обычный (normal), Разностный (differential), Добавочный (incremental).

2. Восстановить удалённые (повреждённые) папки разными способами: Обычный (normal), Разностный (differential), Добавочный (incremental).

Практическое занятие №7Создание автоматической системы резервирования данных и отправки

отчёта на электронную почту. Практическая работа рассчитана на 8 академических часов.

Цель работы. Научиться писать скрипты для автоматизации резервного архивирования данных и отправки протоколов на электронную почту администратора, используя результаты работы №5 и №6.

Внимание! Работа выполняется в заранее созданной виртуальной машине Windows XP!

Теоретическая часть.

1. Скрипт, отсылающий отчёты на почту:

'=============================================================================================' Скрипт отправки e-mail' Для работы должен быть определен SMTP сервер и эккаунт пользователя на нём!'' Запуск скрипта:' Cscript Send_Mail.VBS /Subj:<Subject String> /Body:<Body String> /Attach:<Attachment Path>' где:' <Subject String> - Текст поля Subject (если содержит пробелы, то заключить в кавычки)' <Body String> - Текст тела сообщения (если содержит пробелы, то заключить в кавычки)' <Attachment Path> - Полный путь на файл, который будет передан, как аттачмент' (если содержит пробелы, то заключить в кавычки)' Содержимое файла будет также добавлено в тело сообщения

Page 57: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

'=============================================================================================

dim objArgs, objNamedArgsdim ErrUsagedim FSO,F,Sdim BodyString, SubjectString, FromString, ToString, CCString, BCCString, AddAttachmentString

Set objArgs = WScript.Arguments 'Создаем объект WshArgumentsSet objNamedArgs = objArgs.Named 'Создаем объект WshNamed

FromString = "адрес@отправителя"ToString = "адрес@назначения"CCString = ""BCCString = ""SubjectString = "Error in Script Usage"AddAttachmentString = ""

'============================================================================================='Процедура проверки аргументов коммандной строки'---------------------------------------------------------------------------------------------Sub CheckArguments

BodyString = ""AddAttachmentString = ""ErrUsage = False

'Если отсутствует параметр /Subj:"If Not objNamedArgs.Exists("Subj") Then ErrUsage = True BodyString = BodyString & "The Subject is not assigned" & vbCrLfEnd If

'Если отсутствует параметр /Body:"If Not objNamedArgs.Exists("Body") Then ErrUsage = True BodyString = BodyString & "The BodyText is not assigned" & vbCrLfEnd If

'Если отсутствует параметр /Attach:"If Not objNamedArgs.Exists("Attach") Then ErrUsage = True BodyString = BodyString & "The Attachment is not assigned" & vbCrLfEnd If

If ErrUsage Then BodyString = "Error in Example" & vbCrLf &

"-----------------------------------------" & vbCrLf & BodyString BodyString = BodyString & "-----------------------------------------" &

vbCrLf BodyString = BodyString & "EXAMPLE:" & vbCrLf BodyString = BodyString & "Cscript Send_Mail.VBS /Subj:<Subject

String> /Body:<Body String> /Attach:<Attachment Path>" & vbCrLf BodyString = BodyString & "-----------------------------------------" &

vbCrLfEnd If

Page 58: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

If objNamedArgs.Exists("Subj") Then SubjectString =

objNamedArgs("Subj")If objNamedArgs.Exists("Body") Then BodyString = BodyString &

objNamedArgs("Body")If objNamedArgs.Exists("Attach") Then AddAttachmentString =

objNamedArgs("Attach")

BodyString = BodyString & vbCrLf &

"============================================================" & vbCrLfEnd Sub'---------------------------------------------------------------------------------------------

'============================================================================================='Процедура чтения файла аттачмента и записи его содержимого в тело сообщения'---------------------------------------------------------------------------------------------Sub AttachToBody

ForReading=1

'Создаем объект FileSystemObjectSet FSO = WScript.CreateObject("Scripting.FileSystemObject")'Открываем ФайлSet F = FSO.OpenTextFile(AddAttachmentString,ForReading,true)

while not F.AtEndOfStream S = F.ReadLine() BodyString = BodyString & S & vbCrLfWend

F.Close()

End Sub'---------------------------------------------------------------------------------------------

CheckArgumentsif AddAttachmentString <> "" Then AttachToBody

Set objEmail = CreateObject("CDO.Message")objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.сервер.отправителя"objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = TrueobjEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendtls") = TrueobjEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60'Если сервер требует авторизации.objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "адрес@отправителя"

Page 59: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "пароль_отправителя"

objEmail.Configuration.Fields.Update

objEmail.From = FromStringobjEmail.To = ToStringobjEmail.Cc = CCStringobjEmail.Bcc = BCCStringobjEmail.Subject = SubjectStringobjEmail.Textbody = BodyString

if objNamedArgs.Exists("Attach") Then objEmail.AddAttachment AddAttachmentString

objEmail.Send

2. CMD скрипт, запускающий ntbackup (ключи NTBACKUP см. Ntbackup /?) и вызывающий скрипт, отсылающий отчёты на почту:

rem ======================================================================================rem Assigned Parametrsrem ----------------------------------rem %1 - Backup Working Dirrem %2 - BKS File Namerem %3 - Name of Job/Media/BKF-Fileremrem Example of Call CMD-file:rem ----------------------------------rem path_to_file\backup_JOB_01.cmd <Backup Working Dir> <BKS File Name> Name of <Job/Media/BKF-File>rem ======================================================================================

c:cd %userprofile%\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\datacopy *.log %1\_BACKUP_JOBS\LogFiles\*.* /yecho error > %1\_BACKUP_JOBS\LogFiles\backup00.logdel *.log

rem C:\WINDOWS\system32\ntbackup.exe backup "%1\_BACKUP_JOBS\%2" /d "%3" /v:yes /r:no /rs:no /hc:off /m normal /j "Job_%3" /l:s /f "E:\BACKUP.!!!\%3.bkf"C:\WINDOWS\system32\ntbackup.exe backup "C:\Program Files" "C:\Documents and Settings" /d "%3" /v:yes /r:no /rs:no /hc:off /m normal /j "Job_%3" /l:s /f "E:\BACKUP.!!!\%3.bkf"

if errorlevel 1 goto error

copy *.log backup00.log /ycopy backup00.log %1\_BACKUP_JOBS\LogFiles\*.* /ycscript %1\_BACKUP_JOBS\SCRIPTs\send_mail.vbs /subj:Ok_%3 /body:"BACKUP of %3 Exit Success" /attach:%1\_BACKUP_JOBS\LogFiles\backup00.log

goto end

:error

Page 60: blog.gvsoft.rublog.gvsoft.ru/.../uploads/2021/03/Практика.docx  · Web view2021. 3. 13. · Практическое занятие №1Аварийное восстановление

copy *.log backup00.log /ycopy backup00.log %1\_BACKUP_JOBS\LogFiles\*.* /ycscript %1\_BACKUP_JOBS\SCRIPTs\send_mail.vbs /subj:Error_%3 /body:"BACKUP of %3 Exit with Error(s)" /attach:%1\_BACKUP_JOBS\LogFiles\backup00.log

:end

из %userprofile%\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data берутся репорты NTBACKUP, которые будут отсылаться на почту. ВНИМАНИЕ! в начале выполнения этого CMD'шника удаляются все файлы *.log из каталога, куда NTBACKUP складывает логи.Ограничение: не должно одновременно быть запущено несколько NTBACKUP из под одной и той же учетной записи, т.к. они будут писать логи в один и тот же файл.

3. Чтобы все работало, требуется следующая структура каталогов:

f:\data01\_BACKUP_JOBS -- здесь кладется CMD скрипт backup_JOB_01.cmd и файл backup_JOB_LIST.bks (список ресурсов на бэкап)f:\data01\_BACKUP_JOBS\SCRIPTs -- здесь лежит send_mail.vbs скрипт, отсылающий логи на почту (см. п.1).f:\data01\_BACKUP_JOBS\LogFiles -- сюда копируются логи NTBACKUP из профиля пользователя, с последующей отсылкой на почту

4. Вызов CMD скрипта из планировщика заданий:

f:\data01\_backup_jobs\backup_JOB_01.cmd f:\data01 backup_job_list.bks backup_job_01

если скрипт и архив находятся на стороннем сервере в сети:

\\STORAGE\BACKUP_SHARE$\DATA01\_BACKUP_JOBS\backup_JOB_01.cmd \\STORAGE\BACKUP_SHARE$\DATA01 backup_JOB_LIST.bks BACKUP_JOB_01

расшифровка

\\<cервер>\<шАра с бэкапами и заданиями>\<просто папка>\_BACKUP_JOBS\backup_JOB_01.cmd \\<cервер>\<шАра с бэкапами и заданиями>\<просто папка> <список ресурсов на бэкап>.bks <имя задания-тема письма>

Задание

1. Разобраться с кодом скриптов, адаптировать (изменить) их под свои данные и условия.

2. Создать на виртуальной машине всю подсистему по инструкции, но с размещением скриптов и файла резервного копирования согласно своей разметке жёсткого диска и расположения файлов и каталогов.

3. Составить расписание на ежедневный запуск системы в 20:00.

4. Запустить на выполнение стартовый скрипт, продемонстрировать работоспособность системы. В качестве результата работы предоставить отчет резервного копирования, полученный по электронной почте на любом доступном адресе.