![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 11.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam, tworze interfejs do skryptów w powershell i mam problem.
Oto kawałek kodu w której może być problem i w którym nie działa mi wykonywanie skryptu. CODE <form action="Powerinterface.php" method="GET"> Nowa nazwa serwera: <input type=textfield name=nowanazwa> </form> <?php $nazwa = $_GET['nowanazwa']; if (isset($_POST['Exe3'])) { shell_exec('powershell.exe -command C:\skrypty\zmiananazwy.ps1 -computer localhost -newname '.$nazwa); } ?> <form action="PowerInterface.php" method="post"> <input type="hidden" name="Exe3" value="true"> <input type="submit" value="Zmień nazwę serwera"> </form> Natomiast gdy zamiast wprowadzania poprostu w miejsce $nazwa wpisze to co bym wpisał w formularzu. CODE <form action="Powerinterface.php" method="GET"> Nowa nazwa serwera: <input type=textfield name=nowanazwa> </form> <?php $nazwa = $_GET['nowanazwa']; if (isset($_POST['Exe3'])) { shell_exec('powershell.exe -command C:\skrypty\zmiananazwy.ps1 -computer localhost -newname serwer'); } ?> <form action="PowerInterface.php" method="post"> <input type="hidden" name="Exe3" value="true"> <input type="submit" value="Zmień nazwę serwera"> </form> Wszystko działa jak powinno. Czy ktoś mi może pomóc co jest źle z tą zmienną? jak może inaczej pobrać tekst i dać ją w miejscu $nazwa? Pozdrawiam Dziękuje za pomoc Ten post edytował stumpy 12.03.2011, 00:26:23 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 15 Dołączył: 16.02.2008 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
Nie ma czegoś takiego jak type="textfield" Zamień to na:
Dodatkowo, ten pierwszy formularz nie jest nigdzie wysyłany. Po kliknięciu w przycisk Zmień nazwę serwera zostanie wysłany tylko
Musisz dorzucić <input type="submit" value="wyslij" /> do pierwszego formularza i wysyłać poprzez kliknięcie w ten przycisk. Może wtedy otrzymasz poprawnie dane w $_GET Ten post edytował wizu 11.03.2011, 19:50:43 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 11.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki Wizu, nadal nie działa ale na pewno dzięki tobie jestem bliżej rozwiązania problemu.
Tak to teraz wygląda: CODE <h3 Align=left> <b>Skrypt zmienia nazwe serwera:</b> </h3>
<form action="Powerinterface.php" method="GET"> Nowa nazwa serwera: <input type="text" name="nowanazwa" /> <input type="submit" value="Potwierdz"/> </form> <?php $nazwa = $_GET['nowanazwa']; if (isset($_POST['Exe3'])) { shell_exec('powershell.exe -command C:\skrypty\zmiananazwy.ps1 -computer localhost -newName '.$nazwa); } ?> <form action="PowerInterface.php" method="post"> <input type="hidden" name="Exe3" value="true"> <input type="submit" value="Zmien nazwe serwera"> </form> Ten post edytował stumpy 11.03.2011, 20:15:50 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 15 Dołączył: 16.02.2008 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
Przez cały czas nie rozumiem, po co Ci dwa form-y?
Zauważ, że jeśli wyślesz pierwszy form To if zwróci false i nie zadziała, bo Przecież nie wysłałeś nigdzie $_POST['Exe3'] Jest on wysyłany w drugim formie Jednak jeśli wyślesz ten drugi, to nie masz nigdzie $_GET['nowanazwa'], więc też nie zadziała. Musisz to wszystko połączyć, tzn: Kod <h3 Align=left> <b>Skrypt zmienia nazwe serwera:</b> </h3>
<form action="PowerInterface.php" method="post"> <input type="hidden" name="Exe3" value="true"> Nowa nazwa serwera: <input type="text" name="nowanazwa" /> <input type="submit" value="Zmien nazwe serwera"> </form> <?php $nazwa = $_POST['nowanazwa']; if (isset($_POST['Exe3'])) { shell_exec('powershell.exe -command C:\skrypty\zmiananazwy.ps1 -computer localhost -newName '.$nazwa); } ?> |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 11.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Teraz działa
![]() Wspaniałe forum, dzisiaj się zarejestrowałem i już wiem ze warto było. Wiem ze zawsze ktoś może pomóc z problemem. Wracam do pracy nad rozbudowaniem dalej tego interfejsu. Jeszcze raz dzięki wizu za pomoc. Czy mogę coś takiego zrobić?
Edit: O jeden ; za dużo ![]() Ten post edytował stumpy 11.03.2011, 23:35:26 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Nie zapomnij o http://www.php.net/manual/en/function.escapeshellcmd.php
-------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 11.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam, nie będę zakładał nowego wątku ale mam problem żeby wyświetlić wynik skryptu.
Mam skrypt proc.ps1 którego kod to "get-process" CODE <h3 Align=left> <b>Procesy:</b> </h3> <form action="procesy.php" method="post"> <input type="hidden" name="Execute" value="true"> <p><input type="submit" value="Wyświetl procesy:"> </form> <?php if (isset($_POST['Execute'])) { $output = shell_exec('powershell.exe -command C:\skrypty\proc.ps1'); var_dump($output); } ?> Wie może ktoś jak przekazać wynik wykonanego skryptu żeby formatowanie zostało w miarę zachowane? Edit: Kod lekko poprawiony, działa lecz dziwnie sformatowane i nie czytelne. Ten post edytował stumpy 12.03.2011, 12:10:00 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 566 Pomógł: 35 Dołączył: 21.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie ma czegoś takiego jak "printf = $output". Zmień tą linijkę na np. var_dump($output) albo echo "<pre>$output</pre>";
-------------------- flexiCMS v2 [|||||||+--] 75% done
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 11.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tak to teraz wygląda:
CODE <h3 Align=left> <b>Procesy:</b> </h3> <form action="procesy.php" method="post"> <input type="hidden" name="Execute" value="true"> <p><input type="submit" value="Wyświetl procesy:"> </form> <?php if (isset($_POST['Execute'])) { $output = system('powershell.exe -command C:\skrypty\proc.ps1'); var_dump($output); } ?> Wyświetla: string(3443) " Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 34 6 1872 3284 27 0,05 744 cmd 33 5 796 2476 25 0,02 772 conhost 29 4 836 2508 44 0,02 1908 conhost 460 11 1832 3956 47 0,67 316 csrss 195 15 9956 5712 58 1,39 368 csrss 66 7 1656 4848 53 0,09 1836 dwm 581 36 19128 37280 194 5,11 1860 explorer 0 0 0 24 0 0 Idle 327 29 5368 16548 127 0,84 876 iexplore 364 29 5172 18496 136 0,59 1232 iexplore 568 19 3456 9736 43 1,38 480 lsass 144 7 2112 3880 22 0,08 488 lsm 142 17 3100 7248 60 0,23 1000 msdtc 129 16 12856 18860 108 2,63 1672 notepad++ 257 24 34512 33740 177 1,36 1612 powershell 203 13 4004 7564 36 1,70 472 services 29 2 368 1032 5 0,20 216 smss 305 23 7360 14116 108 3,94 244 spoolsv 282 32 7116 11768 51 0,56 300 svchost 346 14 3368 8652 54 1,81 576 svchost 235 15 2824 6580 34 0,38 648 svchost 294 15 8644 11340 47 0,97 732 svchost 914 38 15740 30300 131 3,56 780 svchost 218 17 4676 9072 43 0,48 832 svchost 189 14 3292 9284 62 0,20 880 svchost 406 32 12688 15200 89 1,44 920 svchost 100 11 4552 9428 56 0,30 1028 svchost 46 4 780 2600 13 0,03 1060 svchost 158 14 7304 11364 59 0,36 1224 svchost 67 7 1368 4376 29 0,14 1696 svchost 455 0 112 304 3 4 System 135 11 2624 5984 58 0,13 1772 taskhost 120 11 2220 7308 73 1,58 1900 TPAutoConnect 130 11 2296 6536 57 0,14 1680 TPAutoConnSvc 222 17 5316 10616 95 3,66 1088 vmtoolsd 88 9 2708 6584 41 0,13 1300 VMUpgradeHelper 72 9 2128 5820 71 0,08 1076 VMwareTray 199 14 3848 12472 112 1,27 1052 VMwareUser 165 39 9492 14936 68 0,48 828 w3wp 77 9 1344 4264 47 0,30 376 wininit 92 7 1456 4712 31 0,27 412 winlogon " Trzeba poprawić to formatowanie , coś jest nie tak i własnie nie wiem co ![]() Ten post edytował stumpy 12.03.2011, 14:14:04 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
W skrócie: dzielisz ten długi string na linijki, wywalasz śmieci, a potem z każdej linijki wyciągasz interesujące cię liczby. Kod niezbyt czytelny, ale możesz na podstawie komentarzy przerobić go na swoją modłę. Natomiast jeśli chodzi ci o samo wyświetlenie tych danych w przeglądarce, to wstaw sobie je do tagu <pre></pre> -------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 11.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
hmmm, myślałem ze to łatwiej będzie
![]() Planowałem ze będę zmieniał sobie tylko nazwę skryptu w tej linijce: i do tego dorobię sobie obsługę argumentów na przykład C:\skrypty\proc.ps1 -computer localhost abym mógł wybierac takze zdalne komputery. Dzięki za pomoc. Witam już działa, kod wygląda tak: CODE <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang"pl"> <head> <meta http-equiv=Content-type" content=text/html; charset=utf-8" /> <title> PowerInterface - interfejs do wykonywania skryptow w jezyku Powershell</title> </head> <body> <h3 Align=left> <b>Procesy:</b> </h3> <form action="procesy.php" method="post"> <input type="hidden" name="Execute" value="true"> <p><input type="submit" value="Wyświetl procesy:"> </form> <?php if (isset($_POST['Execute'])) { $output = shell_exec('powershell.exe -command C:\skrypty\proc.ps1'); echo "<pre>$output</pre>"; } ?> </body> <p><a href="http://localhost:/index.php">Powrót na stronę główną</a> </html> Zmieniłem treść skryptu dodając: | out-string i jakoś działa ![]() Ten post edytował stumpy 12.03.2011, 21:18:48 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 04:22 |