Форматирование xml файла из коммандной строки
Задача: отформатировать удобочитаемый формат не форматированный xml громадного размера
Решение:
1 |
cat dump.xml | xmllint --format - > ff.xml |
Жизнь замечательных грибов
Наработки и статьи по работе с Linux
Задача: отформатировать удобочитаемый формат не форматированный xml громадного размера
Решение:
1 |
cat dump.xml | xmllint --format - > ff.xml |
Получение триггеров с учетом зависимостей. Т.е. Если некий тригер А зависит от триггера Б, то его в списке не будет.
1 |
SELECT (UNIX_TIMESTAMP()-triggers.lastchange)/60 as minut,hosts.host, triggers.description, triggers.comments, triggers.triggerid FROM triggers INNER JOIN functions ON triggers.triggerid=functions.triggerid INNER JOIN items ON items.itemid=functions.itemid INNER JOIN hosts ON hosts.hostid=items.hostid INNER JOIN hosts_groups ON hosts_groups.hostid=hosts.hostid INNER JOIN groups ON groups.groupid=hosts_groups.groupid WHERE hosts.status = 0 AND items.status = 0 AND triggers.status = 0 AND triggers.priority=5 AND triggers.value=1 and ((UNIX_TIMESTAMP()-triggers.lastchange)/60)>15 and triggers.triggerid in (select triggerid_up from trigger_depends where triggerid_down in (SELECT triggers.triggerid FROM triggers INNER JOIN functions ON triggers.triggerid=functions.triggerid INNER JOIN items ON items.itemid=functions.itemid INNER JOIN hosts ON hosts.hostid=items.hostid INNER JOIN hosts_groups ON hosts_groups.hostid=hosts.hostid INNER JOIN groups ON groups.groupid=hosts_groups.groupid WHERE hosts.status = 0 AND items.status = 0 AND triggers.status = 0 AND triggers.priority=5 AND triggers.value=1 and ((UNIX_TIMESTAMP()-triggers.lastchange)/60)>15 group by triggerid)) group by triggers.triggerid |
1) Ставим из портов trelegram-cli
1 2 |
cd /usr/ports/net-im/telegram make install |
2) Заходим в telegram-cli, регистрируемся. По help — список комманд.
Нюансы: сначала нужно добавить контакты. Отправлять сообщения тоже можно не сразу, а только после выполнения комманды contact_list. Или запускать telegram-cli с ключем -W
Пробелы в именах при операциях с коммандами необходимо заменять на _
Например отправка сообщения:
1 |
msg Gribov_Pavel "Привет" |
3) Для получения списка контактов и их состояния, можно использовать что-то типа на PHP (требует доработки):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#!/usr/local/bin/php <?php /* * (с) 2016 Грибов Павел * http://грибовы.рф * * Если исходный код найден в сети - значит лицензия GPL v.3 * * В противном случае - код собственность ГК Яртелесервис, Мультистрим, Телесервис, Телесервис плюс * */ $path="/usr/local/bin/telegram-cli"; //где находится консольный телеграм whereis telegram-cli function GetContacts(){ global $path; $result=array(); $rez=`( echo "contact_list" ; echo "safe_quit" ) | $path -RCW -U root | grep -v halt | grep -v "All" | grep "under" -A 100000 | grep -v "licen" `; $res_arr= explode("\n", $rez); foreach ($res_arr as $value) { $value=trim($value); $value=preg_replace("/[^a-zA-ZА-Яа-я0-9\s]/","", $value); if ($value!=""){ $value= str_replace(" ", "_", $value); $result[$value]["name"]=$value; }; }; return $result; }; function StatusInfo($contact_list){ return $contact_list; }; $contact_list=GetContacts(); $contact_list=StatusInfo($contact_list); var_dump($contact_list); ?> |
Из огромных минусов такого способа информирования — нельзя знать наверняка, получил контакт сообщение или нет. Во первых нет в API получения статуса отправленого сообщения, а во вторых — при свернутом в трей телеграмме, статус контакта будет offline. Т.е. нет уверенности, на самом деле контакт в оффлайне, или у него приложение просто свернуто. Этот огромный жирный минус перечеркивает все достоинства Telegram, и соответственно использовать его для информирования например событий в Zabbix не представляется возможным
1 |
cat remmina.pref | grep secret |
1 |
cat 1451037668335.remmina | grep password |
1 2 3 4 5 6 7 8 9 10 |
#!/usr/bin/python from Crypto.Cipher import DES3 import base64 secret = base64.decodestring('тут секрет') key = secret[:24] iv = secret[24:] EEpwd = 'тут пароль' DEpwd = base64.decodestring(EEpwd) DDpwd = DES3.new(key, DES3.MODE_CBC, iv).decrypt(DEpwd) print "Decoded (Decrypted ( PWD ) ) : ",DDpwd |
Следующая команда выгрузит дамп базы данных с триггреми, процедурами, таблицами НО! без данных в таблицах.
1 |
mysqldump --routines --no-data --no-create-db --skip-opt billing > onlytriggers.sql |