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:
Where c:\file.bat is something like:
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:
Se você receber o seguinte erro:
Se você receber o seguinte erro:
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).
<% 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ê 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