За последние 24 часа нас посетил 15431 программист и 1587 роботов. Сейчас ищут 792 программиста ...

PHP и PowerShell

Тема в разделе "Прочие вопросы по PHP", создана пользователем MAXPOL, 2 июн 2014.

  1. MAXPOL

    MAXPOL Новичок

    С нами с:
    2 июн 2014
    Сообщения:
    9
    Симпатии:
    0
    Здравствуйте.

    Есть задача с мониторингом серверов.
    Для этого были написаны скрипты для PowerShell. Теперь стоит задача отобразить информацию которую дают скрипты на веб сайте. Знаю, что для этого можно использовать такую функцию PHP, как exec () , но как конкретно её использовать не знаю.
    Подскажите как запустить скрипты PowerShell через exec.

    Вот написанный мною код, но при его использование в окне браузера ничего не происходит, просто белый лист.
    Код (Text):
    1.  
    2. <?php
    3. exec("powershell -Command C:/PowerShellScripts/Load-CPU.ps1 < NUL", $output);
    4. foreach ($output as $line) {
    5.     echo $line."\n";
    6. }
    7. ?>
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    passthru() - Выполняет внешнюю программу и отображает необработанный вывод
    system() - Выполняет внешнюю программу и отображает её вывод

    может с ними что-то получится?
    exec вроде выполняет внешнюю программу, а выше указанные так же отображают вывод
     
  3. MAXPOL

    MAXPOL Новичок

    С нами с:
    2 июн 2014
    Сообщения:
    9
    Симпатии:
    0
    Пробую делать по совету.
    В такой код:
    Код (Text):
    1.  
    2. <?php
    3. passthru ("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\PowerShellScripts\Load-CPU.ps1 < NUL", $output);
    4. {
    5. echo $output."\n";
    6. }
    7. ?>
    И
    Код (Text):
    1.  
    2. <?php
    3. system ("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\PowerShellScripts\Load-CPU.ps1 < NUL", $output);
    4. {
    5. echo $output."\n";
    6. }
    7. ?>
    В одном и другом случае на экране отображается цифра "1" . И всё.
     
  4. MAXPOL

    MAXPOL Новичок

    С нами с:
    2 июн 2014
    Сообщения:
    9
    Симпатии:
    0
    Код (Text):
    1.  
    2. <?php
    3. passthru ("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\PowerShellScripts\Load-CPU.ps1 < NUL", $output);
    4. foreach ($output as $line) {
    5. echo $line."\n";
    6. }
    7. ?>
    При таком коде, опять пустой экран.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а давай через system() и читая доку с описанием аргументов =)
     
  6. MAXPOL

    MAXPOL Новичок

    С нами с:
    2 июн 2014
    Сообщения:
    9
    Симпатии:
    0
    Читаю про функцию system ()
    Вот написанный код, были ещё его вариации, но результата ровно два, в таком виде, пишет цифру 1:
    Код (Text):
    1.  
    2. <?php
    3. system ("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\PowerShellScripts\FreeSpace-HDD-D.ps1 < NUL", $output);
    4.  
    5.     echo $output."\n";
    6.  
    7. ?>
    А если добавить в код foreach ($output as $line) , то не выводит ничего, просто белый лист.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Там вообще есть вывод? И вот этот твой странный подход, ты завязывай с ним :D или ты реально надеялся что форыч достанет из единички строки? :D
     
  8. MAXPOL

    MAXPOL Новичок

    С нами с:
    2 июн 2014
    Сообщения:
    9
    Симпатии:
    0
    А как сделать правильный вывод ?
    Я так понимаю, что вот эта часть кода правильная :
    Код (Text):
    1.  
    2. system ("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\PowerShellScripts\FreeSpace-HDD-D.ps1 < NUL", $output);
    И проблемы именно с выводом предоставляемой информации ?
     
  9. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    может изначально там хранится 1, и он выводит 1.
     
  10. MAXPOL

    MAXPOL Новичок

    С нами с:
    2 июн 2014
    Сообщения:
    9
    Симпатии:
    0
    Вроде как, нет. Я в PHP дубень, то, что сейчас этим занимаюсь, это просто так совпало, редкость редкая. Все, что надо реализовать, читаю на форумах, читаю мануалы к функция и до этого вроде получалось. А сейчас вот встрял и всё.

    Если там всё правильно написано, то он должен не 1 выдавать, а количество свободного места на диске D. Сам скрипт рабочий 100% ,через PowerShell он всё четко выдает.
     
  11. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    И ради этого повершел дергать?

    http://www.php. net/manual/ru/function.disk-free-space.php
     
  12. MAXPOL

    MAXPOL Новичок

    С нами с:
    2 июн 2014
    Сообщения:
    9
    Симпатии:
    0
    Всего 4 скрипта на сервер и 12 серверов:
    1. Загрузка ЦП в процентах
    2. Количество свободной ОЗУ и всего ОЗУ в мегабайтах .
    3. Сетевой доступ
    4. Сводное место на всех дисках и всего места на дисках. Кроме системного.

    Принцип запуска через PHP буде же одинаковый. Поэтому стоит запустить только один, дальше по образцу.
    А количество сводного места на диске D, просо как пример скрипта.
     
  13. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    вобщем я смотрю это велосипед, чем не устраивают:
    zabbix или nagios
    + мониторинг критических процессов
    + чего душа пожелать может, все реализуется

    Лет 5-6 назад настраивал nagios следить за хозяйством: место на серверах, кол-во пролетающей почты, загрузка памяти, процессоров, состояние сети, кол-во пользователей на терминальных серверах, глядение в логи, да дофига чего было.
    И да, кросплатформенно, следит как за aix, linux так и за win, но хостить на win голову нельзя, да.
     
  14. MAXPOL

    MAXPOL Новичок

    С нами с:
    2 июн 2014
    Сообщения:
    9
    Симпатии:
    0
    Пробывал и то и другое. Мне не понравилось. Я уже точно не скажу, что в каком мне не понравилось, но если в кратце, то слишком много информации, загроможденный интерфейс, не красиво или не такая сортировка как надо. Много чего перепробывал, ничего не удовлитварило мой тонкий эстетический вкус. :D
    Поэтому и решил свой запилить.

    Мне просто ничего лишнего не надо, никаких меню, вкладок и всего такого. Просто 1 страница и на ней 4 показателя.

    [​IMG]

    Вот так и всё, больше мне ничего не надо.
     
  15. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    Это только кажется, на данный момент.
     
  16. MAXPOL

    MAXPOL Новичок

    С нами с:
    2 июн 2014
    Сообщения:
    9
    Симпатии:
    0
    Ребята, что никаких идей нету ?
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    идея есть проверить вывод потока в который пишутся ошибки. может там чо.
     
  18. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    А обратные слеши экранировать уже не обязательно?