Вопрос по удаленному запуску программы windows по нажатию кнопки на сайте

C
На сайте с 31.10.2014
Offline
44
706

Имеем два удаленных сервера в интернет, на одном windows - на втором linux apache сайт php

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

2 Можно ли передавать параметры запуска в POST запросах для запуска exe файлов?

3. Какие решения порекомендуете для удаленного запуска windows приложений между серверами по hhtp с передачей параметров в GET POST запросах?

S
На сайте с 30.09.2016
Offline
469
#1

Видать, здесь не так много специалистов по серверам на Винде. Из общих соображений, по запросам GET и POST можно передать что угодно - без разницы, на чём работает сервер. И если я нажатием кнопки на сайте с одного сервера Linux могу запустить любой исполняемый файл на другом сервере Linux (в пределах данных мне прав, естественно), то думаю, то же самое можно сделать и на Винде. Здесь только вопрос прав на исполнение файла. Как из командной строки.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
K0
На сайте с 01.09.2016
Offline
72
#2

cafen, например вот так при помощи ASP.NET:

cmdrun.cmd:

@echo off

echo %~1
echo %~2
exit /b 10

cmdrun.aspx:

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Diagnostics" %>

<script runat="server">
string Buffer = "";
public void DataReceived(Object sender, DataReceivedEventArgs e)
{
if (e != null)
{
if (e.Data != null) Buffer += e.Data + "\r\n";
}
}
void Page_Load(object sender, System.EventArgs e)
{
try
{
string sCmd = Environment.ExpandEnvironmentVariables("%ComSpec%");
string sPath = Server.MapPath("cmdrun.cmd");
ProcessStartInfo si = new ProcessStartInfo(sCmd, String.Format("/C \"\"{0}\" \"{1}\" \"{2}\"\"", sPath, Request["P1"], Request["P2"]));
si.UseShellExecute = false;
si.RedirectStandardOutput = true;
si.StandardOutputEncoding = Encoding.GetEncoding("cp866");
si.RedirectStandardError = true;
si.StandardErrorEncoding = Encoding.GetEncoding("cp866");

Process p = new Process();
p.StartInfo = si;
p.OutputDataReceived += new DataReceivedEventHandler(this.DataReceived);
p.ErrorDataReceived += new DataReceivedEventHandler(this.DataReceived);
p.Start();
p.BeginOutputReadLine();
p.BeginErrorReadLine();
p.WaitForExit();
Response.Write(Server.HtmlEncode(String.Format("{0}\r\nExit Code: {1}", this.Buffer, p.ExitCode)).Replace("\r\n", "<br />"));
}
catch (Exception ex)
{
Response.Write(Server.HtmlEncode(ex.ToString()).Replace("\r\n", "<br />"));
}
}
</script>

Предполагается, что на Windows установлен IIS, cmdrun.aspx и cmdrun.cmd лежат в c:\inetpub\wwwroot\

png cmdwin.png
S
На сайте с 13.10.2014
Offline
171
#3

если у вас на виндовом сервере также установлен пхп то задача решилась-бы достаточно просто

<?php echo exec("script.bat"); ?>

если нет, тогда задача усложняется. ставить слушалку по какому-то порту, с обработчиком. а потом стучаться на него с сервера А

DV
На сайте с 01.05.2010
Offline
644
#4

Под Windows пишем сервер с помощью TCPListen и TCPRecv на AutoIT.

Отправляем с *nix веб сервера чем придётся.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий