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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

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

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!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Мне "кажется" что 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 - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн lexasub

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

Оффлайн Sly_tom_cat

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

Оффлайн lexasub

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

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

Оффлайн ReNzRv

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

Оффлайн lexasub

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

Оффлайн Sly_tom_cat

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

Код: (python) [Выделить]
import sys
import MySQLdb

conn = MySQLdb.connect(host= "localhost",
                  user="root",
                  passwd="scaner",
                  db="scaner")
x = conn.cursor()

for line in sys.stdin:
  line = line.replace('\n', '')
  try:
    x.execute("""INSERT INTO ping(ip) VALUES (%s)""",(line,))
    conn.commit()
  except:
    conn.rollback()
conn.close()

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

С.но запускать надо так (питоновский код записан в файл 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 - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

 

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