lefsaker Skrevet 6. februar 2008 Del Skrevet 6. februar 2008 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
grimjoey Skrevet 6. februar 2008 Del Skrevet 6. februar 2008 (endret) hva er i veien med exec();? du kan jo lage bat filer som utfører de innebygde kommandoene i cmd Endret 6. februar 2008 av grimjoey Lenke til kommentar
pulse Skrevet 6. februar 2008 Del Skrevet 6. februar 2008 Hva er det du prøver å oppnå? Mulig du ser etter denne: shell_exec(); // Execute command via shell and return the complete output as a string Lenke til kommentar
lefsaker Skrevet 6. februar 2008 Forfatter Del Skrevet 6. februar 2008 (endret) 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 6. februar 2008 av lefsaker Lenke til kommentar
lefsaker Skrevet 6. februar 2008 Forfatter Del Skrevet 6. februar 2008 (endret) Hvordan får jeg tekstfeltet til å være kommandoen? $time = "100"; shell_exec("shutdown -s -t $time"); funka ikke shell_exec("shutdown -s -t "$time); funka ikke Endret 6. februar 2008 av lefsaker Lenke til kommentar
pulse Skrevet 6. februar 2008 Del Skrevet 6. februar 2008 Har dessverre ingen datamaskin med windows, men står noe her: http://no2.php.net/manual/en/function.shell-exec.php#70338 Lenke til kommentar
lefsaker Skrevet 6. februar 2008 Forfatter Del Skrevet 6. februar 2008 (endret) Den du linka til viser bare hvordan man kjører bat filer Har også sett igjennom hele shell_exec dokumentasjonen der, og det står jo at det skal funke med feks. "ping $host" Endret 6. februar 2008 av lefsaker Lenke til kommentar
Limstift Skrevet 6. februar 2008 Del Skrevet 6. februar 2008 (endret) 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 6. februar 2008 av Limstift Lenke til kommentar
lefsaker Skrevet 6. februar 2008 Forfatter Del Skrevet 6. februar 2008 :O Det funka Jeg tror jeg elsker deg nå Lenke til kommentar
FrodeNilsen Skrevet 6. februar 2008 Del Skrevet 6. februar 2008 Den du linka til viser bare hvordan man kjører bat filer 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
Limstift Skrevet 6. februar 2008 Del Skrevet 6. februar 2008 :O Det funka Jeg tror jeg elsker deg nå Bare hyggelig å kunne hjelpe. Lenke til kommentar
lefsaker Skrevet 6. februar 2008 Forfatter Del Skrevet 6. februar 2008 Hmm... Når jeg satte inn hele kommandoen som skal utføres, med ca 10 variabler, så legger den bare inn "$brukernavn" og "$samid" osv. Ikke det som står i tekstfeltet... Lenke til kommentar
Limstift Skrevet 6. februar 2008 Del Skrevet 6. februar 2008 Hvis du kopierer inn koden din her, er det lettere for oss å se hva som eventuelt er feil. Lenke til kommentar
lefsaker Skrevet 6. februar 2008 Forfatter Del Skrevet 6. februar 2008 (endret) Jeg skal ikke på skolen før fredag, så da poster jeg koden i ni tiden da Edit: Jeg dro vist innom skolen Endret 7. februar 2008 av lefsaker Lenke til kommentar
lefsaker Skrevet 7. februar 2008 Forfatter Del Skrevet 7. februar 2008 <?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
Crowly Skrevet 7. februar 2008 Del Skrevet 7. februar 2008 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
lefsaker Skrevet 7. februar 2008 Forfatter Del Skrevet 7. februar 2008 (endret) 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 7. februar 2008 av lefsaker Lenke til kommentar
vidarlo Skrevet 7. februar 2008 Del Skrevet 7. februar 2008 Lær deg stringbehandling. ' vil sei at php *ikkje* prøver å bytte ut variabler med innholdet av variabelen. $foo = "bar"; echo '$foo'; vil printe $foo, ikkje innholdet av $foo. Les også ei linje eller tre om escaping av quotes. Lenke til kommentar
lefsaker Skrevet 7. februar 2008 Forfatter Del Skrevet 7. februar 2008 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
FrodeNilsen Skrevet 7. februar 2008 Del Skrevet 7. februar 2008 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå