Exec Powershell Befehlsausführung per PHP Seite
also ich habe folgendes vor zu realisieren. Ich möchte über eine PHP-Seite DNS Einträge anlegen bzw. löschen.
Im Powershell läuft das bereits und funktioniert wie folgt:
Code:
zum hinzufügen und
Code:
zum löschen.
Es wird durch diese Befehle ein DNS erzeugt der dann über http://01.private.meinserver.xxx (IP 10.1.1.1) erreicht werden soll.
Ich hatte dafür vorher eine einfache MYSQL Datenbank die ich mit der jeweiligen IP Adresse gefüttert habe und die ich dann an eine PHP Weiterleitung
geschickt habe. Das stellte sich dann allerdings problematisch dar, wenn ich zusätzliche Portadressen übertragen wollte. Da ist so ein DNS A-Eintrag eleganter
und auch einfacher zu händeln.
In PHP habe ich es dann wie folgt probiert:
Code:
wobei ich als Rückmeldung bei "echo 'Temp:'. $tmp" immer "Zugriff verweigert" bekomme.
Ich habe mich da schon durch verschiedene Foren gewühlt und festgestellt das die Antworten immer recht mager ausgefallen sind.
Meine Vermutung geht in die Richtung:
- Web-User hat nicht genug rechte
- Kommando Systax ist verkehrt
Powershell ExecutionPolicy ist auf unristricted eingestellt und zwar auf Powershell32 und auch Powershell64.
Als Ausgabe bekomme ich
Wenn ich die Ausgabe per "Ausführen" direkt auf dem Server ausführe, fügt er mir den DNS Eintrag ordnungsgemäß hinzu, somit halte ich die Syntax für in Ordnung
Kann bitte mal jemand über das PHP schauen und mir da weiterhelfen?
Außerdem bräuchte ich Tipps beim einstellen der Web User Rechte bezüglich der Berechtigung zum ausführen von Powershell Befehlen.
System:
Windows2012 Server
Plesk12
Microsoft IIs Webserver
PHP
Im Powershell läuft das bereits und funktioniert wie folgt:
Code:
dnscmd . /recordadd privat.meinserver.xxx 01 a 10.1.1.1
Code:
dnscmd . /recorddelete privat.meinserver.xxx 01 a /f
Es wird durch diese Befehle ein DNS erzeugt der dann über http://01.private.meinserver.xxx (IP 10.1.1.1) erreicht werden soll.
Ich hatte dafür vorher eine einfache MYSQL Datenbank die ich mit der jeweiligen IP Adresse gefüttert habe und die ich dann an eine PHP Weiterleitung
geschickt habe. Das stellte sich dann allerdings problematisch dar, wenn ich zusätzliche Portadressen übertragen wollte. Da ist so ein DNS A-Eintrag eleganter
und auch einfacher zu händeln.
In PHP habe ich es dann wie folgt probiert:
Code:
<?php
{
$comm = "dnscmd . /recordadd private.meinserver.xxx 01 a 127.0.0.1";
echo "Start ...<br>";
$ex = "C:\\WINDOWS\\system32\\windowspowershell\\v1.0\\\ powershell.exe -command ".$comm." 2>&1";
echo $ex."<br>";
$tmp = exec($ex,$results);
echo "Temp: ".$tmp."<br>";
echo "Result: ".$results."<br>";
echo "Done.";
}
?>
Ich habe mich da schon durch verschiedene Foren gewühlt und festgestellt das die Antworten immer recht mager ausgefallen sind.
Meine Vermutung geht in die Richtung:
- Web-User hat nicht genug rechte
- Kommando Systax ist verkehrt
Powershell ExecutionPolicy ist auf unristricted eingestellt und zwar auf Powershell32 und auch Powershell64.
Als Ausgabe bekomme ich
Start ...
C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -command dnscmd . /recordadd private.meinserver.xxx 01 a 127.0.0.1 2>&1
Temp: Zugriff verweigert
Result: Array
Done.
Wenn ich die Ausgabe per "Ausführen" direkt auf dem Server ausführe, fügt er mir den DNS Eintrag ordnungsgemäß hinzu, somit halte ich die Syntax für in Ordnung
Kann bitte mal jemand über das PHP schauen und mir da weiterhelfen?
Außerdem bräuchte ich Tipps beim einstellen der Web User Rechte bezüglich der Berechtigung zum ausführen von Powershell Befehlen.
System:
Windows2012 Server
Plesk12
Microsoft IIs Webserver
PHP
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 295926
Url: https://administrator.de/contentid/295926
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
6 Kommentare
Neuester Kommentar
Zu den Berechtigungen siehe hier, Stichwort App-Pool:
ASP.net Powershell Script ausführen
Das musst du selbstredend beachten, wäre ja fatal wenn der IIS alles per Default mit Admin-Rechten ausführen würde
Und wozu extra mit der Powershell einen Befehlt ausführen der doch regulär sowieso in der CMD läuft ?
Gruß jodel32
ASP.net Powershell Script ausführen
Das musst du selbstredend beachten, wäre ja fatal wenn der IIS alles per Default mit Admin-Rechten ausführen würde
Und wozu extra mit der Powershell einen Befehlt ausführen der doch regulär sowieso in der CMD läuft ?
Gruß jodel32
@Smint1984
p.s. Kommentare lassen sich editieren und somit in einem zusammenfassen ... und zumindest eine Begrüßung oder Gruß wären ganz nett dem TO gegenüber.
Vielleicht in Zukunft be deinen Posts beherzigen
Gruß jodel32
p.s. Kommentare lassen sich editieren und somit in einem zusammenfassen ... und zumindest eine Begrüßung oder Gruß wären ganz nett dem TO gegenüber.
Vielleicht in Zukunft be deinen Posts beherzigen
Gruß jodel32