Мелкие доработки Ubuntu Server 16.04

После установки домашнего микро-сервера (Ubuntu Server 16.04 + EeePC 901) сразу вылезли мелкие неприятные моменты.
Во-первых, при закрытии крышки экрана малютка уходит в спячку.
Вообще отключим реакцию системы на открытие-закрытие экрана:
1. Поправим конфигурацию Login Manager:
$sudo vim /etc/systemd/logind.conf
[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#InhibitDelayMaxSec=5
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
HandleLidSwitch=ignore
#HandleLidSwitchDocked=ignore
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes
#HoldoffTimeoutSec=30s
#IdleAction=ignore
#IdleActionSec=30min
#RuntimeDirectorySize=10%
#RemoveIPC=yes
#UserTasksMax=12288

2. Рестартим сервис:
$sudo service systemd-logind restart

Источник: Как заставить Ubuntu не реагировать на закрытие крышки экрана
Продолжение следует…

Решение проблемы с зависанием Dell Latitude D400

Понадобился маломощный линукс-сервер, под него был выбран старенький, но надежно работающий ноутбук Dell Latitude D400. С установкой операционной системы проблем не возникает – после экспериментов с Ubuntu 16.04LTS вернулся на более консервативный Debian Server 9.2.1. Проблемы начинаются, когда закрывается крышка экрана – ноутбук зависает намертво. Эксперименты с версиями систем, управлением питанием, чтением форумов позволили выяснить, что проблема находится в самом ядре (4.0 и последние версии ветки 3) и никакие настройки Power Management ситуацию не решают. Соответственно, либо откат к старым версиям, либо танцы с бубном.

Если нельзя заставить компьютер правильно обрабатывать сигналы о закрытии крышки монитора, значит он вообще не должен знать, что крышку закрыли. Решение заключается в отключении датчика закрытия. Самый простой вариант – снять магнит в рамке экрана. Он находится в левом нижнем углу. Рамку крепят 6 винтов, закрытых декоративными заглушками. Понадобится маленькая крестовая отвертка и нож.

Все, проблема решена.

Создание загрузочной флешки OS X (OS X 10.7.2 Lion)

Понадобилось на свой старенький MacBook 4.1 (да, машинка 2008 года в хорошем состоянии и все еще годна для большинства задач) накатить последнюю версию операционки, которую он поддерживает (10.7.5) и снести то старье что там было, “улучшенное” всевозможными экспериментами за много лет.
Образ диска в формате DMG подогнал коллега, до сиx пор занимающийся ремонтом яблочной техники в качестве хобби, а вот создание правильной загрузочной флешки оказалось делом нетривиальным, куда как сложнее создания загрузочной версии Linux.
На простораx интернета нашлась толковая инструкция:
Make a bootable Mac OS X 10.7 Lion installer from a USB flash drive

Как печатать в текстовый файл на Windows

Есть рабочая система в VM (VMware), лог событий которой можно посмотреть в достачно неудобном просмотрщике (фильтрация и копирование текста в клипборд нормально не работают) или распечатать.
Куда печатать на виртуальной машине? Правильно, в файл. Ставим “Generic/Text Only” принтер. При наличии прав займет минутку.
А вот потом начинаются приколы, так как строки лога обрезаются по длине в соответствии с размерами страницы, даже в А2 Landscape не все влезает – строки лога по ~300 символов, на выxоде получаем ~160.
Выxод – добавить новый формат, например А1 или А0. Идем “Control Panel\All Control Panel Items\Devices And Printers” -> “Printers” > “Print server properties” -> “Forms”-> [x]Create new form.

Для справки:
А0 841 x 1189 mm 33.1 x 46.8 in
А1 594 x 841 mm 23.4 x 33.1 in
А2 420 x 594 mm 16.5 x 23.4 in
А3 297 x 420 mm 11.7 x 16.5 in

Узелки на память. MS Powershell

1. На удаленном сервере нет привычныx инструментов, ставить нельзя ничего. Клиент присылает данные, с битым форматированием – в текством файле строки порезаны по 80, а не по 320 символов. Выручает костыль на Powershell. Убираем любые символы перевода строки, режем по 320 и вычищаем невесть откуда взявшиеся пустые строки:

(Get-Content input.txt) -join "" -split '(.{320})'| ? {$_.trim() -ne "" } | Out-File output.txt

Просто удаление пустыx строк:
(gc input.txt) | ? {$_.trim() -ne "" } | set-content output.txt

Upd:
Out-File тоже интересная штука. Задавая параметр -Encoding попутно можно перекодировать файл. По умолчанию выxодной формат “Unicode”. Доступны “Unicode”, “UTF7”, “UTF8”, “UTF32”, “ASCII”, “BigEndianUnicode”, “Default”, и “OEM”. “Default” использует текущую кодовую страницу ANSI.

2. Простой скрипт для разбиения большого CSV файла на меньшие по определенному полю. В данном случае – по второму [1].

<# PLI (Polish local payments format) splitter PLIs will be split by execution date. Syntax: powershell.exe pli_split.ps1 input_file destination_folder #>

param(
[string]$src = $(throw "Input file is required."),
[string]$dstDir = $(throw "Output folder is required.")
)

#$src = "c:\inbound\test.pli"
#$dstDir = "c:\outbound\"

# Read input and create subordinate files based on column 2 content

Get-Content -Path $src | foreach {
$file = "$(($_ -split ",")[1]).pli"
if (-not (Test-Path -Path $dstDir\$file))
{
Out-File -InputObject $_ -Encoding ascii $dstDir\$file
}
else
{
Out-File -InputObject $_ -Encoding ascii -Append $dstDir\$file
}
}

Шифрование файлов при помощи OpenSSL/SMIME

Создадим пару тестовыx ключей:
openssl req -x509 -nodes -newkey rsa:2048 -keyout private.pem -out public_test.pem

Зашифруем публичным ключем:
openssl smime -encrypt -aes256 -in bigdata.xml -binary -outform DEM -out bigdata.xml.ssl public_test.pem

Расшифруем приватным:
openssl smime -decrypt -in bigdata.xml.ssl -binary -inform DEM -inkey privatekey.pem -out bigdata.xml

Если с первого раза не заработало  и выдает странные ошибки (особенно на Windows), то скорее всего не найден файл конфигурации. Он определяется системной переменной:
set OPENSSL_CONF=C:\Program Files\OpenSSL\openssl.cfg

Когда не хочет устанавливаться pve-cluster

Proxmox отказывается устанавливаться на Debian Wheezy 7.7.0. Все упирается в установку пакета pve-cluster:

rat@isoffice:~$ sudo apt-get install pve-cluster
Reading package lists... Done
Building dependency tree
Reading state information... Done
pve-cluster is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]?
Setting up pve-cluster (3.0-8) ...
[....] Starting pve cluster filesystem : pve-cluster[main] crit: Unable to get local IP address
(warning).
invoke-rc.d: initscript pve-cluster, action "start" failed.
dpkg: error processing pve-cluster (--configure):
subprocess installed post-installation script returned error exit status 255
Errors were encountered while processing:
pve-cluster
E: Sub-process /usr/bin/dpkg returned an error code (1)

После долгих экспериментов выяснилось, что все портит запись в /etc/hosts:

rat@isoffice:~$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 isoffice.domain.lv isoffice
192.168.0.95 isoffice isoffice.domain.lv
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

После ее удаления установка прошла без проблем.

Кстати, вот хорошая инструкция по установке Proxmox на Debian: Install Proxmox VE on Debian Wheezy

Как заставить MS Outlook показывать потенциально опасные вложения

Бывает что по электронной почте пересылают потенциально опасный (в смысле повреждения или заражения компьютера) файл, напрмер *.bat, *.cmd, *dll. Outlook все намертво блокирует. Если вам информация нужна срочно, а отправитель сможет переслать информацию уже в виде арxива не раньше чем через 6 часов, то это, мягко говоря, раздражает.

Есть решение – добавить исключения в конфигурацию безопасности MS Outlook. Права администратора не требуются (если операция разрешена доменными политиками).

Запускаем regedit.exe и добавлаяем новый ключ Level1Remove типа String в HKEY_CURRENT_USER\Software\Microsoft\Office\xx.0\Outlook\Security. В строке пробелов быть не должно, разделитель – точка с запятой.

Outlook 2010:

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\Security
String: Level1Remove
Value format: .bat;.cmd;

Outlook 2007:

HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\Security
String: Level1Remove
Value format: .bat;.cmd;

Outlook 2003:

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\Security
String: Level1Remove
Value format: .bat;.cmd;

Outlook 2002:

HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Security
String: Level1Remove
Value format: .bat;.cmd;

Outlook 2000 SP3:

HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Outlook\Security
String: Level1Remove
Value format: .bat;.cmd;

Более подробная информация.

Как починить слетевшую локаль (Linux)

На компьютере (Linux FC12) неправильно настроена локаль. Некоторые программы просто плюются, особенно чувствительные отказываются работать:

[rat@server ~]$ locale -a|head
locale: Cannot set LC_CTYPE to default locale: No such file or directory

[rat@server ~]$ iotop
Traceback (most recent call last):
File "/usr/bin/iotop", line 16, in
main()
File "/usr/lib/python2.6/site-packages/iotop/ui.py", line 311, in main
locale.setlocale(locale.LC_ALL, '')
File "/usr/lib/python2.6/locale.py", line 513, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting

Несмотря на наличие неплохих рекомендаций в сети, ничего не помогло. Кстати, вот хорошая инструкция для Red Hat/Fedora Core: Fixing a locale-archive breakage (что делать когда поломалось совсем все). В моем случае почему-то не сработала.

Остается последнее рабочее средство.
Итак, узнаем какие локали у нас в системе установлены:
$ locale -a

Прописываем рабочую локаль из списка в /etc/environment:
$ sudo vim /etc/environment
LC_ALL="en_US.utf8"

Перелогиниваемся – проблема решена.

Мониторинг параметров сервера с помощью Munin и IPMI

Есть клиентский сервер HP Proliant ML110 G5 со стареньким  FC12 на борту. Специалист, установивший систему (с грубыми ошибками), давно уже занимается другими делами. Нужно отслеживать состояние сервера, особенно состояние оборудования (состояние дисков, температура, вентиляторы, питание).

Для такой задачи подходит Munin, очень хорошая система, если приходится мониторить небольшое количество серверов. Для очень большой сети лучше смотреть в сторону мощных систем мониторинга вроде Zabbix. Но это не мой случай.

Если же мониторинг жестких дисков через SMART включился достаточно просто, то lm-sensors совершенно отказывался показывать вентиляторы и питание, выдавая информацию исключительно по температуре процессоров.

Попробуем использовать IPMI в связке с Munin. Для этого нам понадобится пакет  ipmitools:

$ sudo yum install ipmitool

Установим необходимые модули:

$ sudo modprobe ipmi_devintf
$ sudo modprobe ipmi_si

Если модули не загружены, при попытке запустить ipmitool вылезет примерно такая ошибка:
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory

Для автоматической загрузки модиулей их необходимо прописать в конфигурационном файле (/etc/modules.conf для Red Hat/Fedora Core/CentOS, /etc/modules для Debian/Ubuntu):

$ sudo vim /etc/modules.conf
ipmi_devintf
ipmi_si

$ sudo ipmitool sensor
POST Error | na | discrete | na | na | na | na | na | na | na
Memory ECC | na | discrete | na | na | na | na | na | na | na
ACPI State | 0x1 | discrete | 0x0180| na | na | na | na | na | na
System Reset | 0x0 | discrete | 0x0080| na | na | na | na | na | na
CPU FAN | 1497.454 | RPM | ok | 5537.099 | 4960.317 | 4859.086 | na | 937.383 | na
SYSTEM FAN | 1700.680 | RPM | ok | 5952.381 | 5668.934 | 5411.255 | na | 937.383 | na
System 12V | 12.040 | Volts | ok | na | na | na | na | na | na
System 5V | 5.101 | Volts | ok | na | na | na | na | na | na
System 3.3V | 3.286 | Volts | ok | na | na | na | na | na | na
CPU0 Vcore | 1.137 | Volts | ok | na | na | na | na | na | na
System 1.25V | 1.254 | Volts | ok | na | na | na | na | na | na
System 1.8V | 1.833 | Volts | ok | na | na | na | na | na | na
System 1.2V | 1.205 | Volts | ok | na | na | na | na | na | na
CPU0 Diode | na | degrees C | na | na | 20.000 | 25.000 | 85.000 | 90.000 | 95.000
CPU0 Dmn 0 | 24.000 | degrees C | ok | na | 0.000 | 0.000 | 97.000 | 100.000 | 100.500
CPU0 Dmn 1 | 22.000 | degrees C | ok | na | 0.000 | 0.000 | 97.000 | 100.000 | 100.500
Therm-Trip0 | 0x0 | discrete | 0x0180| na | na | na | na | na | na
CPU Prochot | 0x0 | discrete | 0x0180| na | na | na | na | na | na
NMI | 0x0 | discrete | 0x0180| na | na | na | na | na | na
CPU VRD Hot | 0x0 | discrete | 0x0180| na | na | na | na | na | na
CPU0 IERR | 0x0 | discrete | 0x0180| na | na | na | na | na | na
LO100 Present| 0x0 | discrete | 0x0180| na | na | na | na | na | na
Watchdog | na | discrete | na | na | na | na | na | na | na

Вроде все работает. Займемся настройкой плагина.
В поставке последних версий Munin есть поддержка IPMI (/usr/share/munin/plugins/ipmi_), но она достаточно слабая. Мне больше нравится сторонний плагин написанный Юном Футагавой. Можно скачать с GitHub.

Прописываем плагин:
$ sudo ln -s /usr/share/munin/plugins/ipmitool_sensor_ /etc/munin/plugins/ipmitool_sensor_fan
$ sudo ln -s /usr/share/munin/plugins/ipmitool_sensor_ /etc/munin/plugins/ipmitool_sensor_temp
$ sudo ln -s /usr/share/munin/plugins/ipmitool_sensor_ /etc/munin/plugins/ipmitool_sensor_vol

Так как требуются админские права, их необходимо указать в /etc/munin/plugin-conf.d/munin-node:

[ipmitool_sensor*]
user root
timeout 20

Перезагружаем munin-node:
$ sudo service munin-node restart

Теперь у нас есть достаточно подробная обновляемая информация по работе вентиляторов, температуре системы и состоянию блока питания.

←Older