Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Bash: перенаправление ввода-вывода из fping в бд.  (Прочитано 554 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
есть неплохая тулуза fping. C такими параметрами она выводит ip, которые пингуются. Как мне в бд добавлять результат работы fping(нашел Ip-записали..)
$a= fping -a -q -i $3 -r 1 -g $1 $2
mysql -D scaner -u root -p scaner -e 'INSERT INTO `ping`(`ip`) VALUES ("'$a'")';

ТС не появлялся на Форуме более полугода по состоянию на 14/07/2019 (последняя явка: 20/10/2018). Модератором раздела принято решение закрыть тему.
--zg_nico
« Последнее редактирование: 14 Июль 2019, 03:49:58 от zg_nico »

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12072
  • Xubuntu 20.04 (64bit)
    • Просмотр профиля
Мне "кажется" что insert вставляет одну строку, вам нужен импорт в таблицу (LOAD DATA INFILE ... INTO TABLE ....) или надо писать программу парсер вывода утилиты, которая отдельными инсертами будет впихивать в базу отдельные строки вывода утилиты.
« Последнее редактирование: 20 Январь 2017, 17:36:07 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Мне "кажется" что insert вставляет одну строку, вам нужен импорт в таблицу. или писать программу парсер вывода утилиты которая отдельными инсертами будет впихивать в базу отдельные строки вывода утилиты.
Я знаю, что mysqlю передаем только одну строку, не могли бы вы написать все вместе?

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12072
  • Xubuntu 20.04 (64bit)
    • Просмотр профиля
Я в баше не силен, суть я вам примерно изложил, но реализовать в конкретном коде разве что на питоне могу.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
сделайте пожалуйста на питоне

Пользователь добавил сообщение 20 Январь 2017, 17:56:50:
Sly_tom_cat, сделайте пожалуйста на питоне
« Последнее редактирование: 20 Январь 2017, 17:56:50 от lexasub »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2628
    • Просмотр профиля
Код: Bash
  1. fping -a -q -i $3 -r 1 -g $1 $2 \
  2. | while read l
  3. do
  4.         mysql -D scaner -u root -p scaner -e 'INSERT INTO `ping`(`ip`) VALUES ("'$l'")';
  5. done

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Спасибо огромное, все работает

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12072
  • Xubuntu 20.04 (64bit)
    • Просмотр профиля
На питоне это гораздо навороченнее выглядит чем на баше:

Код: Python
  1. import sys
  2. import MySQLdb
  3.  
  4. conn = MySQLdb.connect(host= "localhost",
  5.                   user="root",
  6.                   passwd="scaner",
  7.                   db="scaner")
  8. x = conn.cursor()
  9.  
  10. for line in sys.stdin:
  11.   line = line.replace('\n', '')
  12.   try:
  13.     x.execute("""INSERT INTO ping(ip) VALUES (%s)""",(line,))
  14.     conn.commit()
  15.   except:
  16.     conn.rollback()
  17. conn.close()
  18.  

Тут я из входного потока читаю и в таблицу вставляю с коммитом по каждой строке.

С.но запускать надо так (питоновский код записан в файл stdin2mysql.py):
fping -a -q -i $3 -r 1 -g $1 $2 | python3 stdin2mysql.py
« Последнее редактирование: 20 Январь 2017, 18:26:11 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

 

Страница сгенерирована за 0.181 секунд. Запросов: 22.