terça-feira, 17 de julho de 2012

ASP - Executando comandos DOS, arquivos Batch e .EXE

How do I execute a DOS command / batch file / exe from ASP?

 Se você tiver o Windows Script Host instalado e ativado, você pode fazer isso:
<%
    set wshell = CreateObject("WScript.Shell")
    wshell.run "c:\file.bat"
    set wshell = nothing
%>

Where c:\file.bat is something like:

    net stop iisadmin /y
    net start w3svc 


Se você não tem a capacidade de usar o WSH, você pode usar ASPExec ou DynuExec.

Se você está tentando recuperar a saída de um comando, veja o exemplo no artigo # 2033, que capta os resultados de um comando PING. Outra alternativa é canalizar a saída para um arquivo de texto, que você pode ler usando o FileSystemObject, por exemplo:

<%
    set wshell = CreateObject("WScript.Shell")
    wshell.run "%COMSPEC% /C dir c:\ > c:\dir.txt", 0, TRUE
    set wshell = nothing

    set fso = CreateObject("Scripting.FileSystemObject")
    set fs = fso.openTextFile("c:\dir.txt", 1, TRUE)
    response.write replace(replace(fs.readall,"<","<"),vbCrLf,"<br>")
    fs.close: set fs = nothing: set fso = nothing
%>

Se você receber o seguinte erro:

Error Type:
(0x80070002)
/<file>.asp, line <line>

Isso geralmente significa que o arquivo não foi encontrado. Verifique o nome e caminho do arquivo que você passou para o método de execução.


Se você receber o seguinte erro:

Microsoft VBScript runtime error '800a0046'
Permission denied
/<file>.asp, line <line>

Em seguida, uma das duas coisas aconteceu. Ou o usuário interativa (se IUSR_MachineName ou um usuário autenticado) não tem permissões para o arquivo ou pasta que está sendo executado, ou, o usuário interativo não tem permissões para um ou mais dos comandos a ser chamados dentro do arquivo. Verifique se o IUSR_machinename está incluído no grupo "Todos" ... e não apenas dar acesso "Everyone" completo para essa pasta, ou colocar IUSR no grupo Administradores. Você tem que dar permissões explicitamente IUSR para a pasta arquivo, e qualquer outra coisa que o comando tem que tocar.

Se você estiver executando o IIS 6.0, você também pode querer verificar para fora KB # 311481.

Uma palavra a mais do aviso: não execute qualquer comando que gera um prompt, msgbox, de diálogo ou de qualquer outra GUI. Esta não será executado a partir de ASP e poderia pendurar todo o seu sistema (já que a GUI invisível estará esperando por uma resposta de uma pessoa fictícia sentado no terminal do servidor).
 
Fonte: http://classicasp.aspfaq.com/general/how-do-i-execute-a-dos-command/batch-file/exe-from-asp.html

Nenhum comentário:

Postar um comentário