Показ дописів із міткою linux. Показати всі дописи
Показ дописів із міткою linux. Показати всі дописи

автозапуск сервіс в Ubuntu 18

# cd /etc/systemd/system/
# touch some.service
# mcedit some.service

[Unit]
Description=Some site service
[Service]
ExecStartPre=
ExecStart=/sbin/runuser -l asuser -c '/some/script/start.sh'
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all
[Install]
WantedBy=multi-user.target

# sudo systemctl enable some

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

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

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

Доступність серверів 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

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

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

dtparam=audio=on

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

disable_overscan=1

apache2 + php7 з коробки не запустився в Linux Mint 18

Видає помилку: "Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP"

Вирішення:
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
sudo service apache2 restart

Viber fix

В Mint (Ubuntu) перестав працювати Viber. Перевстановлення не допомагало.
 При запуску отримував помилку:
This application failed to start because it could not find or load the Qt platform plugin "xcb"

Вирішилось досить просто:
sudo apt-get install libxcb-*

Sniff RTSP URL в китайській камері

Прийшла китайська ІР-камера, а задокументований rtsp URL не запрацював, хоча в браузері відео виконується.

Просніфити шлях просто:

ngrep -q -d wlan0 -W byline port 554




Upgrading MySQL 5.5 to MySQL 5.6 on Ubuntu 14.04 LTS

sudo apt-get remove mysql-server
sudo apt-get autoremove
sudo apt-get install mysql-client-5.6 mysql-client-core-5.6
sudo apt-get install mysql-server-5.6

Глюки SSH з'єднання

Обриви чи взагалі інколи неможливість законектитись на деякі хости лікуються фіксом конфіга на клієнті в /etc/ssh/ssh_config

Host *
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
HostKeyAlgorithms ssh-rsa,ssh-dss
MACs hmac-md5,hmac-sha1,hmac-ripemd160

автоматизація підключення WebDAV-шари

Є багато машин, на кожну потрібно підключити відповідну webdav-шару. Формат http://davhost/pc_0xx і 192.168.0.xx клієнт, відповідно.
#!/bin/bash

IP=`ifconfig | grep -v '127.0.0.1' | sed -n 's/.*inet addr:\([0-9.]\+\)\s.*/\1/p'`
IP_ARRAY=(${IP//./ })

FSTAB=/etc/fstab
USER_HOME=/home/user
CLIENT_DIR=$USER_HOME/client
DAVFS_DIR=.davfs2
CLIENT_SECRET=secrets

if [ ! -d $CLIENT_DIR ]; then
    echo "create $CLIENT_DIR"
    mkdir $CLIENT_DIR
    chown user:user $CLIENT_DIR
else
    echo "exist $CLIENT_DIR"
fi

if [ ! -d $USER_HOME/$DAVFS_DIR ]; then
    echo "create $USER_HOME/$DAVFS_DIR"
    mkdir $USER_HOME/$DAVFS_DIR
    chown user:user $USER_HOME/$DAVFS_DIR
else
    echo "exist $USER_HOME/$DAVFS_DIR"
fi

if [ ! -f $USER_HOME/$DAVFS_DIR/$CLIENT_SECRET ]; then
    echo "create $USER_HOME/$DAVFS_DIR/$CLIENT_SECRET"
    touch $USER_HOME/$DAVFS_DIR/$CLIENT_SECRET
    chown user:user $USER_HOME/$DAVFS_DIR/$CLIENT_SECRET
    chmod 0600 $USER_HOME/$DAVFS_DIR/$CLIENT_SECRET
    echo "http://davhost/pc_0${IP_ARRAY[3]} user user" >> $USER_HOME/$DAVFS_DIR/$CLIENT_SECRET
else
    echo "exist $USER_HOME/$DAVFS_DIR/$CLIENT_SECRET"
fi

if grep "http://davhost/pc_0${IP_ARRAY[3]}" $FSTAB
then
    echo "exist mount access in $FSTAB"
else
    echo "create mount access in $FSTAB"
    echo "http://davhost/pc_0${IP_ARRAY[3]} /home/user/client davfs user,rw,auto,_netdev 0 0" >> $FSTAB
fi

chmod u+s /sbin/mount.davfs
usermod -a -G davfs2 user