проблема с Powershell - отправка данных с помощью Invoke Web Request - PullRequest
0 голосов
/ 13 июля 2020

У меня проблема. Я тестирую различные каналы связи.

Я отправляю почтовый запрос с помощью powershell на сервер, где сценарий php получает тело и перезаписывает его в текстовом файле.

Php сервер побочный скрипт:

<? Php
$ handle = fopen ("/ path / to / file.txt", "w");
foreach ($ _ POST as $ variable => $ value) {
fwrite ($ handle, $ variable);
fwrite ($ handle, $ value);
fwrite ($ handle, "\ r \ n");
}
fclose ($ handle);
exit;
?>

Когда я отправляю обычную строку в теле, все в порядке.

Invoke-WebRequest -Uri http://localhost/catch.php -Method Post -Body 'content'

Когда я пытаюсь поместить результат команды в свое тело и отправить запрос, я см .:

$ip = ipconfig
Invoke-WebRequest -Uri http://localhost/catch.php -Method Post -Body $ip

Invoke-WebRequest: Forbidden
You don't have permission to access this resource.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
At line: 1 char: 1
+ Invoke-WebRequest -Uri http://localhost/catch.php -M ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo: InvalidOperation: (System.Net.HttpWebRequest: HttpWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId: WebCmdletWebResponseException, Microsoft.PowerShell.Commands.InvokeWebRequestCommand

Я пробовал разные методы и преобразования, но явно чего-то не понимаю. Пожалуйста, простите меня, если вопрос очевиден - я новичок.

Есть идеи, как отправить вывод команды powershell на сервер в сценарий php? PS. У меня на сервере нет root. Сервер apache. Я могу настроить его через .htaccess

1 Ответ

0 голосов
/ 13 июля 2020

Я спрашиваю и отвечаю сам. Сервер интерпретировал запрос как вредоносный. Я решил это, отправив данные в формате json.

на стороне сервера:

[windrcmm@server163 c2]$ cat json.php
<?php
$jsonString = file_get_contents("php://input");
$myFile = "json.txt";
file_put_contents($myFile,$jsonString);
echo '{ "success": true }';
?>

на стороне клиента:

$ip = ipconfig | Out-String 
$param = @{
    Uri         = "http://localhost/catchjson.php"
    Method      = "Post"
    Body        = $ip
    ContentType = "application/json"
}
Invoke-RestMethod @param
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...