[pulseaudio] module-bluetooth-device.c: Failed to acquire transport

Китайська гарнітура парується, але вибрати її як аудіо-пристрій неможливо. Причому, раніше працювало і чомусь померло.
В логах помилка САБЖ.

Лікується:
# sudo mv /etc/bluetooth /etc/bluetooth.backup 
# sudo apt-get install --reinstall bluez

Контроль крокового мотору поворотним енкодером та Arduino

Щоб працювати з антеною типу Magnetic loop (Магнітна рамка), необхідно дуже повільно регулювати конденсатор змінної ємності для керування резонансом антени. Причому, крутити конденсатор краще довгим діелектриком, а ще краще - дистанційно електроприводом. Я це реалізував за допомогою Arduino Uno + кроковий двигун 28BYJ-48 (5V) + драйвер ULN2003 (на модулі SBT0811), все це куплялось в Китаї за копійки, легко шукається на Алі.

Енкодер для Arduino я не знайшов, а купив звичайний, тому довелось його обвішати резисторами і конденсаторами.


Статичний lease в Cisco

!
ip dhcp pool StaticProjector
  host 10.xx.1.155 255.255.255.0
  client-identifier 018c.df9d.72c5.4c
  dns-server 10.yy.0.4
  default-router 10.xx.1.1
!

RAID 6 на Hetzner

Є 15 вінтів по 6Tb, треба зробити RAID 6

Знищуєм старий RAID, якщо він є.

megacli -CfgLdDel -Lall -aAll
megacli -CfgClr -aAll

Створення RAID (для 6 * 15 це буде 70947GB. Калькулятор)

megacli -CfgLdAdd -r6 [19:0,19:1,19:2,19:3,19:4,19:5,19:6,19:7,19:8,19:9,19:10,19:11,19:12,19:13,19:14] WB RA Direct CachedBadBBU -a0

Зробити загрузочним

megacli -AdpBootDrive -set -L0 -a0

Інформація про RAID

megacli -LDInfo -Lall -Aall



Доступність серверів Hetzner між собою

Було куплено кілька серверів, до кожного з них по додатковій реальній ІР адресі. Як вияснилось, ці додаткові адреси не бачать одна одну, хоча знаходяться в одній мережі і для всіх них один шлюз. Кожна з них доступна для світу
x.y.z.10
x.y.z.11
x.y.z.12
і шлюз
x.y.z.254

Був направлений запит в підтримку Hetzner і відповідь дуже здивувала, на кожному хості, де шлюзом по замовчуванні є x.y.z.254, треба додатково прописати статичний маршрут на сусідню ІР через той самий шлюз.

Наприклад, для x.y.z.10 треба додати маршрут:
route add -host x.y.z.11 gw x.y.z.254
route add -host x.y.z.12 gw x.y.z.254

Після чого всі ІР між собою стали доступними.

В чому логіка?

gre tunnel bash function

#!/bin/bash

/sbin/modprobe gre

function tun2-up {
    NAME=$1
    REMOTE=$2
    IP=$3
    PPTP=$4

    #ip link set ${NAME} down
    #ip tunnel del ${NAME}

    ip tunnel add ${NAME} mode gre remote ${REMOTE} local MY_EXTERNAL_IP
    ifconfig ${NAME} inet ${IP} pointopoint ${PPTP}

    ip link set ${NAME} up
}

tun2-up tunnelname REMOTE_IP 10.77.253.222/30 10.77.253.221

Перелік oid'ів інтерфейсів в Miktorik

[admin@MikroTik] > interface print oid
Flags: D - dynamic, X - disabled, R - running, S - slave
 0  R  ;;; WAN
       name=.1.3.6.1.2.1.2.2.1.2.1 actual-mtu=.1.3.6.1.2.1.2.2.1.4.1 mac-address=.1.3.6.1.2.1.2.2.1.6.1 admin-status=.1.3.6.1.2.1.2.2.1.7.1 oper-status=.1.3.6.1.2.1.2.2.1.8.1 bytes-in=.1.3.6.1.2.1.31.1.1.1.6.1 packets-in=.1.3.6.1.2.1.31.1.1.1.7.1 discards-in=.1.3.6.1.2.1.2.2.1.13.1

       errors-in=.1.3.6.1.2.1.2.2.1.14.1 bytes-out=.1.3.6.1.2.1.31.1.1.1.10.1 packets-out=.1.3.6.1.2.1.31.1.1.1.11.1 discards-out=.1.3.6.1.2.1.2.2.1.19.1 errors-out=.1.3.6.1.2.1.2.2.1.20.1

Прочитати значення:

# snmpwalk -v2c -c public 111.222.111.222 .1.3.6.1.2.1.31.1.1.1.6.1
IF-MIB::ifHCInOctets.1 = Counter64: 780925449

Zabbix: помилка при icmp ping - Name or service not known

Щоб перевірити чи Zabbix може використовувати команду fping

# su - zabbix -s /bin/bash
su: warning: cannot change directory to /var/lib/zabbix: No such file or directory
-bash-4.2$ fping 111.222.111.222
(null): can't create socket (must run as root?) : Permission denied

Тут очевидна проблема з доступом до fping
Фікс:

# chown root:zabbix /usr/sbin/fping
# chmod 4710 /usr/sbin/fping
# chmod ug+s /usr/sbin/fping

перевіряємо

# su - zabbix -s /bin/bash
Last login: Tue Feb  7 06:35:20 EET 2017 on pts/0
su: warning: cannot change directory to /var/lib/zabbix: No such file or directory
-bash-4.2$ fping 111.222.111.222
111.222.111.222 is alive

Все ок!

ISPmanager Invalid License

Щоб відновити втрачену ліцензію на ISPmanager, запускаємо з сервера на який надана ліцензія

wget http://lic.ispsystem.com/ispmgr.lic?ip=123.123.123.123 

переміщаємо файл ліцензії в /usr/local/ispmgr/etc

mv ispmgr.lic?ip=123.123.123.123 /usr/local/ispmgr/etc/ispmgr.lic

Це при умові що ліцензія актуальна.

Дізнатись точну версію ispmanager 4

/usr/local/ispmgr/bin/ispmgr -v

doveadm видалення старих листів з скриньок

Видалення з усіх (-А) скриньок старших за 90 і 60 днів, з папок Trash і Junk відповідно.

doveadm expunge -A mailbox Trash savedbefore 90d 
doveadm expunge -A mailbox Junk savedbefore 60d

Видалення з вказаної скриньки

doveadm expunge mailbox Junk -u email@domain.com savedbefore 60d

Встановлення локалі в Raspberry Pi

/etc/default/locale

LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_TYPE=en_US.UTF-8

Синхронізація двох imap-скриньок

Синхронізація двох imap-скриньок. Дуже корисна утиліта при переносах поштових серверів, доменів, скриньок.

imapsync --host1 127.0.0.1 --user1 mail.server1.com --password1 pa$$w0rd \
--host2 mail.server2.com --user2 email@domain2.com --password2 pa$$w0rd

Хороший онлайн diff-сервіс

https://www.diffchecker.com/

Raspberry Pi блимає taskbar (xpanel)

Завів нового користувача, додав його в групу video і audio, також треба прописати в /boot/config.txt

dtparam=audio=on

ну і розремити можна, щоб забрати чорну рамку на моніторі

disable_overscan=1

postfix: вибірка з maillog по e-mail

postfix має своєрідний формат логів і вибирати потрібну інформацію потрібно в два проходи. Ось команда, яка робить гарну вибірку по потрібному е-мейлу.

grep 'to=<email@domain.com' /var/log/mail.log | cut -d ' ' -f 6 | grep -f - /var/log/mail.log > email@domain.com.txt

Очищення imap скриньки від старих листів

 
Прийшло таке дивне робоче повідомлення, але здивування було більше, коли в скрині виявилось 103 тисячі повідомлень.

Ділюсь скриптом, який за 5 хвилин видалив 70 тисяч повідомлень.


#!/usr/bin/python

MAIL_SERVER = 'mail.server.com'
USERNAME = 'login@domain.com'
PASSWORD = 'pass'
MAILBOX = 'INBOX'
MAX_DAYS = 392 # Deletes messages older than a week

import imaplib
import datetime

today = datetime.date.today()
cutoff_date = today - datetime.timedelta(days=MAX_DAYS)
before_date = cutoff_date.strftime('%d-%b-%Y')

search_args = '(BEFORE "%s")' % before_date

imap = imaplib.IMAP4(MAIL_SERVER)
imap.login(USERNAME, PASSWORD)
imap.select(MAILBOX)

typ, data = imap.search(None, 'ALL', search_args)

for num in data[0].split():
    print num
    imap.store(num, '+FLAGS', '\\Deleted')

imap.expunge()

imap.close()
imap.logout()