Август 27

GLPI, FusionInventory и Thinstation 5

GLPI_72

Приводя в порядок свое хозяйство, я столкнулся с проблемой — обычные компьютеры инвентаризируются безо всяких проблем: закинул скрипт запуска агента FusionInventory через GPO и через пару часов наблюдаешь в GLPI полный расклад. С НИКСами чуть сложнее, но их по пальцам пересчитать — вручную установил нужные пакеты, поменял url сервера и готово.

Продолжить читать

Рубрика: Linux | LEAVE A COMMENT
Август 27

GLPI и счетчик принтеров

GLPI_72

Долго я бился с тем, чтобы GLPI изменял текущий счетчик страниц сетевых принтеров. Вроде бы мелочь, но все равно приятно, когда видишь, сколько страниц отпечатано от смены до смены картриджа.

Штатно, GLPI этот счетчик не меняет, FusionInventory тоже, хотя на странице FusionInv SNMP в карточке притера есть пункт «total_pages».

Покрутив GLPI со всех сторон, стало ясно, что счетчик этот можно писать прямо в базу — ни на что это не влияет.

Получился вот такой вот shell-скрипт:

#!/bin/bash

msql_u='glpi' #Пользователь mysql
msql_p='glpi' #Пароль mysql
msql_db='support' #Имя БД

mysql -u $msql_u -p$msql_p -D $msql_db -B -N -s -e 'select id,last_pages_counter from glpi_printers where (have_ethernet = 1);'| while read -r line
do
printer_glpi_counter=$(echo $line | awk '{print $2}')
printer_ip=$(mysql -u $msql_u -p$msql_p -D $msql_db -B -N -s -e "SELECT name FROM glpi_ipaddresses WHERE mainitems_id = $(echo $line | awk '{print $1}') AND mainitemtype = 'Printer';")
printer_cur_counter=$(snmpwalk -Ovq -c public -v 1 $printer_ip 1.3.6.1.2.1.43.10.2.1.4.1.1 2>/dev/null)
if [ $printer_cur_counter -gt $printer_glpi_counter ] ;
  then
    mysql -u $msql_u -p$msql_p -D $msql_db -B -N -s -e "UPDATE glpi_printers SET last_pages_counter=$printer_cur_counter,date_mod=NOW() WHERE id=$(echo $line | awk '{print $1}')"
fi
done

 

В кратце:

Используется две таблицы:

  • glpi_printers — содержит имя принтера, коммуникации на его борту (отбираем только сетевые — where (have_ethernet = 1)), счетчики, и кучу прочей информации
  • glpi_ipaddresses — содержит ip-адреса сетевых устройств, их тип, и id этого устройства

Текущий счетчик страниц получаем с принтера по SNMP, сравниваем его с текущим в GLPI и если он больше — записываем в базу и меняем дату изменения записи.

Все просто)

Рубрика: Linux | LEAVE A COMMENT
Февраль 17

Twinkle и скрипты

Продолжая петь дифирамбы Twikle`у, можно сказать, что у него есть замечательная функция — исполнение скриптов при событиях. Ну и я накидал небольшой скриптик, который немного упрощает жизнь:

#!/bin/bash

player="/usr/bin/parole"

playkey="--play"
pausekey="-p"

echo $TWINKLE_TRIGGER >> /tmp/log

case "$TWINKLE_TRIGGER" in
"in_call" ) #Входящий звонок - сообщаем кто звонит и тормозим плеер
	notify-send -t 3000 -i "/usr/share/twinkle/twinkle48.png" "Входящий звонок:     $SIP_FROM_USER $SIP_FROM"
	$player $pausekey
;;
"out_call" ) #Исходящий звонок - тормозим плеер
	$player $pausekey
;;
"local_release" | "remote_release" ) #Звонок завершен любой из сторон - продолжаем музыку слушать
	$player $playkey
;;
"in_call_failed" )
	notify-send -t 3000 -i "/usr/share/twinkle/twinkle48.png" "Входящий звонок отменен!"
	$player $playkey
;;
"outcall_failed" )
        notify-send -t 3000 -i "/usr/share/twinkle/twinkle48.png" "Ошибка соединения: $SIPSTATUS_CODE $SIPSTATUS_REASON"
        "$player $playkey"
;;
"in_call_answered" | "outcall_answered" )
	echo "Connection estabilished!" >> /dev/null
;;
* ) # Если получаем любое другое значение - удивляемся и шлем в /dev/null. Мы к этому еще не готовы
	echo "WTF?!" >> /dev/null
;;
esac

Немного про переменные:

  • $player — плеер, которым я пользуюсь.
  • $playkey — ключ для продолжения воспроизведения
  • $pausekey — ключ для остановки воспроизведения

Определение статуса твинкла идет через переменную $TWINKLE_TRIGGER. Согласно мануалу, эта переменная может содержать следующие значения

TWINKLE_TRIGGER Trigger point
in_call Входящий звонок
in_call_answered Ответ на входящий
in_call_failed Входящий звонок сброшен или отменен
out_call Исходящий звонок
out_call_answered Исходящий звонок отвечен
out_call_failed Исходящиый звонок сброшен или отменен
local_release Разговор окончен с локальной стороны
remote_release Разговор окончен удаленной стороной

Обрабатывая эти значения можно выполнять определенные действия.

Прописываем использование скрипта в программе и можно пользоваться!

twinkle_script

В процессе эксплуатации скрипт оброс запросом в AD для получения данных об абоненте (для внутренних звонков), регулировкой громкости для Flash-плеера в браузере и прочими свистелками, но это уже личное дело каждого

Рубрика: Linux | LEAVE A COMMENT
Февраль 10

Twinkle on Debian7

twinkle

Когда-то, впервые столкнувшись с VoIP, наскоро поставил twinkle, да так на нем и остался. Много чего перебрал под линух, но все либо глючно-тормозное с горой зависимостей, либо не умеет хоткеи использовать.

Знаю, twinkle и сам не подарок, но по крайней мере он имеет АДЕКВАТНЫЙ режим управления через консоль. Ну а повесить на хоткеи консольные команды — это уже дело пары строчек.

Продолжить читать

Рубрика: Linux | LEAVE A COMMENT