PHP регулярное выражение, чтобы получить IP-адрес от / etc / hosts

StackOverflow https://stackoverflow.com/questions/3469756

  •  28-09-2019
  •  | 
  •  

Вопрос

Я пишу скрипт PHP, который автоконфигурирует устройство по поводу Telnet, и мне нужно схватить некоторые IP-адреса из / etc / hosts

Мне нужно, чтобы он использовал только IP-адрес, и назначить его переменной на основе имени хостов. Пример:

192.168.1.50 machine
192.168.1.51 printer
192.168.1.52 sigpad

Сценарий PHP должен быть таким:

$machineip = "192.168.1.50";
$printerip = "192.168.1.51";
$sigpadip = "192.168.1.52";

Конечно, мой /etc/hosts Файл отличается, но вы получите идею из моего примера. Затем я смогу включить этот сценарий PHP в любую из наших существующих программ и использую переменные вместо жесткокодируемых IP-адресов.

Это было полезно?

Решение

function ipFromEtcHosts($host) {
    foreach (new SplFileObject('/etc/hosts') as $line) {
        $d = preg_split('/\s/', $line, -1, PREG_SPLIT_NO_EMPTY);
        if (empty($d) || substr(reset($d), 0, 1) == "#")
           continue;
        $ip = array_shift($d);
        $hosts = array_map('strtolower', $d);
        if (in_array(strtolower($host), $hosts))
            return $ip;
    }
}

Пример:

echo ipFromEtcHosts('ip6-mcastprefix');

дает ff00::0.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top