Как разобрать длинный вывод из оболочки Linux, который "не дружествен к обработке текста"? - PullRequest
2 голосов
/ 08 июля 2011

Я очень новичок в программировании. Я пишу PHP-приложение, которое должно выполнять множество команд оболочки Linux, анализировать вывод оболочки и затем отображать эту информацию на веб-странице.

Проблема, с которой я сталкиваюсь: Вывод некоторых команд оболочки Linux очень длинный и не "дружественный к обработке текста". Они устроены так, что человеку легко читать, но трудно разобрать в PHP. Например, у меня возникла большая проблема с правильным анализом вывода команды ifconfig -a в PHP.

Может кто-нибудь дать мне несколько советов о том, как лучше всего анализировать длинный вывод оболочки Linux? Например, если на моем ПК много интерфейсов, вывод ifconfig -a может стать очень длинным, с другим разделом / абзацем, показывающим детали для другого интерфейса.

Предполагая, что количество интерфейсов является переменным, а количество строк вывода в каждом абзаце также переменным, как мне написать функцию PHP, которая может адаптироваться к изменениям и извлекать важную информацию из каждого из интерфейсов (например, IP-адрес , маска сети, трансляция и т. д.)?

Ответы [ 2 ]

2 голосов
/ 08 июля 2011

Вывод этих программ нестабилен. Был эпизод DailyWTF об этом некоторое время назад. Код, который опирается на него, может сломаться при обновлении приложения, когда среда настраивается по-другому или если код взят кроссплатформенным.

Отметка B верна, если машина должна прочитать эту информацию, перейдите в / proc или там, где на самом деле находятся данные. Рекламные шрифты!

Если вы действительно хотите взломать его, preg_match в строках, чтобы найти интересные паттерны.

2 голосов
/ 08 июля 2011

explode() в новых строках (\n) дает массив с одним элементом на строку, а когда вы перебираете массив, и соответственно используете функцию preg_split().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...