jaaaxy
Goto Top

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:
dnscmd . /recordadd privat.meinserver.xxx 01 a 10.1.1.1
zum hinzufügen und

Code:
dnscmd . /recorddelete privat.meinserver.xxx 01 a /f
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:
<?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.";  

}
?>
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
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

Content-Key: 295926

Url: https://administrator.de/contentid/295926

Ausgedruckt am: 28.03.2024 um 17:03 Uhr

Mitglied: 114757
114757 11.02.2016 aktualisiert um 23:13:01 Uhr
Goto Top
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 face-wink

Und wozu extra mit der Powershell einen Befehlt ausführen der doch regulär sowieso in der CMD läuft ?

Gruß jodel32
Mitglied: Smint1984
Smint1984 12.02.2016 um 00:32:04 Uhr
Goto Top
Also erstmal finde ich es extrem unelegant aus PHP exec/eval auszuführen. Sowas gehört in die bash etc.

PHP ist nicht nativ für Windows, es ist für Unix. Nutz doch C,C++ usw.
Mitglied: Smint1984
Smint1984 12.02.2016 um 00:51:40 Uhr
Goto Top
Was macht eigentlich die geschweifte Klammer in Zeile 2 und 14?
Mitglied: 114757
114757 12.02.2016 aktualisiert um 09:32:48 Uhr
Goto Top
@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 face-smile

Gruß jodel32
Mitglied: Smint1984
Smint1984 12.02.2016 um 09:59:57 Uhr
Goto Top
Hallo jodel32,

guter Tipp, dankeschön! face-smile
Mitglied: Jaaaxy
Jaaaxy 13.02.2016 um 00:12:01 Uhr
Goto Top
Danke erstmal für die Tipps...

Ich werde mich da mal einlesen und dann wieder melden mit einer Lösung oder neuen Problemen face-smile

Bin allerdings auch gerne an anderen Lösungswegen interessiert. Weiss allerdings nicht ob ich sie umsetzen kann, da ich mit Bits und Bytes aufgewachsen bin ( sprich: C64 Generation ) und daher meine Lernphase bei Assembler, Pascal, HTML, PHP so ziemlich endet und ich zu tun habe das ich solche Sachen die Später an mich ran kamen wie C,C++ usw. zumindestens zu verstehen wenn ich den Code sehe face-smile

Wie gesagt, ich lese mich da mal ein und melde mich... thx