[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не пишет значения в базу
Страницы: 1, 2, 3, 4
killer8080
сохраняем список ip в файл
SELECT DISTINCT `ip_address` FROM `devices` INTO OUTFILE "/path/to/ip.list"

сканируем по списку
nmap -sP -iL "/path/to/ip.list"

парсим результат и обновляем таблицу
TriSTaR
killer8080
Я пока новичок в области php... не знаю пока что та как )) Для сканирования в n-map е, нужна сама программа? А если нет то, куда я должен присвоить селект от базы и н-мап сканирования?
TriSTaR
Kusss
Прости за чайновство (и тупизм)
А как вытаскивать (айпи - статус) ? и как проверить изменилось ли в таблице статус?
Цитата
при выводе делаешь такой запрос.

и как?

Ну я пока не разобрался полностью unsure.gif
killer8080
Цитата (TriSTaR @ 25.12.2015 - 06:38)
Я пока новичок в области php...

php тут нафиг не нужен, твоя задача решается bash скриптом в несколько строчек.
Цитата (TriSTaR @ 25.12.2015 - 06:38)
Для сканирования в n-map е, нужна сама программа?

да. Это консольная хакерская тулза. В линуксе ставится из репы.
Сейчас нет времени, отпишусь позже.
TriSTaR
killer8080
Братан, мне не нужно чтобы всех сканировал.. мне пинг сойдёт... Просто суть этого в том, что есть у нас сайт которая как база работает, чтобы узнавать пришли ли люди на работу или нет (какой у них номер комнаты, телефона и т.д. и т.п.)... Если нужно было так узнать, то у меня имеется на данный момент "10 СТРАЙК" и "ZEN-map"
Kusss
Как-то так будет это выглядеть на данном этапе
// берем из таблицы список ip адресов и текущий статус
$sql = "
SELECT
`status`, `ip_address`
FROM
`devices`
"
;
$result = mysqli_query($link, $sql);
// если список есть
if (mysqli_num_rows($result) > 0) {
// в этих массивах будем хранить списки адресов после проверки
$new_status = Array();
$array_status = array();

// прокручиваемся через него по одному
while ($row = mysqli_fetch_assoc($result)) {
// пингуем адрес
exec("ping -c 1 " . $row["ip_address"], $output, $execResult);

// в зависимости от результатов пинга заносим адрес в массив
if (empty($execResult)) {
$new_status['ok'][] = $row["ip_address"];
} else {
$new_status['bad'][] = $row["ip_address"];
}


// Если статус изменился , записываем результат
$status = (empty($execResult)) ? 0 : 1;
if ($status != $row["status"]) {
$array_status[] = "(
'"
.$row["ip_address"]."',
$status,
NOW()
)"
;
}

}
}


// если есть OK адреса - обновлем все сразу одним запросом
if (Count($new_status['ok'])) {
$sql = "
UPDATE
`devices`
SET
`status`=1
WHERE
`ip_address` IN ('"
.implode("', '", $new_status['ok'])."')
"
;
mysqli_query($link, $sql);
}

// если есть BAD адреса - обновлем все сразу одним запросом
if (Count($new_status['bad'])) {
$sql = "
UPDATE
`devices`
SET
`status`=0
WHERE
`ip_address` IN ('"
.implode("', '", $new_status['bad'])."')
"
;
mysqli_query($link, $sql);
}

// Записываем изменения статуса
if (count($array_status) > 0) {
$sql = "
INSERT INTO
`devices_history`

(`ip`, `status`, `date`)
VALUES
"
.implode(',', $array_status)."
"
;
mysqli_query($link, $sql) or die(mysqli_error());
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.