Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (4) 1 [2] 3 4  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Не пишет значения в базу
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 7 дней
Карма: 591




сохраняем список ip в файл
SELECT DISTINCT `ip_address` FROM `devices` INTO OUTFILE "/path/to/ip.list"

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

парсим результат и обновляем таблицу
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
TriSTaR  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 29
Пользователь №: 41681
На форуме: 1 год, 4 месяца, 2 дня
Карма:




killer8080
Я пока новичок в области php... не знаю пока что та как )) Для сканирования в n-map е, нужна сама программа? А если нет то, куда я должен присвоить селект от базы и н-мап сканирования?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
TriSTaR  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 29
Пользователь №: 41681
На форуме: 1 год, 4 месяца, 2 дня
Карма:




Kusss
Прости за чайновство (и тупизм)
А как вытаскивать (айпи - статус) ? и как проверить изменилось ли в таблице статус?
Цитата
при выводе делаешь такой запрос.

и как?

Ну я пока не разобрался полностью unsure.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 7 дней
Карма: 591




Цитата (TriSTaR @ 25.12.2015 - 06:38)
Я пока новичок в области php...

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

да. Это консольная хакерская тулза. В линуксе ставится из репы.
Сейчас нет времени, отпишусь позже.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
TriSTaR  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 29
Пользователь №: 41681
На форуме: 1 год, 4 месяца, 2 дня
Карма:




killer8080
Братан, мне не нужно чтобы всех сканировал.. мне пинг сойдёт... Просто суть этого в том, что есть у нас сайт которая как база работает, чтобы узнавать пришли ли люди на работу или нет (какой у них номер комнаты, телефона и т.д. и т.п.)... Если нужно было так узнать, то у меня имеется на данный момент "10 СТРАЙК" и "ZEN-map"
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
[x] Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 10 дней
Карма: 77




Как-то так будет это выглядеть на данном этапе
// берем из таблицы список 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());
}
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 10 дней
Карма: 77




Ну таблица для хранения
CREATE TABLE  `test`.`devices_history` (
`id` INT( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`ip` VARCHAR( 15 ) NOT NULL ,
`status` INT( 1 ) NOT NULL ,
`date` DATETIME NOT NULL
) ENGINE = MYISAM COMMENT = 'История ip адресов';
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
TriSTaR  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 29
Пользователь №: 41681
На форуме: 1 год, 4 месяца, 2 дня
Карма:




Kusss
Чел, ты супер laugh.gif Я вообще не знал что так можно сделать... Всё замечательно работает)) Только вот не пойму почему он по 3 раза одного и того же человека записывает, один айпи 3 раза в базу написал, и на это как бы время уходит... unsure.gif
Скрытый текст
user posted image

Скрытый текст
user posted image


Это сообщение отредактировал TriSTaR - 25.12.2015 - 13:53
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
[x] Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 10 дней
Карма: 77




я не вижу изображение.
выложи результат этого файла.
<?php
// тут подключение к базе данных

$list = '';
$sql = "
SELECT
d.`name`, d.`ip`, d.`status`,(
SELECT
timediff(now(), `date`)
FROM
`devices_history`
WHERE
`ip` = d.`ip` AND
`status` = d.`status`
ORDER BY
`date` DESC
LIMIT 0,1
) AS date
FROM
`devices` AS d
"
;
$result = mysqli_query($link, $sql) or die(mysql_error());
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {

$status = (empty($row['status'])) ? '<b style="color:gray">ofline</b>' : '<b style="color:green">online</b>';

$list .= '
<tr style="background-color: #FFFFFF;">
<td>'
.$row['name'].'</td>
<td>'
.$row['ip'].'</td>
<td>'
.$status.'</td>
<td>'
.$row['date'].'</td>
</tr>
'
;
}
}

?>
<table style="background-color: #D2D2D2;border: 0;border-spacing: 1px 1px;">
<
thead>
<
tr style="background-color: #ffb591;">
<
td>Имя</td>
<
td>ip</td>
<
td>статус</td>
<
td>прошло времени</td>
</
tr>
</
thead>
<
tbody>
<?php echo $list;?>
</tbody>
</
table>
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 10 дней
Карма: 77




Цитата (TriSTaR @ 25.12.2015 - 12:43)
один айпи 3 раза в базу написал, и на это как бы время уходит


он и будет писать новую строчку, если изменился статус.

время на что ? На запись строки в базу ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 7 дней
Карма: 591




Цитата (TriSTaR @ 25.12.2015 - 09:07)
killer8080
Братан, мне не нужно чтобы всех сканировал.. мне пинг сойдёт...

ну дык у тебя и есть сканирование, только сканер написан на php :D
nmap то с этой задачей в любом случае справится лучше.

#!/bin/sh

db_user="username"
db_pass="password"
db_host="localhost"
db_name="database"
exec_db="mysql -h $db_host -u $db_user -p$db_pass -D $db_name -e"
ip_list="/tmp/ip.list"

echo "Start scanning network (`date`) ..."
[ -f $ip_list ] || $exec_db "SELECT DISTINCT ip_address FROM devices INTO OUTFILE '$ip_list'" && \
nmap -sP -iL $ip_list | grep -P -o "\d+\.\d+\.\d+\.\d+" >/tmp/active_ip.list && \
$exec_db "DROP TABLE IF EXISTS active_ip" && \
$exec_db "CREATE TABLE active_ip (id int not null auto_increment, ip varchar(15), PRIMARY KEY (id)) ENGINE=InnoDB" && \
$exec_db "LOAD DATA INFILE '/tmp/active_ip.list' INTO TABLE active_ip (ip)" && \
$exec_db "UPDATE devices SET status=1 WHERE ip_address IN (SELECT ip FROM active_ip)" && \
$exec_db "UPDATE devices SET status=0 WHERE ip_address NOT IN (SELECT ip FROM active_ip)"
rm /tmp/active_ip.list
echo "Done (`date`)"
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
TriSTaR  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 29
Пользователь №: 41681
На форуме: 1 год, 4 месяца, 2 дня
Карма:




Kusss
Оказывается браузер 3 раза обновился, из за этого 3 раза написал... но теперь как то наоборот работать начал, на device_history оффлайн компьютерам значения "1" пишет а тем кто онлайн значение "0".. а на таблице device всё в порядке...
З.Ы. а тот файл я понедельник проверю, просто щас выходной и я не на работе...
З.Ы.Ы. кстати, спасибо вам за всё)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
TriSTaR  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 29
Пользователь №: 41681
На форуме: 1 год, 4 месяца, 2 дня
Карма:




killer8080
Спасибо за скрипт, в понедельник попробую)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 10 дней
Карма: 77




TriSTaR
поменяй местами 0 и 1
$status = (empty($execResult)) ? 0 : 1;
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
TriSTaR  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 29
Пользователь №: 41681
На форуме: 1 год, 4 месяца, 2 дня
Карма:




Kusss
Поменял местами, но не пишет всех в базу... из 137 айпи адресов пишет только 3-4 айпи адреса... хз почему huh.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (4) 1 [2] 3 4  Ответ в темуСоздание новой темыСоздание опроса