суббота, 29 ноября 2014 г.

Network Manager: Disable wireless if wired connection available

Дома у меня два варианта для подключения к сети: проводное (гигабитный ethernet) или беспроводное (wifi). В зависимости от того, где я нахожусь используется то или иное подключение.

Network Manager в Wheezy (а возможно и более новые версии) не умеет отключать беспроводное подключение, когда доступно проводное. Чтобы беспроводное подключение не мешало проводному я отключил автоматическое подключение к домашней точке доступа. Но в этом случае появляется необходимость каждый раз вручную подключаться к точке доступа. Так работало довольно долго, но сегодня я какой-то особенно ленивый и потому решил автоматизировать этот момент.

Одно из средств расширения функциональности Network Manager - dispatcher скрипты. Скрипт /etc/NetworkManager/dispatcher.d/50wired-xor-wireless, управляющий логикой подключения

#!/bin/sh

IFACE="$1"
ACTION="$2"

if [ ! -x "$(which nmcli 2>/dev/null)" ]; then
    exit 0
fi

case ${IFACE} in
    eth*)
        case ${ACTION} in
            up)
                nmcli nm wifi off
                ;;
            down)
                nmcli nm wifi on
                ;;
        esac
        ;;
esac

Чтобы NetworkManager использовал новый скрипт он должен иметь определенные права

chown root:root /etc/NetworkManager/dispatcher.d/50wired-xor-wireless
chmod 0755 /etc/NetworkManager/dispatcher.d/50wired-xor-wireless

Теперь при подключении ethernet-кабеля отключается wifi, а при отключении кабеля - wifi включается обратно. Воистину лень - двигатель прогресса.

пятница, 28 ноября 2014 г.

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Тестируя апгрейд одного из серверов со Squeeze до Wheezy я столкнулся с невозможностью зайти на сервер по FTP. В качестве FTP сервера используется vsftpd с поддержкой виртуальных пользователей.

При попытке зайти через lftp выдается невнятная ошибка TLS

$ lftp admin@example.com
lftp admin@example.com:~> dir
ls: Фатальная ошибка: gnutls_record_recv: An unexpected TLS packet was received.

Выключаю поддержку SSL и пробую снова

ls: Ошибка регистрации: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

После чтения /usr/share/doc/vsftpd/FAQ.gz стало ясно, что это сделано специально
Q) Help! I'm getting the error message "refusing to run with writable root".
A) vsftpd is protecting against dangerous configurations. The cause of this
message is usually dodgy ownership of the ftp home directory. The home
directory should NOT be owned by the ftp user itself. Neither should it
be writable by the ftp user. A way to fix this is:
chown root ~ftp; chmod -w ~ftp
Another cause might be an attempt to use chroot_local_user without setting up
the directory ownership properly.
Попробовал добавить опцию "allow_writeable_chroot=YES", но версия vsftpd в Wheezy ее не знает.

В качестве решения пересобрал пакет из Sid и выложил в репозитарий.

вторник, 25 ноября 2014 г.

Быстрая очистка всех логов в Windows

Чтобы быстро очистить все логи в Windows нужно выполнить в консоли с правами администратора команду

for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"

Проверено на Windows 7. Подробнее здесь.

понедельник, 24 ноября 2014 г.

Рекомендую прочесть: The Martian

На прошлой неделе засел за чтение The Martian (Andy Weir). Не припомню кто мне ее порекомендовал, но я ни разу не пожалел, что начал читать эту книгу.

Поклонники научной фантастики не останутся равнодушными к истории выживания человека, оставшегося в одиночестве на мертвой планете.

четверг, 13 ноября 2014 г.

Куда сообщить о неработающем светофоре в Минске

Пару дней назад на перекрестке ул. Прушинских и Игуменского тракта в Минске перестала работать дополнительная секция светофора (стрелка налево), который расположен ближе к МКАД. Там есть дублирующий светофор, но его не всегда видно когда стоишь вторым-третьим.

Еще вчера вечером эта секция не работала и я задался вопросом - а кого нужно тормошить, если не работает светофор? Сначала думал позвонить в ГАИ и узнать, но потом наткнулся на статью.

Сообщить о неработающем светофоре, испорченных или отсутствующих дорожных знаках, неверно нанесенной разметке вы можете, позвонив в КУП "СМЭП Мингорисполкома" по стационарному телефону: 8 (017) 373-36-83 (городской), мобильным телефонам 8 (029) 630-12-48 (Velcom), 8 (029) 874-48-63 (МТС).

Время приема сообщений: с 07.00 до 23.00.

Оставляя свое сообщение, указывайте точное месторасположение "проблемной точки" и свои контактные данные.

Заявку приняли - посмотрим как быстро они устраняют проблемы.

P.S. Светофор отремонтировали в тот же день (судя по всему отремонтировали его по плану или по другой заявке, т.к. уже через час-два все работало).

понедельник, 10 ноября 2014 г.

KES10: Error 1723.There is a problem with this Windows Installer package.

При попытке удалить антивирус Kaspersky Endpoint Security 10 столкнулся с ошибкой:
Error 1723.There is a problem with this Windows Installer package. A DLL required for the installation to complete could not be started. Contact Technical Support or the package vendor. Action KLSETUPDIR_Set, entry: SetSetupDir, library: C:\Users\TATARA~1\AppData\Local\Temp\MSI2F5C.tmp
Пробовал сбросить права на C:\Users\TATARA~1\AppData\Local\Temp, но не помогло. В итоге получилось запустить удаление антивируса только из start menu через "Run as administrator". Очень похоже на происки UAC - хотя никаких запросов на повышение привилегий не поступало.

среда, 29 октября 2014 г.

Serial console для сервера

В моем домашнем сервере нет видеокарты (и ставить ее туда не планирую). Для управления сервером используется SSH, а на случай проблем с сетью решил добавить поддержку serial console.

Доступен только один последовательный порт, но если вы хотите узнать сколько последовательных портов поддерживается и какие у них названия, нужно выполнить команду:

$ grep ttyS /var/log/dmesg
[    1.107765] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    1.296739] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

Настраивать буду поддержку serial console в загрузчике, ядре и init.

Настройка Grub2

В файл /etc/default/grub нужно добавить поддержку serial

GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600"
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0 --word=8 --parity=no --stop=1"

и обновить конфигурацию grub

$ sudo update-grub

Настройка init

В файл /etc/inittab нужно добавить строку

S0:2345:respawn:/sbin/getty -L ttyS0 9600 vt100

и перезагрузить init

$ sudo telinit q

Для тестирования нужно подключиться через последовательный порт к серверу и перезагрузить его. Если на терминале установлены правильные настройки (9600 8n1), то мы должны увидеть лог загрузки.

Особенности конфигурации

Если последней опцией ядра указано "console=ttyS0,9600", то лог загрузки системы (вывод от init) будет только на ttyS0. В это время на первом терминале ничего выводиться не будет. Это может создать впечатление, что сервер завис, особенно если запустится проверка дисков.