Вопрос по sql-server-2008, asp-classic – Сделайте так, чтобы сервер автоматически запускал asp-скрипт каждый день

3

Можно ли создать пакетный файл, который открывает Firefox, запускает веб-сайт, а затем снова закрывает Firefox?

Что-то вроде:

<code>@echo off
start firefox http://.....
</code>

Вот где я застрял ... Он должен снова закрыть firefix, когда сайт загрузится.

Он используется для запуска сценария обслуживания каждую ночь в 23:59. Скрипт основан локально, но невозможно запустить asp-файл без использования сервера, поэтому я разместил его как веб-сайт.

Преобразование вашего сценария ASP в VBS займет пару минут, а затем вы сможете легко вызвать его, используя wscript и запланированные задачи ... Aaron Bertrand
Да, вы можете запланировать сценарий VBS из агента SQL или из Windows. Aaron Bertrand
Вы имеете в виду агент SQL Server - & gt; Шаг работы - & gt; Тип: ActiveX Script? Behrens

Ваш Ответ

2   ответа
4

Если вы просто хотите вызвать страницу на уже существующем веб-сайте, выполните следующие действия.

Option Explicit
On Error Resume Next

' Declare our vars
Dim objWinHttp, strURL

' Request URL from 1st Command Line Argument.  This is
' a nice option so you can use the same file to
' schedule any number of differnet scripts just by
' changing the command line parameter.
'strURL = WScript.Arguments(0)

' Could also hard code if you want:
strURL = "http://www.example.com/myscript.asp"

' For more WinHTTP v5.0 info, including where to get
' the component, see our HTTP sample:
' http://www.asp101.com/samples/winhttp5.asp
Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5")
objWinHttp.Open "GET", strURL
objWinHttp.Send

' Get the Status and compare it to the expected 200
' which is the code for a successful HTTP request:
' http://www.asp101.com/resources/httpcodes.asp
If objWinHttp.Status <> 200 Then
    ' If it's not 200 we throw an error... we'll
    ' check for it and others later.
    Err.Raise 1, "HttpRequester", "Invalid HTTP Response Code"
End If

' Since in this example I could really care less about
' what's returned, I never even check it, but in
' general checking for some expected text or some sort
' of status result from the ASP script would be a good
' idea.  Use objWinHttp.ResponseText

Set objWinHttp = Nothing

If Err.Number <> 0 Then
    ' Something has gone wrong... do whatever is
    ' appropriate for your given situation... I'm
    ' emailing someone:
    Dim objMessage
    Set objMessage = Server.CreateObject("CDO.Message")
    objMessage.To       = "[email protected]"
    objMessage.From     = "cron job <[email protected]>"
    objMessage.Subject  = "An Error Has Occurred in a " _
        & "Scheduled Task"
    objMessage.TextBody = "Error #: " & Err.Number & vbCrLf _
        & "From: " & Err.Source & vbCrLf _
        & "Desc: " & Err.Description & vbCrLf _
        & "Time: " & Now()

    objMessage.Send
    Set objMessage = Nothing
End If

Либо изменитьstrURL к вашему сценарию или раскомментируйте строкуstrURL = WScript.Arguments(0) и передать URL-адрес в качестве параметра. Поместите это в планировщик задач сcscript.exe.

Это то, как я выполняю все запланированные задачи на основе ASP, так что я могу гораздо проще тестировать, вы можете захотеть заблокировать ваш скрипт, чтобы он принимал доступ только через IP-адрес сервера, чтобы убедиться, что он не вызывается ботом.

Изменить: для ясности.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
6

Adapted from an article I wrote on aspfaq.com years ago.

Используйте команду AT и Windows Scripting Host (или более простой планировщик задач) для планирования файла VBS через определенные промежутки времени. & # XA0; & # XA0;

Сначала измените ASP на файл VBS. Это достигается путем (1) изменения расширения на VBS; (2) изменение всех вызовов Server.CreateObject на CreateObject; и (3) удаление всех<%%> разделители и любой код, предназначенный для браузера (например, оператор response.write или клиентский HTML). Я не столкнулся с какими-либо дополнительными осложнениями, но YMMV. & # XA0; & # XA0;

Вы сохраняете файл VBS в файловой системе и используете команду AT для его планирования (это фактически планирует его выполнение с помощью службы расписаний Windows). В командной строке вы можете использовать AT самостоятельно, чтобы увидеть список задач, которые в настоящее время находятся в расписании. Вы можете использовать AT /? выяснить все его синтаксические возможности. & # xA0;

Например, чтобы запускать файл каждый будний день в 9:00, я запускаю этот пакетный файл (первая строка очищает существующие записи): & # xA0;       & # XA0; & # XA0;

at /delete /y 
at 9:00 /every:m,t,w,th,f d:\net\shared\getdata.vbs      

Обратите внимание, что веб-сервер не задействован; файл доступен напрямую через файловую систему. После того как я преодолел & quot; пользователь должен войти в систему & quot; и & quot; задачи должны быть сброшены при перезагрузке & quot; препятствия (оба из которых, я считаю, являются проблемами с конкретной машиной, которая не находится под нашим контролем), все работает нормально для меня. & # xA0;

Пример использования WSH, CDONTS и планировщика задач для регулярной отправки электронной почты см. В разделеКБ № 221495. & # XA0;

Если все, что вы делаете, это работа с базой данных в SQL Server, вы можете рассмотреть возможность использования задания. Это позволит вам сохранить всю обработку задания в вашей базе данных и предотвратить осложнения, связанные с несколькими системами, соединениями и адаптацией кода ASP, чтобы поведение не было похожим на ASP.

Error: User Rate Limit Exceeded Behrens
Error: User Rate Limit Exceeded

Похожие вопросы