Здравствуйте. Есть задача с мониторингом серверов. Для этого были написаны скрипты для PowerShell. Теперь стоит задача отобразить информацию которую дают скрипты на веб сайте. Знаю, что для этого можно использовать такую функцию PHP, как exec () , но как конкретно её использовать не знаю. Подскажите как запустить скрипты PowerShell через exec. Вот написанный мною код, но при его использование в окне браузера ничего не происходит, просто белый лист. Код (Text): <?php exec("powershell -Command C:/PowerShellScripts/Load-CPU.ps1 < NUL", $output); foreach ($output as $line) { echo $line."\n"; } ?>
passthru() - Выполняет внешнюю программу и отображает необработанный вывод system() - Выполняет внешнюю программу и отображает её вывод может с ними что-то получится? exec вроде выполняет внешнюю программу, а выше указанные так же отображают вывод
Пробую делать по совету. В такой код: Код (Text): <?php passthru ("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\PowerShellScripts\Load-CPU.ps1 < NUL", $output); { echo $output."\n"; } ?> И Код (Text): <?php system ("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\PowerShellScripts\Load-CPU.ps1 < NUL", $output); { echo $output."\n"; } ?> В одном и другом случае на экране отображается цифра "1" . И всё.
Код (Text): <?php passthru ("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\PowerShellScripts\Load-CPU.ps1 < NUL", $output); foreach ($output as $line) { echo $line."\n"; } ?> При таком коде, опять пустой экран.
Читаю про функцию system () Вот написанный код, были ещё его вариации, но результата ровно два, в таком виде, пишет цифру 1: Код (Text): <?php system ("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\PowerShellScripts\FreeSpace-HDD-D.ps1 < NUL", $output); echo $output."\n"; ?> А если добавить в код foreach ($output as $line) , то не выводит ничего, просто белый лист.
Там вообще есть вывод? И вот этот твой странный подход, ты завязывай с ним или ты реально надеялся что форыч достанет из единички строки?
А как сделать правильный вывод ? Я так понимаю, что вот эта часть кода правильная : Код (Text): system ("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\PowerShellScripts\FreeSpace-HDD-D.ps1 < NUL", $output); И проблемы именно с выводом предоставляемой информации ?
Вроде как, нет. Я в PHP дубень, то, что сейчас этим занимаюсь, это просто так совпало, редкость редкая. Все, что надо реализовать, читаю на форумах, читаю мануалы к функция и до этого вроде получалось. А сейчас вот встрял и всё. Если там всё правильно написано, то он должен не 1 выдавать, а количество свободного места на диске D. Сам скрипт рабочий 100% ,через PowerShell он всё четко выдает.
Всего 4 скрипта на сервер и 12 серверов: 1. Загрузка ЦП в процентах 2. Количество свободной ОЗУ и всего ОЗУ в мегабайтах . 3. Сетевой доступ 4. Сводное место на всех дисках и всего места на дисках. Кроме системного. Принцип запуска через PHP буде же одинаковый. Поэтому стоит запустить только один, дальше по образцу. А количество сводного места на диске D, просо как пример скрипта.
вобщем я смотрю это велосипед, чем не устраивают: zabbix или nagios + мониторинг критических процессов + чего душа пожелать может, все реализуется Лет 5-6 назад настраивал nagios следить за хозяйством: место на серверах, кол-во пролетающей почты, загрузка памяти, процессоров, состояние сети, кол-во пользователей на терминальных серверах, глядение в логи, да дофига чего было. И да, кросплатформенно, следит как за aix, linux так и за win, но хостить на win голову нельзя, да.
Пробывал и то и другое. Мне не понравилось. Я уже точно не скажу, что в каком мне не понравилось, но если в кратце, то слишком много информации, загроможденный интерфейс, не красиво или не такая сортировка как надо. Много чего перепробывал, ничего не удовлитварило мой тонкий эстетический вкус. Поэтому и решил свой запилить. Мне просто ничего лишнего не надо, никаких меню, вкладок и всего такого. Просто 1 страница и на ней 4 показателя. Вот так и всё, больше мне ничего не надо.