Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Windows Server Update Services (WSUS & SUS), часть III

Автор: penkovmm
Дата сообщения: 21.12.2008 10:38
Заранее прошу прощения у уважаемой общественности за, возможно, глупый вопрос. Суть проблемы: первая синхронизация WSUS произошла 18.12.08 по расписанию, длилась с 00:18 по 05:03, синхронизация происходит по расписанию раз в сутки. Все последующие синхронизации занимали по времени 2-5 минут. Сейчас, 21.12.08 в списке остались обновления, файлы для которых ещё не загружены, среди которых и SP3 для Windows XP, которое необходимо клиентским ПК. Вопрос - как можно форсировать загрузку необходимых обновлений? При постоянном круглосуточном подключении сервера к интернет-каналу в 10 Мбит/сек такая медлительность при загрузке обновлений выглядит странно...
Автор: Altus
Дата сообщения: 22.12.2008 10:46
penkovmm

это из-за того, что всус по битсу смотрит на загруженность канала
решение тут
только рекомендую потом обратно вернуть, т.к. всус тогда вообще всю полосу сжирает, или тогда уж одобрять обновки только в то время когда никто более тырнетом не пользуется.
Автор: FSergei
Дата сообщения: 13.01.2009 05:12
Возникла небольшая проблемка. Вопрос этот уже поднимался, но ответа не последовало.. При синхронизации вылазит следующая ошибка:

Ошибка при загрузке файла содержимого. Причина: Серверу не удается обработать запрос из-за неверного синтаксиса.
Исходный файл: /msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-rus_850cda9f57033a17d046a56d422547ea80dcaf61.exe Конечный файл: c:\WSUS\WsusContent\61\850CDA9F57033A17D046A56D422547EA80DCAF61.exe.

Причем вылазит она только на нескольких крупных пакетах. Конкрентно: sp3 для winxp, sp2 для офиса 2003го (при том sp3 скачался нормально, непонятно зачем он вообще качает sp2) и на дотнет все версии. В настройках классов стоит все, кроме накопительных обновлений. При принудительной скачке одного из данных обновлений тоже самое.

И еще вопрос, т.к. он в ошибке пишет исходный и конечный файл. Если я скачаю их вручную (через браузер) и положу в папку с всусом, всус увидит их ?

Автор: yazzi
Дата сообщения: 14.01.2009 08:44
Здравствуйте, понимаю что эта тема обсуждалось не раз но все таки подскажите плиз. Вообщем есть 2 сервера wsus 2 один в сети с интернетом другой сети без интернета и еще один новый сервер без всего надо поставить на новый и на любой из двух других WSUS 3 как это лучше сделать.
Автор: himdews
Дата сообщения: 14.01.2009 14:39
Добрый день.
есть сервер WSUS 3, как можно отменить то что сервер собрался выкачать из инета?

Download Status
Updates needing files: 21
Downloaded 2,619.32 MB of 44,081.27 Mb
Автор: Shura787689
Дата сообщения: 15.01.2009 13:05
у меня сейчас настроен и прекрасно работает WSUS сервер. А можно сделать так: на другой комп поставить скажем WSUS 3.0 и указать чтобы он качал обновления с моего старого WSUS сеовера? хотелось бы сделать как написал потому что вариант с обновлением не совсем подходит.
Автор: seva100
Дата сообщения: 15.01.2009 21:24
Можно добавить в шапку.

WSUS 3.0 в закрытой сети
Автор: vensen
Дата сообщения: 16.01.2009 09:32
Shura787689
WSUS 3.0 синхронизируется с WSUS старых версий?
Нет. А вот наоборот - возможно.
http://www.wikiznanie.ru/ru-wz/index.php/WSUS_FAQ

Добавлено:
у меня такой вопрос:

поднят WSUS 3.0 SP1 на Win2k3 R2. Клиенты WinXP SP1-2.
так вот: некоторые клиенты не "видят" обновлений. Клиент обновлений успешно обновился сам, WSUS их (клиентов) видит, но клиенты обновлений нет(!).

из логов на машинах типа этого
>## RESUMED ## AU: Search for updates [CallId = 8DB1D962-2580-432EA0CF-39BA167D9D23}]
# 0 updates detected
Автор: Leo1000
Дата сообщения: 17.01.2009 12:31
vensen

Цитата:
но клиенты обновлений нет(!).

Обновления на сервере одобрены и скачаны?
Автор: vicwanderer
Дата сообщения: 19.01.2009 18:05
1) в виртуальной среде установлена W2k3r2sp2, установил wsus 3.1 по http://wsusserver/wsusadmin пишет "page cannot be fouund". wsus 3.1 работает только через консоль или можно все-таки настроить через обозреватель?
2) При установке wsus 3.1 автоматически ставиться SQL 2005 Express или что-то более обрезанное (MSDE)?
Автор: seva100
Дата сообщения: 19.01.2009 22:10
Дело было так.
Закрытая сеть, виртуальный сервер Win2003AdvServ под вмваре 6. Водрузил на него WSUS 3.0 SP1. Потом дабы сэкономить время на установках, скопировал виртуальныу машину в сеть с выходом в инет. Все пути совпадают.
В инетной сети WSUS прижился нормально. Сходил в инет за обновками. Накачал 2 гига в \WsusContent. Инет клиенты с него обновились. На сводной странице WSUS сервера (как тут http://kyi-13.narod.ru/_old/wsus.JPG), написано, что необходимо скачать 0 обновлений.
В общем все заработало нормально.

Теперь задача перенести WSUS в закрытую сеть. Делаю как написано тут:
http://technet.microsoft.com/en-us/library/cc720512.aspx
Т.е. копирую содержимое \WsusContent, делаю "wsusutil.exe export export.cab export.log".

Восстанавливаю на WSUS в закрытой сети. Вроде как все нормально. Клиенты видят и регистрируются на сервере. НО!!! в описании всех обновлений написано, что они еще не загружены из инета. И на сводной странице WSUS сервера (как тут) написано, что необходимо скачать с инета 20 Гигов.

-ключ реестра HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\SusClienId – отсутсвует.
-wsusutil /reset не помогает
-передернул одобрение с неодобрена на обрено - не помогает


Как ему вернуть зрение? Как показать что обновления у него есть?

Автор: michael
Дата сообщения: 20.01.2009 05:29
FSergei

Цитата:
Если я скачаю их вручную (через браузер) и положу в папку с всусом, всус увидит их ?

Подсчитываешь SHA1 файла -> переименовываешь -> ложишь в каталог WsusContent\Две_последние_цифры_SHA1 -> синхронизация
Автор: SyCraft
Дата сообщения: 20.01.2009 13:43
Вопрос пытаюсь одобрить в wsus 3 sp1 XPSP3 ищи дюжину обновлений, а он пишет что не удалось обобразить лицензионное соглашение для обновлений
в чем может быть беда?
Автор: olegponom
Дата сообщения: 20.01.2009 14:23
Поднял WSUS 3.0, обновления на локальных ПК скачиваются нормально, но автоматически не устанавливаются, хотя это задал в групповой политике в административных шаблонах в настройке автоматического обновления (параметр "4" - автоматическая загрузка и установка по расписанию). Появляется лишь знак восклицательный в трее с предложением установить обновление. А нужно именно автоматически его ставить. В чем может быть проблема?
Автор: olegponom
Дата сообщения: 21.01.2009 08:41
проблема решилась для пользователя без админских прав... но вот как сделать установку автоматической для пользователя с правами админа?..
Автор: TroViX
Дата сообщения: 21.01.2009 09:00
Доброго времени суток!
Поставил у себя в домене WSUS 3.0 сервак, все нормально на нем вроде как настроил, он выкачал все обновления. Теперь встала новая проблема, почему то не все компы хотят подключаться к нему.

Раздаю через GPO. Одна политика на все компы. Настроил в ней обязательное обновление ежедневно и ежечасно проверять новыеобновления на серваке. Но из всех компов только треть постучалась на WSUS сервак и появилась на нем в разделе компьютеров. Постучавшиеся уже за 2 дня почти все обновились всеми нужными апдейтами.

Стал эксперементировать с непостучавщимися компами. Посматрел служба автообновления включена на них. после wuauclt /detecnow ничего не происходит. Решил тогда локально их настроить без GPO, все прописал как нужно, опять ввожу wuauclt /detectnow все равно ноль эмоций...

кто может подсказать где собака зарыта и в чем проблема может быть?
Автор: seva100
Дата сообщения: 21.01.2009 09:14
TroViX
c:\WINDOWS\WindowsUpdate.log с проблемной машины в студию
Автор: TroViX
Дата сообщения: 21.01.2009 09:37
сначало выяснилось все компы клонированные тут, ну или почти все. Винды установлены еще за долго до меня были.
Но рано блин обрадовался, только несколько компов после удаления параметра в реестре SusClienId и wuauclt.exe /ResetAuthorization постучались. Остальные так и не хотят.


seva100, вот лог

Цитата:
2009-01-21    10:25:39+0300    1072    56c    Triggering AU detection through DetectNow api
2009-01-21    10:25:39+0300    1072    428    AU received event of 1
2009-01-21    10:25:40+0300    1072    428    WU client succeeds CClientCallRecorder::BeginFindUpdates from AutomaticUpdates with call id {2C0AAEE3-BE59-4F69-844F-6B3C622D1FF2}
2009-01-21    10:25:40+0300    1072    5f4    WU client executing call {2C0AAEE3-BE59-4F69-844F-6B3C622D1FF2} of type Search Call
2009-01-21    10:25:40+0300    1072    5f4    DownloadFileInternal failed for http://dc2sql:8530/SelfUpdate/wuident.cab: error 0x80190194
2009-01-21    10:25:40+0300    1072    5f4    IsUpdateRequired failed with error 0x80244019
2009-01-21    10:25:40+0300    1072    5f4    OS Version = 5.1.2600.3.0.65792
2009-01-21    10:25:42+0300    1072    5f4    Computer Brand = R-StyleComputers
2009-01-21    10:25:42+0300    1072    5f4    Computer Model = AWRDACPI
2009-01-21    10:25:42+0300    1072    5f4    Bios Revision = F9
2009-01-21    10:25:42+0300    1072    5f4    Bios Name = Award Modular BIOS v6.00PG
2009-01-21    10:25:42+0300    1072    5f4    Bios Release Date = 2004-09-09T00:00:00
2009-01-21    10:25:42+0300    1072    5f4    Locale ID = 1049
2009-01-21    10:25:42+0300    1072    5f4    ClientVersion: iuengine.dll = 5.4.3790.5512
2009-01-21    10:25:42+0300    1072    5f4    ClientVersion: wuapi.dll = 5.4.3790.5512
2009-01-21    10:25:42+0300    1072    5f4    ClientVersion: wuauclt.exe = 5.4.3790.5512
2009-01-21    10:25:42+0300    1072    5f4    ClientVersion: wuauclt1.exe = 5.4.3790.5512
2009-01-21    10:25:42+0300    1072    5f4    ClientVersion: wuaucpl.cpl = 5.4.3790.5512
2009-01-21    10:25:42+0300    1072    5f4    ClientVersion: wuaueng.dll = 5.4.3790.5512
2009-01-21    10:25:42+0300    1072    5f4    ClientVersion: wuaueng1.dll = 5.4.3790.5512
2009-01-21    10:25:42+0300    1072    5f4    ClientVersion: wuauserv.dll = 5.4.3790.5512
2009-01-21    10:25:42+0300    1072    5f4    ClientVersion: wucltui.dll = 5.4.3790.5512
2009-01-21    10:25:42+0300    1332    c3c    Trying to make out of proc datastore active
2009-01-21    10:25:43+0300    1332    c3c    Out of proc datastore is now active
2009-01-21    10:25:43+0300    1072    5f4    PT: Using serverID {3DA21691-E39D-4DA6-8A4B-B43877BCB1B7}
2009-01-21    10:25:43+0300    1072    5f4    WU client failed Searching for update with error 0x80248008
2009-01-21    10:25:43+0300    1072    5f4    Search Callback Failed, hr is 0x80248008
2009-01-21    10:25:43+0300    1072    5f4    Setting next AU detection timeout to 2009-01-21 12:25:43
2009-01-21    10:25:43+0300    1072    5f4    Setting AU scheduled install time to 2009-01-21 18:00:00
2009-01-21    10:25:43+0300    1072    5f4    WU client calls back to search call AutomaticUpdates with code Call failed and error 0x80248008
2009-01-21    10:25:43+0300    1072    5f4    WU client completed and deleted call {2C0AAEE3-BE59-4F69-844F-6B3C622D1FF2}
2009-01-21    10:25:47+0300    1072    5f4    REPORT EVENT: {1228DAB5-DF78-4C08-A06B-3961EA7BD984}    75    2009-01-21 10:25:40+0300    1    148    101    {D67661EB-2423-451D-BF5D-13199E37DF28}    0    80244019    SelfUpdate    Failure    Software Synchronization    Error: Agent failed detecting with reason: 0x80244019
2009-01-21    10:25:47+0300    1072    5f4    REPORT EVENT: {9B974E51-7E3C-41F1-BB0C-81FA5AB9DCE3}    76    2009-01-21 10:25:43+0300    1    148    101    {00000000-0000-0000-0000-000000000000}    0    80248008    AutomaticUpdates    Failure    Software Synchronization    Error: Agent failed detecting with reason: 0x80248008
2009-01-21    10:25:47+0300    1072    5f4    Created new event cache file at C:\WINNT\SoftwareDistribution\EventCache\{E06EB1DB-7545-4E47-B600-80E082FA62E8}.bin for writing.
2009-01-21    10:25:47+0300    1072    5f4    Reopened existing event cache file at C:\WINNT\SoftwareDistribution\EventCache\{6C18AD70-6EA9-4928-AFBF-54794E629A19}.bin for writing.
2009-01-21    10:29:20+0300    1072    5f4    Successfully opened event cache file at C:\WINNT\SoftwareDistribution\EventCache\{62490379-4FDE-4C50-B0C7-D6364F274B72}.bin for reading.
2009-01-21    10:29:20+0300    1072    5f4    PT: Using serverID {3DA21691-E39D-4DA6-8A4B-B43877BCB1B7}
2009-01-21    10:29:20+0300    1072    5f4    Failed to obtain cached cookie with hr = 80248008.
2009-01-21    10:29:20+0300    1072    5f4    Failed to upload events with hr = 80248008.


Автор: BlackFox
Дата сообщения: 21.01.2009 12:18
как в всусе найти SP1 на Vista? там куча папок.
Автор: wSDAw
Дата сообщения: 21.01.2009 13:52
Поставил WSUS 3 + SP1 на голую W2K3 R2 Ent
Встало всё без проблем, но вот синхриться не хочет.

*******Error*********
WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure. ... и т.д.
*******Error*********

Про сертификаты здесь http://forums.microsoft.com/TechNet-RU/ShowPost.aspx?PostID=4265453&SiteID=40&mode=1 читал... не помогло...
Про время тоже читал... не помогло
Инет на машине есть, прокси настроен в WSUS'е...
Кстати, может кого и наведет на мысть такая ситуация: "Время с time.windows.com тоже не синхрится"...
И с эксплорера тоже апдейт не идет ((

*******Error*********
Ошибка на веб-узле. Невозможно отобразить страницу. Чтобы устранить эту проблему, попробуйте выполнить следующие действия.
Обновите страницу.
В обозревателе Internet Explorer удалите временные файлы Интернета, выбрав в меню Сервис пункт Свойства обозревателя.
Закройте и снова откройте обозреватель Internet Explorer.
*******Error*********
Что за невезение ?
И еще... FireW'а нет и AntiV удалил пока....
Автор: ScorpioSar
Дата сообщения: 21.01.2009 14:34
Решил тоже поделиться своими наработками в работе с WSUS - написал на PHP скрипт для скачки нужных обновлений напрямую с локального сервера WSUS.

Последовательность инсталляции:

1) Установить Windows Server 2003 с последним пакетом обновления

2) Установить Windows Server Update Services 3.0 (x86 или x64)
http://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=e4a868d7-a820-46a0-b4db-ed6aa4a336d9

3) Установить Microsoft SQL Server Native Client (x86 или x64)
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=50b97994-8453-4998-8226-fa42ec403d17

по-русски: Собственный клиент Microsoft SQL Server:
http://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=50b97994-8453-4998-8226-fa42ec403d17

4) Установить последнюю версию PHP на Internet IInformation Server, который использует WSUS, в режиме CGI
http://www.php.net/downloads.php
руководство: http://www.php.net/manual/ru/install.windows.iis.php

4.1.Каталог, в котором установился PHP (например C:\PHP) включаем в системную переменную окружения PATH.

4.2. Устанавливаем SQL Server 2005 Driver for PHP Cumulative Update в папку C:\PHP\ext
http://www.microsoft.com/downloads/details.aspx?FamilyID=61bf87e0-d031-466b-b09a-6597c21a2e2a&DisplayLang=en

4.3.В файле php.ini устанавливаем параметры:
short_open_tag = On
magic_quotes_gpc = On
extension_dir = c:/PHP/ext
doc_root = "c:\Inetpub\wwwroot"
cgi.force_redirect = 0

Отключаем все расширения php (extensions), т.к. они могут быть причиной "зависания" при запуске php-скриптов под IIS, но добавляем скачанное ранее php-расширение в php.ini
extension=php_sqlsrv_ts.dll

5.На папки C:\PHP и подпапки даем права на чтение пользователю IUSR_[имя компа] и группе IIS_WPG

6.Используя консоль администрирования SQL Server 2005 (если Вы установили базу WSUS [SUSDB] на него) или SQL Server Management Studio Express (если Вы используете локальную базу Windows Internal Database) дать права пользователю IUSR_[имя компа] на подключение и чтение данных базы SUSDB.

Microsoft SQL Server Management Studio Express
http://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796

Подключиться к Windows Internal Database можно указав адрес сервера:
\\.\pipe\mssql$microsoft##ssee\sql\query
выбрать Windows Authentication и ввести логин и пароль администратора данного сервера.

7. В папку c:\Inetpub\wwwroot положить файл index.php

Код: <? include_once("inc/func.php");

$find=""; $file=""; $ord=""; $root="D:/WSUS/WsusContent/";
$server = '\\\\.\\pipe\\mssql$microsoft##ssee\\sql\\query';
$connectionInfo = array("Database"=>"SUSDB");
// Подключение к серверу
$conn = sqlsrv_connect($server, $connectionInfo);
if($conn === false) {
    echo "Ошибка подключения к SUSDB!</br>";
    echo "<pre>";
    die(print_r(sqlsrv_errors(),true));
    echo "</pre>\n";
    exit; }

if(isset($_POST['find'])) $find = norm($_POST['find']);
elseif(isset($_GET['find'])) $find = base64_decode(norm($_GET['find']));
if(isset($_GET['file'])) $file = norm($_GET['file']);
if(isset($_GET['ord'])) $ord = norm($_GET['ord']);
if(strlen($file)>4) {
    $sql = "SELECT TOP 100 sys.fn_varbintohexstr(F.FileDigest) AS Digest ";
    $sql.= "FROM tbFile F, tbFileOnServer S ";
    $sql.= "WHERE F.FileDigest=S.FileDigest AND ActualState<>1 AND IsEula=0 AND FileName='".$file."'";
    $res = sqlsrv_query($conn, $sql);
    if(sqlsrv_fetch($res)) {
        $hash = strtoupper(substr(sqlsrv_get_field($res,0,SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR)),2));
        $farr = explode(".",$file);
        $fext = $farr[count($farr)-1];
        $source = $root.substr($hash,-2)."/".$hash.".".$fext;
        if(file_exists($source)) DownloadFile($source, $file); }    
    exit; }
?>
<html>
<head>
    <meta http-equiv="Content-Type" CONTENT="text/html; charset=Windows-1251">
    <meta http-equiv="pragma" content="nocache">
    <title>Windows Server Update Services</title>
</head>
<body>
<? // Информация о сервере
$server_info = sqlsrv_server_info($conn);
if($server_info) {
    echo "<pre>";
    print_r($server_info);
    echo "</pre>\n"; }
// Сейчас закачиваются
$sql = "SELECT FileName, Modified, BytesDownloaded, TotalBytesForDownload ";
$sql.= "FROM tbFileDownloadProgress INNER JOIN ";
$sql.= " tbFileOnServer ON tbFileDownloadProgress.RowID = tbFileOnServer.RowID INNER JOIN ";
$sql.= " tbFile ON tbFileOnServer.FileDigest = tbFile.FileDigest ";
$sql.= "WHERE BytesDownloaded <> TotalBytesForDownload ";
$sql.= "ORDER BY BytesDownloaded DESC, TotalBytesForDownload DESC";
$res = sqlsrv_query($conn, $sql);
$down = false; $summ=0;
while(sqlsrv_fetch($res)) {
    if(!$down) {
        $down = true;
        echo "<table cellpadding='3' cellspacing='0' border='1'>\n";
        echo "<tr><th>Имя файла</th><th>Дата</th><th>Скачано</th><th>Осталось</th><th>Всего</th></tr>\n"; }
    $fname = sqlsrv_get_field($res,0)."";
    $fdate = substr(sqlsrv_get_field($res,1,SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR)),0,10);
    $downed = sqlsrv_get_field($res,2)+0;
    $fsize = sqlsrv_get_field($res,3)+0;
    $summ = $summ + $fsize-$downed;
    echo "<tr><td nowrap>".$fname."</td><td>".$fdate."</td>";
    echo "<td align='right'>".showsize($downed)."</td>";
    echo "<td align='right'>".showsize($fsize-$downed)."</td>";
    echo "<td align='right'>".showsize($fsize)."</td></tr>\n"; }
if($down) {
    echo "</table>\n";
    echo "<p><b>Всего осталось скачать: ".showsize($summ)."</b></p>"; }
?>
<form name="frmfind" action="index.php" method="post">
<p><b>Найти по:</b>&nbsp;
<input type="text" name="find" value="<?= $find ?>" size="25" maxlength="50">&nbsp;
<input type="submit" name="submit" value="OK"><br>
<font size="2">Можно указать несколько ключевых слов через пробел, например: <b>xp x86 rus</b><br>
Для того чтобы скачать нужный файл - кликните мышью по его имени в таблице.</font></p>
</form>
<? if(!$down) { ?>
<script language="javascript">
document.all("find").focus();
document.all("find").select();
</script>
<? }
// Поиск обновлений по шаблону (описание в таблице tbPreComputedLocalizedProperty)
if(strlen($find)>1) {
    $rows = 0;
    $find = ereg_replace(" +"," ",$find);
    $arr = explode(" ",$find); $cnt = count($arr);
    $sql = "SET DATEFORMAT ymd; ";
    $sql.= "SELECT TOP 100 sys.fn_varbintohexstr(F.FileDigest) AS Digest, FileName, Modified, Size ";
    $sql.= " FROM tbFile F, tbFileOnServer S";
    $sql.= " WHERE F.FileDigest=S.FileDigest AND ActualState<>1 AND IsEula=0 AND FileName LIKE '%".$arr[0]."%'";
    if($cnt>0) { for($i=1;$i<$cnt;$i++) { $sql.= " AND FileName LIKE '%".$arr[$i]."%'"; }}
    if($ord!="") $sql.= " ORDER BY ".$ord;
    $res = sqlsrv_query($conn, $sql);
    $find64 = base64_encode($find);
    echo "<table cellpadding='3' cellspacing='0' border='1'>\n";
    echo "<tr><th><a href='?find=$find64&ord=FileName%20asc'>Название</a></th>";
    echo "<th><a href='?find=$find64&ord=Size%20asc'>Размер</a></th>";
    echo "<th><a href='?find=$find64&ord=Modified%20desc'>Дата</a></th>";
    echo "<th>Файл в WsusContent</th></tr>\n";
    while(sqlsrv_fetch($res)) {
        $rows++;
        $hash = strtoupper(substr(sqlsrv_get_field($res,0,SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR)),2));
        $fname = sqlsrv_get_field($res,1)."";
        $fdate = substr(sqlsrv_get_field($res,2,SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR)),0,10);
        $fsize = sqlsrv_get_field($res,3)+0;
        $farr = explode(".",$fname);
        $fext = $farr[count($farr)-1];
        $source = $root.substr($hash,-2)."/".$hash.".".$fext;
        if(file_exists($source)) {
            echo "<tr><td nowrap><a href='?file=".$fname."'>".$fname."</a></td>";
            echo "<td align='right'>".showsize($fsize)."</td>";
            echo "<td>".$fdate."</td>";
            echo "<td align='right'>".basename($source)."</td>";
            echo "</tr>\n";    }}
    echo "</table>\n";
    echo "<p><b>Итого показано: ".$rows." записей</b></p>\n";
    sqlsrv_free_stmt($res);    }
    
sqlsrv_close($conn); ?>
</body>
</html>
Автор: seva100
Дата сообщения: 21.01.2009 20:47
TroViX

Цитата:
Error: Agent failed detecting with reason: 0x80244019

Коды ошибок и их объяснение
0x800710DD
0x80244001
0x80244019
0х80246008

Источник
Автор: SyCraft
Дата сообщения: 22.01.2009 16:14
а как узнать какие обновление во wsus уже скачаны, а какие скачиваются и сколько уже скачалось ?
Автор: ScorpioSar
Дата сообщения: 22.01.2009 16:36
Используя SQL Server Management Studio Express можно получить доступ к базе SUSDB, а там уже sql скрипт сочинить можно хоть для чего.
Автор: SyCraft
Дата сообщения: 22.01.2009 16:45
ScorpioSar
а проще? нет решений
Автор: TroViX
Дата сообщения: 22.01.2009 17:07

Цитата:
TroViX

Цитата:Error: Agent failed detecting with reason: 0x80244019


Коды ошибок и их объяснение
0x800710DD
0x80244001
0x80244019
0х80246008

Источник


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

помог другой способ =) банальная перестановка апдейт агента

1) стопорим апдейт сервис (в командной строке net stop wuauserv)
2) сносим папку %windir%\SoftwareDistribution
3) сносим ключь HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\SusClientId
4) скачиваем апдейт агент (windowsupdateagent30-x86.exe) и ставим на проблемные компы
5) в командной строке прописываем wuauclt /resetauthorization /detectnow для перерегистрации на wsus серваке и проверки новых обновлений сразу же.

только после этого пошли беспроблем регится на сервак и качать апдейты эти проблемные компы. Ура, наконец то можно теперь забить на wsus и обновления для всех компов =)
Автор: Altus
Дата сообщения: 22.01.2009 18:11
SyCraft

Цитата:
а как узнать какие обновление во wsus уже скачаны, а какие скачиваются и сколько уже скачалось ?


а разве в консоли "общие сведения" это не написано? или вы о чём то другом?
Автор: seva100
Дата сообщения: 22.01.2009 21:11
Вот тут
Интересный инструмент похожий как у ScorpioSar только на asp а не php.
Страничка показывает обновления находящиеся на WSUS с правильным именем.
Там же эти обновления можно скачать.
Делаю как там написано но при заходе на траницу получаю ошибку:
Cannot open database "SUSDB" requested by the login. The login failed.
Понимаю, что учетке "анонимного IIS" не хватает прав на доступ к базе. Но где прописать права не в курсе. Не общаюсь я с базами от MS.
При установке WSUS использовал SQLEXPRESS
При создании ODBC System DSN на страницес выбором сервера мне пришлось указать не localhost, а WSUS\SQLEXPRESS.
Прошу помощи.



Автор: brassnet
Дата сообщения: 23.01.2009 06:57
seva100
Есть предположение, что тулза для WSUS v2, а ты наверно юзаешь v3...
А возможно дело и не в этом.
Автор: ScorpioSar
Дата сообщения: 23.01.2009 12:13
Обновил версию, теперь выводится список обновлений с описаниями
PS Скрипт для WSUS 3 и базы SUSDB на Windows Internal, но легко перенастраивается под другие варианты. Тем кто предпочитает ASP (а не PHP) думаю не составит особого труда переписать сей скрипт на ASP.

index.php

Код: <? include_once("inc/func.php");

// Настраиваемые параметры подключения
$wsusdir = "D:/WSUS/WsusContent/";
$wsusurl = "http://wsus:8530/Content/";
$connectionInfo = array("Database"=>"SUSDB");
$server = '\\\\.\\pipe\\mssql$microsoft##ssee\\sql\\query';

$find=""; $file=""; $ord=""; $act=""; $field="FileName"; $lang="1049";
$FIELDS = array("FileName"=>"Имя файла","Title"=>"Название","Description"=>"Описание");
$LANGS = array("1033"=>"английской","1049"=>"русской");

// Подключение к серверу
$conn = sqlsrv_connect($server, $connectionInfo);
if($conn === false) {
    echo "Ошибка подключения к SUSDB!</br>";
    echo "<pre>";
    die(print_r(sqlsrv_errors(),true));
    echo "</pre>\n";
    exit; }

if(isset($_POST['field'])) $field = norm($_POST['field']);
if(isset($_POST['find'])) $find = norm($_POST['find']);
elseif(isset($_GET['find'])) $find = base64_decode(norm($_GET['find']));
if(isset($_POST['lang'])) $lang = norm($_POST['lang']);
if(isset($_GET['file'])) $file = norm($_GET['file']);
if(isset($_GET['act'])) $act = norm($_GET['act']);
if(isset($_GET['ord'])) $ord = norm($_GET['ord']);
if(strlen($file)>4) {
    $sql = "SELECT TOP 100 sys.fn_varbintohexstr(F.FileDigest) AS Digest ";
    $sql.= "FROM tbFile F, tbFileOnServer S ";
    $sql.= "WHERE F.FileDigest=S.FileDigest AND ActualState<>1 AND IsEula=0 AND FileName='".$file."'";
    $res = sqlsrv_query($conn, $sql);
    if(sqlsrv_fetch($res)) {
        $hash = strtoupper(substr(sqlsrv_get_field($res,0,SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR)),2));
        $farr = explode(".",$file);
        $fext = $farr[count($farr)-1];
        $source = $wsusdir.substr($hash,-2)."/".$hash.".".$fext;
        if(file_exists($source)) DownloadFile($source, $file); }    
    exit; }
?>
<html>
<head>
    <meta http-equiv="Content-Type" CONTENT="text/html; charset=Windows-1251">
    <meta http-equiv="pragma" content="nocache">
    <title>Windows Server Update Services</title>
</head>
<body>
<? // Информация о сервере
$server_info = sqlsrv_server_info($conn);
if($server_info) {
    echo "<pre>";
    print_r($server_info);
    echo "</pre>\n"; }

if($act=="") {
    // Сейчас закачиваются в общем
    $sql = "SELECT COUNT(1), SUM(BytesDownloaded), SUM(TotalBytesForDownload) FROM tbFileDownloadProgress ";
    $sql.= "WHERE BytesDownloaded <> TotalBytesForDownload";
    $res = sqlsrv_query($conn, $sql);
    if(sqlsrv_fetch($res)) {
        $cnt = sqlsrv_get_field($res,0)+0;
        $downed = sqlsrv_get_field($res,1)+0;
        $full = sqlsrv_get_field($res,2)+0;
        $remain = $full - $downed;
        if($cnt>0) {
            echo "<p><a href='?act=downed'>Сейчас закачивается $cnt обновлений,";
            echo " скачано ".showsize($downed)." из ".showsize($full).", осталось ".showsize($remain).".</a></p>"; }}
    }
    
// Список в закачке
if($act=="downed") {
    $sql = "SELECT FileName, Modified, BytesDownloaded, TotalBytesForDownload ";
    $sql.= "FROM tbFileDownloadProgress INNER JOIN ";
    $sql.= " tbFileOnServer ON tbFileDownloadProgress.RowID = tbFileOnServer.RowID INNER JOIN ";
    $sql.= " tbFile ON tbFileOnServer.FileDigest = tbFile.FileDigest ";
    $sql.= "WHERE BytesDownloaded <> TotalBytesForDownload ";
    $sql.= "ORDER BY BytesDownloaded DESC, TotalBytesForDownload DESC";
    $res = sqlsrv_query($conn, $sql);
    $down = false; $summ=0;
    while(sqlsrv_fetch($res)) {
        if(!$down) {
            $down = true;
            echo "<table cellpadding='3' cellspacing='0' border='1'>\n";
            echo "<tr><th>Имя файла</th><th>Дата</th><th>Скачано</th><th>Осталось</th><th>Всего</th></tr>\n"; }
        $fname = sqlsrv_get_field($res,0)."";
        $fdate = substr(sqlsrv_get_field($res,1,SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR)),0,10);
        $downed = sqlsrv_get_field($res,2)+0;
        $fsize = sqlsrv_get_field($res,3)+0;
        $summ = $summ + $fsize - $downed;
        echo "<tr><td nowrap>".$fname."</td><td>".$fdate."</td>";
        echo "<td align='right'>".showsize($downed)."</td>";
        echo "<td align='right'>".showsize($fsize-$downed)."</td>";
        echo "<td align='right'>".showsize($fsize)."</td></tr>\n"; }
    if($down) {
        echo "</table>\n";
        echo "<p><b>Всего осталось скачать: ".showsize($summ)."</b></p>"; }}
?>
<form name="frmfind" action="index.php" method="post">
<p><b><? ComboBox("field",$FIELDS,$field,true); ?> содержит
<input type="text" name="find" value="<?= $find ?>" size="25" maxlength="50"> для
<? ComboBox("lang",$LANGS,$lang,true); ?> версии
<input type="submit" value="Искать"></b><br>
<font size="2">Можно указать несколько ключевых слов через пробел, например: <b>XP x86</b><br>
Для того чтобы скачать нужный файл - кликните мышью по его имени в таблице.</font></p>
</form>
<? if($act=="") { ?>
<script language="javascript">
document.all("find").focus();
document.all("find").select();
</script>
<? }
// Поиск обновлений по шаблону (описание в таблице tbPreComputedLocalizedProperty)
if(strlen($find)>1) {
    $find = ereg_replace(" +"," ",$find);
    $arr = explode(" ",$find); $cnt = count($arr);
    $table = "
FROM tbFile F, tbFileOnServer S, tbFileForRevision FR, tbRevision R, tbBundleDependency B,
tbRevision BR, tbUpdate U, tbPreComputedLocalizedProperty L, tbRevisionLanguage RL
WHERE F.FileDigest = S.FileDigest AND S.ActualState<>1 AND F.FileDigest = FR.FileDigest AND IsEula=0
AND R.RevisionID = FR.RevisionID AND R.IsLatestRevision = 1
AND B.BundledRevisionID = FR.RevisionID AND BR.RevisionID = B.RevisionID
AND U.LocalUpdateID = BR.LocalUpdateID AND L.UpdateID = U.UpdateID
AND L.ShortLanguage = 'ru' AND RL.RevisionID = R.RevisionID
AND RL.LanguageID IN(0,$lang) AND RL.Expanded = 0 AND $field LIKE '%".$arr[0]."%'";
    if($cnt>0) { for($i=1;$i<$cnt;$i++) { $table.= " AND $field LIKE '%".$arr[$i]."%'"; }}
    $sql = "SELECT COUNT(1), SUM(F.Size)".$table;
    $res = sqlsrv_query($conn, $sql);
    if(sqlsrv_fetch($res)) {
        $updates = sqlsrv_get_field($res,0)+0;
        $fullsize = sqlsrv_get_field($res,1)+0; }
    $sql = "SET DATEFORMAT ymd;
SELECT TOP 100 sys.fn_varbintohexstr(F.FileDigest) AS Digest, FileName, Modified, Size, L.Title, L.Description";
    $sql.= $table;
    if($ord!="") $sql.= " ORDER BY ".$ord;
    $res = sqlsrv_query($conn, $sql);
    $find64 = base64_encode($find);
    if($updates>100) echo "<b>Показано 1-100 из ".$updates." обновлений (всего ".showsize($fullsize).")</b>\n";
    else echo "<b>Найдено ".$updates." обновлений (".showsize($fullsize).")</b>\n";
    echo "<table cellpadding='3' cellspacing='0' border='1'>\n";
    echo "<tr bgcolor='#CCCCCC'><th><a href='?find=$find64&ord=FileName%20asc'>Описание обновления</a></th>";
    echo "<th><a href='?find=$find64&ord=Modified%20desc'>Дата</a></th>";
    echo "</tr>\n";
    while(sqlsrv_fetch($res)) {
        $hash = strtoupper(substr(sqlsrv_get_field($res,0,SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR)),2));
        $fname = sqlsrv_get_field($res,1)."";
        $fdate = substr(sqlsrv_get_field($res,2,SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR)),0,10);
        $fsize = sqlsrv_get_field($res,3)+0;
        $title = sqlsrv_get_field($res,4)."";
        $desc = sqlsrv_get_field($res,5)."";
        $farr = explode(".",$fname);
        $fext = $farr[count($farr)-1];
        $source = $wsusdir.substr($hash,-2)."/".$hash.".".$fext;
        $url = $wsusurl.substr($hash,-2)."/".$hash.".".$fext;
        if(file_exists($source)) {
            echo "<tr><td><font size='2'><b>$title</b><br>$desc<br><i>Скачать:</i> ";
            echo "<a href='?file=$fname'>$fname</a> (".showsize($fsize)."), ";
            echo "<i>в WsusContent:</i> <a href='$url'>".basename($source)."</a></font></td>";
            echo "<td>".$fdate."</td>";
            echo "</tr>\n";    }}
    echo "</table>\n";
    sqlsrv_free_stmt($res);    }
    
sqlsrv_close($conn); ?>
</body>
</html>

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283

Предыдущая тема: Общие вопросы про AD (Active Directory) - часть II


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.