четверг, 31 января 2019 г.

Дистанционное выключение Windows сервера

Итак, идем на север и создаем там простой bat файл следующего содержания:
shutdown /p /d p:0:0 /f
Сохраняем файл и создаем пользователя, под которым будем выключать сервер. Не забудьте добавить этому пользователю разрешение подключаться по rdp. Если вы выключаете компьютер с десктопной системой, то прав обычного пользователя достаточно. Если же вам надо погасить Windows Server, то пользователя нужно либо сделать админа, либо дать ему права на разрешение выключение сервера через локальную политику безопасности. Живет эта политика по адресу — параметры безопасности — локальные политики — назначение прав пользователей — завершение работы системы.
Дальше заходим нашим новым пользователем, чтобы создались стандартные папки профиля и кладем скрипт автовыключения сервера ему в автозагрузку — C:\Users\shut-user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup.
Теперь нам нужно настроить автоматический вход пользователя по rdp, чтобы выполнить удаленное завершение работы. Причем пользователь должен заходить на сервер без запроса имени и пароля. Штатными средствами rdp клиента windows это сделать невозможно. Даже если вы сохраните параметры, то при переносе настроек на другой компьютер нужно будет снова вводить пароль. Мне это не подходило.
Я пробовал использовать старую портированную версию rdp 5.2. Это последняя версия, где пароль в зашифрованном виде можно было хранить в файле настроек. Но при переносе этого файла на другой компьютер, все равно выскакивало окно с вводом пароля. Добиться полного автоматизма не получалось.
Но решение было найдено. Существует любопытный проект Remote Desktop Plus, который является надстройкой над rdp. С помощью этой надстройки можно передать параметры в rdp через командную строку, в том числе и имя пользователя с паролем. Мне это полностью подходит. Скачиваем файлик rdp.exe либо с сайта автора проекта, либо с моего. Я скопировал на всякий случай эту очень полезную утилиту. Кладем его в папку и создаем в этой же папке rem-shut.bat файл следующего содержания:
rdp.exe /v:10.10.5.14 /u:shut-user /p:pass123 /w:640 /h:480
10.10.5.14адрес удаленного сервера
shut-userпользователь rdp от имени которого будет происходить выключение
pass123пароль пользователя
640 480параметры разрешения экрана, можно не указывать
https://serveradmin.ru/kak-vyiklyuchit-udalennyiy-windows-i-linux-server/

среда, 30 января 2019 г.

Сформировать список баз 1С для всех пользователей

Статья описывает собственный опыт дополнения/редактирования списка баз 1С пользователей. Нет необходимости идти к каждому пользователю отдельно.
Собственный опыт. Также спасибо за помощь (https://habrahabr.ru/post/179405/) 
Решаемая задача: Необходимо показывать определенный список баз 1С всем пользователям, помимо списка баз для каждого пользователя.
Необходимо 2 файла (1CEStart.txt и ibases.v8i) - можно взять уже существующие либо создать.
Оба файла размещаем (C:\ProgramData\1C\1CEStart) или (C:\Documents and Settings\All Users\Application Data\1C\1CEStart) - одно и тоже для Win server 2012, для остальных ОС скорее всего тоже.
Если нужных папок нет (1C, 1CEStart) - можно создать руками.

А. Содержание файла 1CEStart.txt
InstalledLocation=C:\Program Files\1cv8
InstalledLocation=C:\Program Files (x86)\1cv8
CommonInfoBases=C:\ProgramData\1C\1CEStart\ibases.v8i 
InstallComponents=DESIGNERALLCLIENTS=1 THINCLIENTFILE=0 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=1 CONVERTER77=0 SERVERCLIENT=0 ADMINISTRATIONFUNC=0 LANGUAGES=RU

Б. Содержание файла ibases.v8i
[Имя Базы1 (для пользователя)]
Connect=Srvr="ВашСервер";Ref="ИмяБазы1";
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.3 (указываем версию платформы) 
DefaultApp=ThickClient
[Имя Базы2 (для пользователя)]
Connect=Srvr="ВашСервер";Ref="ИмяБазы2";
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.3 (указываем версию платформы) 
DefaultApp=ThickClient
....... и т.д.
P.S. Если нужно отредактировать список, для конкретного пользователя идем сюда: C:\Users\НашПользователь\AppData\Roaming\1C\1CEStart и редактируем файл ibases.v8i
Итог:  Пользователь увидит как созданные им базы так и базы, которые мы прописали в файле.

Если нужно создать базы в виде дерева - содержание файла ibases.v8i будет следующим:
[Имя Базы (для пользователя)]
Connect=Srvr="ИмяСервера";Ref="ИмяБазы";
Folder=/ИмяГруппы
OrderInTree=1 - порядок в группе
External=-1

ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.3
DefaultApp=ThickClient

четверг, 10 января 2019 г.

курсы по администрированию линукс

https://www.youtube.com/watch?v=dQjUH0kTq8w&t=0s&list=PLrCZzMib1e9pun72f4KmFopzPs5pGB85_&index=2

https://proglib.io/p/linux-courses/

https://www.youtube.com/watch?v=Y4qT-DPYs_w

https://m.habr.com/post/435678/

alias top10='find . -type f -exec ls -sh {} \; | sort -n -r | head -10'

Скрипт очистки WSUS от ненужных обновлений

Для осуществления автоматической очистки базы обновлений WSUS нам понадобится следующий PowerShellскрипт, который вы можете найти также на сайте-первоисточнике:
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
$cleanupScope.DeclineSupersededUpdates = $true
$cleanupScope.DeclineExpiredUpdates = $true
$cleanupScope.CleanupObsoleteUpdates = $true
$cleanupScope.CompressUpdates = $true
$cleanupScope.CleanupObsoleteComputers = $true
$cleanupScope.CleanupUnneededContentFiles = $true
$cleanupManager = $wsus.GetCleanupManager();
$cleanupManager.PerformCleanup($cleanupScope);

Давайте более детально рассмотрим имеющиеся опции скрипта, а также варианты его запуска по расписанию.
1) DeclineSupersededUpdates
Опция позволяет отклонять те обновления, которые в последующем были заменены более новыми версиями или же включены в пакеты обновлений (заменяемые обновления). Так, например, hotfix KB2403218 включен в накопительное обновление 6 для SQL Server 2008 R2 и будет отклонен при включенной опции DeclineSuperseded Updates. Кроме того, отклоняются обновления, которые не были подтверждены в течение 30 и более дней, а так же не востребованы ни одним клиентом.
2) DeclineExpiredUpdates
Позволяет отклонить просроченные обновления. Как правило, Microsoft выпускает новые обновления взамен просроченным, а просроченные - удаляет со своих потоковых серверов загрузки.
3) CleanupObsoleteUpdates
Удаляет из базы неиспользуемые и устаревшие обновления, включая все их ревизии. Удаляются те обновления и ревизии, которые не были подтверждены в течение 30 и более дней.
4) CompressUpdates
Удаляет из базы устаревшие ревизии обновлений.
5) CleanupObsoleteComputers
Удаляет из базы устаревшие компьютеры, которые не контактировали с сервером 30 и более дней.
6) CleanupUnneededContentFiles
Удаляет ненужные файлы обновлений. Включение этой опции позволяет освободить максимальный объем места на диске.

Итак, мы разобрались со всеми возможными опциями, используемыми для очистки базы службы WSUS через PowerShell скрипт. Осталось понять, в каком порядке лучше их указывать? Сперва, нам надо очистить список всех устаревших компьютеров, затем отклонить все заменяемые и просроченные обновления, и только лишь потом удалить их из базы. Таким образом, желательный порядок указания опций будет следующим:
$CleanUpScope.CleanupObsoleteComputers = $true
$CleanUpScope.DeclineSupersededUpdates = $true
$CleanUpScope.DeclineExpiredUpdates = $true
$CleanUpScope.CleanupObsoleteUpdates = $true
$CleanUpScope.CleanupUnneededContentFiles = $true
$CleanUpScope.CompressUpdates = $true

Я предлагаю использовать вам скрипт, в котором мы соблюдаем правильную последовательность указания опций и не используем две из них (CleanupObsoleteComputers и DeclineSupersededUpdates):
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
 
#$cleanupScope.CleanupObsoleteComputers = $true
#$cleanupScope.DeclineSupersededUpdates = $true
$cleanupScope.DeclineExpiredUpdates = $true
$cleanupScope.CleanupObsoleteUpdates = $true
$cleanupScope.CleanupUnneededContentFiles = $true
$cleanupScope.CompressUpdates = $true
 
$cleanupManager = $wsus.GetCleanupManager();
$cleanupManager.PerformCleanup($cleanupScope);

Последнее, что нам осталось сделать, это автоматизировать процесс выполнения имеющегося powershellскрипта. Для этого предлагаю создать cmd файл, который надо скопировать в ту же папку, что и сам скрипт. Содержимое cmd файла:
@echo off
@echo Starting WSUS cleanup: %date% %time% >> d:\scripts\WSUS_Cleanup.log
powershell.exe d:\scripts\WSUS_Cleanup.ps1 >> d:\scripts\WSUS_Cleanup.log
@echo Finished WSUS cleanup: %date% %time% >> d:\scripts\WSUS_Cleanup.log
 

Здесь замените пути к файлам скрипта и лога, текст которых выделен красным цветом.
Всё! Теперь можно запускать этот cmd файл через Планировщик заданий по нужному вам графику.

Как установить и настроить PHP на Windows Server

  В данной статье мы научимся устанавливать PHP на Windows Server. Существует несколько способов установки PHP, включая PHP Manager for IIS ...