[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не пишет значения в базу
Страницы: 1, 2, 3, 4
TriSTaR
А можно другой способ сделать?
Когда включиться компьютер написать в device_history значение "1" и время включения, а когда выключит (в конце рабочего дня) значение "0"... Типо как на форумах "был в сети в такое то время и вышел из сети в такое" ?
такое возможно? но как? ( (>_<) знаний пока у меня не хватает sad.gif )
Kusss
он пишет только:
Цитата
// Если статус изменился , записываем результат
TriSTaR
Kusss
ну чисто формально можно так сделать? Как на форумах.... Это типо Если статус изменился утром пишет 1 и время его, а когда выключил записывает 0 и время во скока... а не каждый раз?
Кстати, я поставил обновления каждые 10 мин. через CRON
Kusss
Он так и делает.
Если ты запустишь запрос который я писал выше, он и выведет тебе .

192.168.*.* - 0/1(статус) - 50.xxx (время c момента вкл/откл в минутах).
killer8080
Цитата (TriSTaR @ 28.12.2015 - 11:58)
Kusss
ну чисто формально можно так сделать? Как на форумах.... Это типо Если статус изменился утром пишет 1 и время его, а когда выключил записывает 0 и время во скока... а не каждый раз?
Кстати, я поставил обновления каждые 10 мин. через CRON

а сколько времени сканирование занимает?
TriSTaR
Kusss
он выводит, это да))) файл будет каждые 10 мин. запускаться, просто каждые 10 мин. будет по новому писать (INSERT делать), если так будет через неделю в базе 500 тис. строк будет unsure.gif
Я предлагаю такое решение: например,Пришел на работу компьютер с айпи 192.168.1.2 делается пинг и написать в базу 1 и его время, и если каждые 10 мин. файл будет обновляться пусть файл проверит статус айпи 192.168.1.2 и если он до сих пор онлайн не писать ничего в базу, и так каждый раз пока тот айпи не станет вне сети. А потом если он ушёл с работы, писать в базу значение 0 и время... Нужна проверка

killer8080
примерно от 3 до 5-6 мин. в зависимости какой ответ приходит... если многие оффлайн много времени уходит...
TriSTaR
Kusss
Цитата
Он так и делает.
Если ты запустишь запрос который я писал выше, он и выведет тебе .

192.168.*.* - 0/1(статус) - 50.xxx (время c момента вкл/откл в минутах).


ну вроде да он так должен сделать... Т.к. там есть:

Цитата
// Записываем изменения статуса
if (count($array_status) > 0) {

но он каждый раз в базу пишет по новому всех, даже если статус не изменился unsure.gif
killer8080
Цитата (TriSTaR @ 29.12.2015 - 07:29)
killer8080
примерно от 3 до 5-6 мин. в зависимости какой ответ приходит... если многие оффлайн много времени уходит...

а вот теперь сравни с nmap
Nmap done: 508 IP addresses (149 hosts up) scanned in 16.83 seconds
разница на лицо user posted image

Цитата (TriSTaR @ 28.12.2015 - 07:44)
А можно другой способ сделать?
Когда включиться компьютер написать в device_history значение "1" и время включения, а когда выключит (в конце рабочего дня) значение "0".

эта задача решается триггерами
TriSTaR
killer8080
Цитата
Nmap done: 508 IP addresses (149 hosts up) scanned in 16.83 seconds

интересно интересно :P
Что нужно для этого сделать? Да и как можно обяденить его со скриптом которое выше написал KUS (с записыванием времени)? не могли бы его обяденить его с вашим скриптом
Цитата
#!/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`)"

killer8080
Цитата (TriSTaR @ 29.12.2015 - 08:41)
Что нужно для этого сделать?

вписать в переменные свои данные доступа к БД
проверить установлен ли nmap, если нет - установить
запустить скрипт в консоли, убедится что работает как надо
добавить запуск в крон с интервалом 2-3 минуты

Цитата (TriSTaR @ 29.12.2015 - 08:41)
Да и как можно обяденить его со скриптом которое выше написал KUS (с записыванием времени)?

как и говорил, триггер на апдейт таблицы devices который будет добавлять записи при изменении статуса. PHP не нужна MySQL сама справится. smile.gif
TriSTaR
killer8080
Цитата
вписать в переменные свои данные доступа к БД

вписал!
Цитата
проверить установлен ли nmap, если нет - установить

Установлен, проверил и сканировал с запросом (помог администратор):
nmap -v -sP 192.168.1.0/24 192.168.10.0/24 192.168.60.0/24 >> scan.log 2>&1

Всё работает
Цитата
запустить скрипт в консоли, убедится что работает как надо

Так вот тут вопрос: с каким разрешением скрипт сохранить? Куда сохранить? и как запустить через консоль?
Цитата
добавить запуск в крон с интервалом 2-3 минуты

это уже после 10 января, администратор в Москву улетает сегодня чтобы отдыхать <_<
Цитата
как и говорил, триггер на апдейт таблицы devices который будет добавлять записи при изменении статуса. PHP не нужна MySQL сама справится. smile.gif

Примера не будет? :rolleyes:
З.Ы. не смог + поставить вам с Касом в карму.. говорит уже поставили, теперь через день :))
killer8080
Цитата (TriSTaR @ 29.12.2015 - 09:33)
Так вот тут вопрос: с каким разрешением скрипт сохранить? Куда сохранить? и как запустить через консоль?

Ну вам там виднее "куда сохранить", с php скриптом этого вопроса не возникало же user posted image
Права нужно выставить на выполнение типа
chmod +x script.sh

Зайти на сервер по SSH и запустить.
Цитата (TriSTaR @ 29.12.2015 - 09:33)
Примера не будет? :rolleyes:

CREATE TRIGGER `devices_update` BEFORE UPDATE ON `devices`
FOR EACH ROW BEGIN
IF NEW.status <> OLD.status THEN
INSERT INTO
`devices_history` (`ip`, `status`, `date`) VALUES (OLD.ip_address, NEW.status, NOW());
END IF;
END

Цитата (TriSTaR @ 29.12.2015 - 09:33)
З.Ы. не смог + поставить вам с Касом в карму.. говорит уже поставили, теперь через день :))

да фиг с ней user posted image у меня её валом user posted image
PS вообще правильней IPv4 адреса хранить в INT а не в VARCHAR, и на это поле нужно поставить индекс, поскольку по нему выборка идёт.
TriSTaR
killer8080
ГЫЫ... О.О
Зашёл на сервер через ssh (PUTTY), зашёл в путь...
дал права:
sudo chmod +x base_update.sh

после написал:
./base_update.sh

выдаёт такую ошибку
Start scanning network (Tue Dec 29 16:16:20 UZT 2015) ...
ERROR 1045 (28000) at line 1: Access denied for user 'test'@'%' (using password: YES)
rm: cannot remove `/tmp/active_ip.list': No such file or directory
Done (Tue Dec 29 16:16:20 UZT 2015)

Хотя не должен был, т.к. логин и пароль правильный...
db_user="test"
db_pass="test"
db_host="192.168.10.56"
db_name="test"

$link = mysqli_connect("192.168.10.56", "test", "test", "test");
killer8080
Цитата (TriSTaR @ 29.12.2015 - 13:02)
db_host="192.168.10.56"

mysql сервер на другом хосте? Возможно удаленное подключение к нему запрещено.

Цитата (TriSTaR @ 29.12.2015 - 13:02)
$link = mysqli_connect("192.168.10.56", "test", "test", "test");

php код запускается на том же хосте что и скрипт?
TriSTaR
killer8080
Цитата
mysql сервер на другом хосте?

да на другом... Скрипт и сайт находиться на 192.168.1.7 , а mysql на 192.168.10.56.. У нас много серверов из за этого так..
Цитата
Возможно удаленное подключение к нему запрещено.

Но через php заходила же (
$link = mysqli_connect("192.168.10.56", "test", "test", "test");
)
Цитата
php код запускается на том же хосте что и скрипт?

да, этот php код как и все остальные находятся на 192.168.1.7
Цитата
Access denied for user 'test'@'%'

что за ироглифы после тест..
Быстрый ответ:

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