Gå til innhold

Utføre CMD kommando med PHP


Anbefalte innlegg

Hai2u

 

Som tittelen sier, ønsker jeg å utføre en CMD kommando på serveren med PHP.

 

 

Si at jeg har et tekstfelt, og en knapp. Det som fylles inn i tekstfeltet skal være kommandoen som skal utføres.

 

Jeg har søkt litt rundt, men finner bare exec kommandoen som kan starte programmer/bat filer på serveren.

 

 

Er det jeg spør om mulig? I så fall, hvordan?

Lenke til kommentar
Videoannonse
Annonse

Greia er at jeg kjører Windows Server 2003 med Active Directory, og skal opprette brukere via command-interface.

 

Jeg vil helst at dette kan gjøres eksternt, så man ikke trenger å logge inn på serveren for å legge til nye brukere.

 

Edit:

Skal se litt på den, pulse ;)

Endret av lefsaker
Lenke til kommentar

Skulle tro denne burde funke:

 

<?php
// Hente teksten fra tekstfeltet og lagre i en variabel:
$tekstfelt = $_POST['tekstfelt']; 
// Utførsel: 
system("cmd.exe /c $tekstfelt");
?>

 

Denne utfører i alle fall det du spør om, og returnerer results.

Endret av Limstift
Lenke til kommentar
Den du linka til viser bare hvordan man kjører bat filer :p

 

Har også sett igjennom hele shell_exec dokumentasjonen der, og det står jo at det skal funke med feks. "ping $host"

 

Jeg forstår ikke helt problemet ditt. Du sier at php ikke kan kjøre terminal kommandoer på serveren din? Vil dette si alle kommandoer?

 

Dette høres underlig ut.

 

Kan jo være en rettighets greie osgå.

 

Hvis php har lov til å kjøre kommandoene av windows, så er det uansett ingenting som hindrer deg å lagre en batch fil, og så eksekvere den, hvis det er parameter problemer du har.

Lenke til kommentar

<?php
// Hente teksten fra tekstfeltet og lagre i en variabel:
$fornavn = "adminhaxx";
// Utførsel:
system('cmd.exe /c echo Dsadd user "cn=$fornavn $etternavn, ou=Trinn1, ou=Elever, dc=svarttjern,dc=skole" -samid $brukernavn -upn [email protected] -pwd $passord -fn $fornavn -ln $etternavn -display $fornavn -memberof "CN=Klasse1A, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole" "CN=Bibliotek, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole" -tel $telefonnummer -desc "$beskrivelse" -profile \\svarttjern-ad\profiles\trinn1');
?>

 

Tøddelene(?) må være der for at brukeren skal bli lagt til i Active Directory

Lenke til kommentar

Vil ikke dette være enklere å legge i en .bat fil med parameter ?

 

utestet

$output=system("adduser.bat ".$fornavn." ".$etternavn." ".$brukernavn." ".$passord." ".$telefonnummer." ".$beskrivelse);

 

adduser.bat

:: %1 fornavn
:: %2 etternavn
:: %3 brukernavn
:: %4 passord
:: %5 tlf
:: %6 beskrivelse

Dsadd user "cn=%1 %2, ou=Trinn1, ou=Elever, dc=svarttjern,dc=skole" -samid %3 -upn %[email protected] -pwd %4 -fn %1 -ln %2 -display %1 -memberof "CN=Klasse1A, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole" "CN=Bibliotek, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole" -tel %5 -desc "%6" -profile \\svarttjern-ad\profiles\trinn1

 

Mulig du bør sjekke hvilke(n) "bruker"/rettigheter web server servicen (om windows og kjører som service) kjører som/har.

Lenke til kommentar

Kjører Apache som Administrator, men det funka ikke med .bat fil... Ingenting skjer når jeg åpner den manuelt heller...

 

Det funker så lenge jeg bruker:

<?php system(" og ikke

<?php system('

 

Jeg kan ikke bruke " IOM at " er i bruk inne i selve cmd kommandoen som utføres

Endret av lefsaker
Lenke til kommentar

Burde ikke dette funke?

system('cmd.exe /c Dsadd user "cn='.$fornavn.' '.$etternavn.', ou=Trinn1, ou=Elever, dc=svarttjern,dc=skole" -samid '.$brukernavn.' -upn '.$brukernavn.'@svarttjern.skole -pwd '.$passord.' -fn '.$fornavn.' -ln '.$etternavn.' -display '.$fornavn.' -memberof "CN=Klasse1A, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole" "CN=Bibliotek, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole" -tel '.$telefonnummer.' -desc "'.$beksrivelse.'" -profile \\svarttjern-ad\profiles\trinn1');

Lenke til kommentar
Burde ikke dette funke?

system('cmd.exe /c Dsadd user "cn='.$fornavn.' '.$etternavn.', ou=Trinn1, ou=Elever, dc=svarttjern,dc=skole" -samid '.$brukernavn.' -upn '.$brukernavn.'@svarttjern.skole -pwd '.$passord.' -fn '.$fornavn.' -ln '.$etternavn.' -display '.$fornavn.' -memberof "CN=Klasse1A, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole" "CN=Bibliotek, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole" -tel '.$telefonnummer.' -desc "'.$beksrivelse.'" -profile \\svarttjern-ad\profiles\trinn1');

 

Dette ser ut som en stor suppe. Du får mye større kontroll på hva du holder på med hvis du sktiver kode med litt struktur.

 

Jeg kjenner ikke til selve kommandoen i detalj men lister meg ut på ett eksempel:

$system_call  = "cmd.exe ";
$system_call .= "/c Dsadd user ";
$system_call .= "\"";
$system_call .= "cn=".$fornavn." ".$etternavn.", ";
$system_call .= "ou=Trinn1, ";
$system_call .= "ou=Elever, ";
$system_call .= "dc=svarttjern, ";
$system_call .= "dc=skole";
$system_call .= "\" ";
$system_call .= "-samid ";
$system_call .= $brukernavn." ";
$system_call .= "-upn ";
$system_call .= $brukernavn."@svarttjern.skole ";
$system_call .= "-pwd ";
$system_call .= $passord." ";
$system_call .= "-fn ";
$system_call .= $fornavn." ";
$system_call .= "-ln ";
$system_call .= $etternavn." ";
$system_call .= "-display ";
$system_call .= $fornavn." ";
$system_call .= "-memberof ";
$system_call .= "\"CN=Klasse1A, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole\" ";
$system_call .= "\"CN=Bibliotek, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole\" ";
$system_call .= "-tel ";
$system_call .= $telefonnummer." ";
$system_call .= "-desc ";
$system_call .= "\"".$beksrivelse."\" ";
$system_call .= "-profile ";
$system_call .= "\\svarttjern-ad\profiles\trinn1";

system($system_call);

 

du kan jo også prøve med echo $system_call kopiere fra kilden i nettleseren, stappe det inn i ett kall i ett terminalvindu, og kjøre kommandoen.

 

Hvis det funker i ett terminalvindu, men ikke fra ett system kall, så er det trolig ett rettighetsproblem.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...