22 янв. 2026 г.

Edit kernel boot options with grubby

Grubby is a useful tool to change boot options on RHEL-based systems with grub2 since it is not preferable to manually edit config files for grub2 in RHEL8/9.

Messing with default kernel

To list all kernel menu entries, enter:

grubby --info=ALL
index=0
kernel="/boot/vmlinuz-4.18.0-372.9.1.el8.x86_64"
args="ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet $tuned_params zswap.enabled=1"
root="/dev/mapper/rhel-root"
initrd="/boot/initramfs-4.18.0-372.9.1.el8.x86_64.img $tuned_initrd"
title="Red Hat Enterprise Linux (4.18.0-372.9.1.el8.x86_64) 8.6 (Ootpa)"
id="67db13ba8cdb420794ef3ee0a8313205-4.18.0-372.9.1.el8.x86_64"
index=1
kernel="/boot/vmlinuz-0-rescue-67db13ba8cdb420794ef3ee0a8313205"
args="ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet"
root="/dev/mapper/rhel-root"
initrd="/boot/initramfs-0-rescue-67db13ba8cdb420794ef3ee0a8313205.img"
title="Red Hat Enterprise Linux (0-rescue-67db13ba8cdb420794ef3ee0a8313205) 8.6 (Ootpa)"
id="67db13ba8cdb420794ef3ee0a8313205-0-rescue"

To find out the file name of the default kernel, enter:

grubby --default-kernel
/boot/vmlinuz-4.18.0-372.9.1.el8.x86_64

To find out the index number of the default kernel, enter:

grubby --default-index
0

To change default kernel for booting:

grubby --set-default /boot/vmlinuz-4.18.0-372.9.1.el8.x86_64
grubby --set-default-index=0

Messing with kernel boot arguments

To add boot arguments to specific kernel:

grubby --args=console=ttyS0,115200 --update-kernel /boot/vmlinuz-4.18.0-372.9.1.el8.x86_64

To remove arguments:

grubby --remove-args="rhgb quiet" --update-kernel /boot/vmlinuz-4.18.0-372.9.1.el8.x86_64

Links:

  1. https://access.redhat.com/documentation/de-de/red_hat_enterprise_linux/8/html/managing_monitoring_and_updating_the_kernel/assembly_making-persistent-changes-to-the-grub-boot-loader_managing-monitoring-and-updating-the-kernel

How to identify product key for installed Microsoft Office 2021 and other versions.

You need to open CMD and run:

cscript "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus

This will show you license information with partial product key (last 5 symbols) which is enough to identify the key.

For older versions of office try Office15, Office14 in the command above.

26 июл. 2022 г.

Получаем бесплатный сертификат для HTTPS версии сайта с помощью Certbot.

 В итоге мы получим сертификат от Lets Encrypt на 90 дней, который будет автоматически перевыпускаться ботом. Актуально для блогов и т. п. не коммерческих сайтов, чтобы не платить лишнего за сертификат.

В статье подразумевается, что ваша система Debian 9/10 или Ubuntu 20.04/22.04. Для дригих Linux систем команды могут быть чуть другие.

Устанавливаем snapd (если ещё не установлен):

sudo apt install snapd

Обновляем установленный snapd:

sudo snap install core; sudo snap refresh core

Устанавливаем Certbot:

sudo snap install --classic certbot

Создаём ссылку на команду certbot:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Запускаем certbot или в полностью автоматическом режиме (для апача):

sudo certbot --apache

Или в режиме только создания сертификата (а в конфиг апача вам уже самим придётся добавить строчки о сертификате и ключе):

sudo certbot certonly --apache

Тестируем автоматическую перегенерацию:

sudo certbot renew --dry-run

Возможные пути нахождения задания перегенерации:

/etc/crontab/
/etc/cron./
systemctl list-timers

Добавляем вручную в конфиг апача сертификат, если выбран ручной режим. Открываем конфиг виртуалхоста:

nano /etc/apache2/sites-enabled/site.conf

И вписываем пути к полученному выше сертификату и ключу:

SSLCertificateKeyFile /etc/letsencrypt/live/domain/privkey.pem    SSLCertificateFile /etc/letsencrypt/live/domain/fullchain.pem

Сохраняем и перезапускаем апач:

service apache2 restart

Проверяем, что сертификат заработал, зайдя в веб-браузере на ваш сайт https://... из из приватного режима/другого браузера или предварительно почистив куки, связанные с вашим сайтом. Иначе браузер не подхватит изменения "на лету" и всё равно будет показывать, что соединение не защищено.

Если хром, то клацаем на замочек, затем на Connection is secure, потом на Certificate is valid.


Ссылки:

  1. https://certbot.eff.org/instructions?ws=apache&os=debianbuster

18 июл. 2022 г.

Python, как приложить .xlsx файл к письму e-mail.

 В принципе, таким способом можно приложить любой файл, в котором хранится не текстовая информация.

Ниже пример скрипта, отсылающего .xlsx файл:

import smtplib
from email.utils import formatdate
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

dst_emails = 'recipient1@example.com, recipient2@example.com'
xlsxfile = '/home/user/project1/example.xlsx'

# E-mail block
me = "sender@example.com"
# Filling e-mail info
msg = MIMEMultipart()
msg['Subject'] = "Xlsx file"
msg['From'] = me
msg['To'] = dst_emails
to = msg['To'].split()
msg['Date'] = formatdate(localtime=True)
html = """\
        <html>
          <head></head>
          <body>
            <p><br>
                <strong>This is a test e-mail</strong><br>
                <br>
                Place body text here

                Best regards,<br>
                Example user<br>
            </p>
          </body>
        </html>
        """
# Record the MIME type
letter = MIMEText(html, 'html')
# Attach letter into message container.
msg.attach(letter)
# Attach xlsx file
part = MIMEBase('application', "octet-stream")
part.set_payload(open(xlsxfile, "rb").read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'%(xlsxfile))
msg.attach(part)
# Send the message via example.com SMTP server.
s = smtplib.SMTP('mail.example.com')
# sendmail function takes 3 arguments: sender's address, recipient's address
# and message to send - here it is sent as one string.
s.sendmail(me, to, msg.as_string())
s.quit()

Ссылки:

  1. https://stackoverflow.com/questions/25346001/add-excel-file-attachment-when-sending-python-email

Как изменить настройки сети в VMWare vCenter Server 6.7 (VCSA)

 Недавно возникла необходимость поменять шлюз по умолчанию (default gateway) на vCenter Server 6.7.

Сначала зашел в VAMI (vCenter Server Appliance Management Interface): https://<IP>or<FQDN>:5480 на вкладку Networking:

Нажал Edit, открылся мастер настройки сети, ввёл всё, что необходимо и.... и в итоге он ничего не поменял)

Как оказалось, надо было по-другому действовать.

Нужно зайти на VSCA по ssh.

Для начала включим возможность подключения по ssh на вкладке Access:

Не зря же заходили в VAMI. Теперь заходим по ссх и вводим shell

В консоли вводим команду:

/opt/vmware/share/vami/vami_config_net

Выбираем 0, смотрим текущую конфигурацию.

Затем выбираем то, что нужно изменить. В моём случае это пункт 2. Далее в меню всё интуитивно понятно что вводить и нажимать.

Изменения должны сохраниться и после перезагрузки не пропадут.

Ссылки:

  1. https://digitalkungfu.wordpress.com/2015/02/25/how-to-fix-vcsa-ip-settings-from-command-line/
  2. https://communities.vmware.com/t5/vCenter-Server-Discussions/Changing-default-gateway-on-vCenter-Appliance-version-6/td-p/433249

Windows, автоматическое добавление маршрутов при включении VPN.

 Если вы заходите на VPN средставами Windows PPTP/L2TP (не CISCO и т. п. сторонними программами), то у вас есть 2 выбора:

  • весь трафик будет идти через VPN
  • только тот, для которого прописаны маршруты.

Первый вариант - по-умолчанию. Но он плох, т. к. если вы скачиваете/загружаете большие объемы информации, то это неплохо грузит маршрутизатор, который раздаёт доступ в VPN (надо шифровать траффик) и увеличивает задержку вашего соединения (пинг).

При втором варианте - нужно при каждом подключени идобавлять маршруты на те подсети, к которым вы хотите иметь доступ, находясь в VPN. Это можно автоматизировать, о чём я и расскажу ниже.

Для начала нужно отключить передачу всего траффика через VPN. Открываем Центр сетей и общего доступа (Networking and sharing center) в Панели Управления и, зайдя в свойства VPN-соединения, отключаем шлюз по-умолчанию:

Disable default gateway

Далее нам надо создать скрипт .netsh, который будет выполняться и добавлять роуты при подключении. Создаём, например, файл C:\scripts\vpn_route.netsh с содержимым:

interface ipv4
add route prefix=192.168.23.0/24 interface="Work_VPN" store=active
add route prefix=172.16.99.0/24 interface="Work_VPN" store=active
exit

где "Work_VPN" - название VPN соединения в Центре управления сетями и общим доступом. Маршрутов может быть сколько угодно, в примере указаны два.

Далее для выполнения всей магии, необходимо создать задачу в Планировщике, которая будет выполняться при подключении. Открываем консоль cmd от администратора и выполняем команду:

schtasks /create /F /TN "VPN Routes Add" /TR "netsh -f C:\scripts\vpn_route.netsh" /SC ONEVENT /EC Application /RL HIGHEST /MO "*[System[(Level=4 or Level=0) and (EventID=20225)]] and *[EventData[Data='Work_VPN']]"

где указываем путь к созданному ранее netsh файлу и снова же имя VPN соединения. Остальное менять не нужно.

Всё.

Ссылки:

  1. https://oxo42.github.io/windows/2015/03/25/windows-add-route-on-vpn-connect

Настройка fail2ban для защиты asterisk 1.4, 1.6, 1.8

 К сожалению, в сети интернет множество мамкиных хакеров, пытающихся подобрать логин без пароля или иным способом брутфорсить сервера IP телефонии, имеющие доступ из интернет. Отсеять большинство из них помогает смена внешнего порта со стандартного 5060 на какой-либо другой. Но всё же брутфорс иногда возникает, что немного раздражает и представляет призрачную угрозу.

Оговорюсь, что здесь рассмотрен вариант конфигурации довольно старых версий Asterisk - 1.8 и ниже. Для настройки Asterisk начиная с версии 10 и новее с помощью отдельного файла логирования security, советую посмотреть ссылку [1].

Для блокировки подбора пользователей/паролей для различных сервисов существует демон fail2ban, который после указанного количества ошибочных попыток добавляет правило в iptables на блокировку доступа к серверу вообще для IP адреса нарушителя (на указанное время).

Перед началом настройки необходимо установить iptables и fail2ban, если их ещё нет. Также необходимо настроить iptables так, чтобы был доступ к серверу asterisk извне - отключить или добавить правило для порта asterisk. Если вы читаете эту статью, то у вас уже всё должно быть окей с этим.

Настройка ведения логов asterisk

В первую очередь имеет смысл настроить ведение логов asterisk, чтобы информация сразу же начала собираться в нужном нам формате и виде. Для этого в каталоге конфигурации asterisk (по умолчанию это /etc/asterisk) найдите файл logger.conf и раскомментируйте (уберите точку с запятой в начале строки):

dateformat=%F %T ; ISO 8601 date format

Это нужно для того, чтобы asterisk писал в логи дату в правильном формате:
год-месяц-день часы:минуты:секунды

После этого перезапускаем сервис asterisk:

service asterisk restart

Настройка правил фильтрации

Теперь нам необходимо создать фильтр, который будет извлекать из общего потока сообщений астериска потенциально опасные события (неверный логин/пароль, попытка входа с неразрешенного IP адреса, и т.д. и т.п.). При этом нам необходимо не только обнаруживать такие потенциально опасные события, но и вычленять оттуда IP адрес, с которого было выполнено действие. То есть мы не просто ищем определенные строки в файлах событий астериска, а настраиваем правила фильтрации.
Правила фильтрации можно прописать в файле /etc/fail2ban/filter.d/asterisk.conf

Вот образец содержимого этого файла:

# Fail2Ban configuration file
#
#
# $Revision: 250 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf


[Definition]

#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
#

# Asterisk 1.8 uses Host:Port format which is reflected here

failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Username/auth name mismatch
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Device does not match ACL
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Not a local domain
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Peer is not supposed to register
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - ACL error (permit/deny)
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Username/auth name mismatch
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Device does not match ACL
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Not a local domain
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Peer is not supposed to register
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - ACL error (permit/deny)
            NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>:.*' - No matching peer found
            NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>:.*' - Wrong password
            NOTICE.* .*: No registration for peer '.*' \(from <HOST>\)
            NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)
            NOTICE.* .*: Failed to authenticate user .*@<HOST>.*
            NOTICE.* <HOST> failed to authenticate as '.*'$
            NOTICE.* .*: Sending fake auth rejection for device .*\<sip:.*\@<HOST>\>;tag=.*
            NOTICE.* .*: <HOST> tried  to authenticate with nonexistent user '.*'
            VERBOSE.*SIP/<HOST>-.*Received incoming SIP connection from unknown peer

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

В asterisk версии 1.4 и более ранних используются строки типа

"… failed for '' …"

а в asterisk 1.8 и выше - строки

"… failed for ':.*' …"

поскольку начиная с версии asterisk 1.8 в логах появилась информация о номере порта, которой нет в asterisk 1.4. Приведенный выше вариант учитывает как старые, так и новые версии asterisk, так что нет необходимости в нем что-либо менять.

Настройка изоляторов (jails) для fail2ban

Теперь нам необходимо создать описания так называемых "изоляторов" (jails) для fail2ban, т.е. "привязать" наши фильтры к fail2ban: объяснить, в каких файлах эти строки искать, и что потом делать.

Для этого откройте файл /etc/fail2ban/jail.conf

Убедитесь, что нет (или не включено) других правил, связанных с asterisk! Для этого достаточно сделать поиск по файлу по имени "asterisk" (без кавычек) и убедиться, что если такие правила есть, для каждого из них свойство enabled установлено в false или закомментировать решетками все строчки с правилами:

enabled = false

В тексте правила нужно будет указать путь к логу asterisk. По умолчанию в астериске основной файл логов называется messages, но (например) в FreePBX это будет файл под названием full (как называется файл у Вас - см. настройки астериска в файле logger.conf).

Добавляем текст правила в конец файла:

[asterisk-iptables]
# Enable the rule:
enabled  = true
# Name of filter used is asterisk in folder /etc/fail2ban/filter.d:
filter   = asterisk
# Which asterisk file is used to search:
logpath  = /var/log/asterisk/messages
# Max retries allowed:
maxretry = 5
# Action period of time in seconds:
bantime = 86400
# Period of time to search logpath for occurancies:
findtime = 3600
# What to do if there are more occurancies during findtime more than maxretry -
# Ban client's IP address using iptables and send report to admin's e-mail:
action   = iptables-allports[name=ASTERISK, protocol=all]
           sendmail-whois[name=ASTERISK, dest=admin@yourdomain.com, sender=asterisk@yourdomain.com]
# Whitelist:
#ignoreip = 192.168.1.0/24

Перезапускаем fail2ban:

service fail2ban restart

Для проверки, что fail2ban запущен успешно и правило загружено, выполните следующую команду, которая показывает статус нашего нового jail:

fail2ban-client status asterisk-iptables

В случае, если Вы только что установили fail2ban / iptables, не забудьте убедиться, что они настроены у Вас стартовать автоматически при загрузке системы!

Проверка работы fail2ban

Теперь важный этап - проверить, что всё работает так, как задумано и нигде нет ошибки. Для этого нужно использовать третий компьютер, кроме сервера asterisk и вашего, с которого вы заходите. Чтобы не забанить самого себя.

Последовательность действий для проверки работы связки fail2ban + iptables:

  1. Убедитесь, что у Вас настроен запуск iptables и fail2ban при старте компьютера.
  2. Запустите SIP-клиент (обязательно не с самого сервера asterisk или того, с которого вы на него зашли удалённо, а с другого компьютера!), и указав неверное имя пользователя для авторизации (IP адрес или доменное имя сервера asterisk должно быть верным), попробуйте авторизоваться более 5 раз (как указано в параметре maxretry.

В качестве тестового sip клиента можно использовать программу sipsak, которая работает из командной строки Linux:

aptitude install sipsak
sipsak -U -s sip:test1@asterisk_server_IP_or_domainname

получите 5 раз сообщения вроде:

received:
SIP/2.0 403 Forbidden (Bad auth)
...
error: didn't received '200 OK' on register (see above). aborting

И на maxretry+1-й раз:

send failure: Connection refused

А также письмо на указанный e-mail, что сигнализирует о том, что всё настроено верно.

Проверяем также iptables на сервере asterisk:

iptables -L -n

В цепочке правил Chain f2b-ASTERISK (1 references) должен появится IP адрес ПК, с которого запускали клиент sip.

Ссылки:

  1. http://linux.mixed-spb.ru/asterisk/iptables_setup.php
  2. https://voipmagazine.wordpress.com/2014/11/18/sip-stress-testing-part-2-sipsak/

Апгрейд Oracle Linux с версии el6 до el7

И вот это долгооткладываемое время настало - пришлось апгрейдить сервер под управлением ОС Oracle Linux 6.5 до 7й версии (на данный момент последняя 7.9).

Сначала необходимо обновить систему до последней версии (репозиторий public yum latest должен быть активным):

yum upgrade -y

В моём случае я получал ошибку [Errno 14] problem making ssl connection при попытке что-либо обновить или установить с репозитория public-yum.oracle.com наподобии этой:

error.JPG

Это произошло из-за того, что пакет openssl в релизе 6.5, который был установлен на сервере, был старой версии и не поддерживает более усиленное шифрование, которое используется в репозитории. Проблему эту решил тем, что подмонтировал диск Oracle Linux 6.10 как репозиторий и обновил пакет opensssl с диска. После этого yum стал нормально заходить на интенет-репозиторий. Образ можно скачать тут: https://edelivery.oracle.com/osdc/faces/SoftwareDelivery

Чтобы сделать локальный диск репозиторием, нужно его примонтировать и добавить repo-файл в /etc/yum.repos.d/local.repo

mount /dev/cdrom /mnt/cdrom
[InstallMedia]
name=DVD for Red Hat Enterprise Linux 7.9 Server
metadata_expire=-1
gpgcheck=1
enabled=1
baseurl=file:///mnt/cdrom/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

Теперь необходимо, чтобы ядро линукс было версии 3 или выше. Версия 2 не поддерживается для обновления. Если необходимо - обновите ядро до версии 3/4/5 и загрузитесь в него. https://docs.oracle.com/cd/E37670_01/E64030/html/ol_upuek2_rn64.html

Проверка версий установленных ядер:

yum list installed kernel

Далее необходимо установить необходимые пакеты, для чего необходимо активировать репозиторий Addons в конфиг-файле по пути /etc/yum.repos.d/public-yum-ol6.repo (название файла может отличаться):

[public_ol6_addons]
name=Oracle Linux $releasever Add ons ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL6/addons/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

Изменяем enabled на 1, сохраняем, делаем снова yum update. Если понадобиться, то и yum clean all, затем ставим пакеты:

yum install redhat-upgrade-tool preupgrade-assistant preupgrade-assistant-el6toel7 preupgrade-assistant-el6toel7-data-0 preupgrade-assistant-tools preupgrade-assistant-ui openscap

Для проблемных пакетов можно применять опцию --skip-broken. После этого запускаем утилиту проверки совместимости обновления и ждём окончания её работы:

preupg

Результат её работы будет лежать в виде HTML-оформленного отчета в /root/preupgrade/result.html

Необходимо внимательно просмотреть этот отчёт, в нём будут указаны все проблемы, которые были найдены, рабитые по категориям. Рекомендуется обратить внимание и исправить все проблемы категории Error, Needs Action, Needs Inspection. Некоторые проблемы потребуют проверки после обновления, потому сохраните себе отчёт.

Можно перезапускать проверку сколько угодно раз после применения исправлений, результаты проверок будут лежать в папке /root/preupgrade-results

В моём случае ошибка была только одна - система была настроениа на загрузку EFI и обновление вроде как не поддерживается. Оно поддерживается на самом деле, но нужно быть готовым к тому, что система может не загрузиться сразу. Поэтому в случае, если система настроена на загрузку как UEFI/EFI, а не BIOS/Legacy, то обязательно убедитесь, что у вас есть загрузочный диск Oracle Linux 7 и вы можете с него загрузиться. Это также может быть образ, смонтированный как Vertual media в случае брендовых серверов Dell, IBM, HP.

Запускаем утилиту апгрейда релиза с ключем --force - чтобы обновиться несмотря на ошибку с UEFI, используя заранее скачанный на сервер образ:

redhat-upgrade-tool-cli --iso=OL7_ISO --debuglog=/tmp/upgrade.log --cleanup-post --force

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

redhat-upgrade-tool-cli --network=7.5 --instrepo=OL7_repo_url --debuglog=/tmp/upgrade.log --cleanup-post

redhat-upgrade-tool-cli --device=/dev/cdrom --debuglog=/tmp/upgrade.log --cleanup-post

Дожидаемся окончания обновления. В моём случае после второй перезагрузки сервер не загрузился. Как я выяснил, в Oracle Linux el6 используется загрузчик grub, а в el7 - grub2. Обновление происходит автоматически для типа загрузки BIOS/Legacy, а вот для UEFI скрипт обновления сломал старый загрузчик, но не установил корректно новый - и система осталась без bootloader'а. Совсем. Даже нет возможности зайти в консоль восстановления.

Вот здесь нам и пригодится скачанный образ/диск Oracle Linux 7.9. Загружаемся с диска и в стартовом меню выбираем Troubleshooting -> Rescue installed system. Ниже показан пример только в случае с CentOS:

Нажимаем Enter и входим в установленную систему с помощью chroot:

chroot /mnt/sysimage

Теперь монтируем установочный диск как репозиторий (если есть доступ в интернет - не нужно), как было описано выше, и удаляем загрузчик совсем чтобы избежать конфликта версий зависимостей (как было у меня):

yum remove grub2

Теперь устанавливаем необходимые пакеты:

yum install grub2 grub2-efi-x64 grub2-efi-x64-modules.noarch grub2-pc grub2-tools grub2-tools-extra 

Если установить не все модули, то будет ошибка:

grub-install: error: /usr/lib/grub/x84_64-efi/modinfo.sh doesn't exist. Please specify --target or --directory.

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

grub2-install --target=arm64-efi --efi-directory=/boot/efi --bootloader-id=grub2

Возможно придётся сначала создать конфиг для grub командой:

grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

Выходим из chroot и перезагружаемся:

exit
reboot

Система должна успешно загрузиться в релиз 7. Не забываем проверить по отчёту всё ли обновилось хорошо там, где были замечания.

Ссылки:

  1. https://docs.oracle.com/en/operating-systems/oracle-linux/7/install/ol7-upgrade.html
  2. https://alldba.com/upgrade-oracle-linux-ol-6-to-ol-7/
  3. https://unix.stackexchange.com/questions/574170/grub2-install-error-modinfo-sh-missing-common-solutions-attempted
  4. https://community.oracle.com/tech/apps-infra/discussion/4490806/errno-14-problem-making-ssl-connection
  5. https://www.thegeekdiary.com/centos-rhel-7-how-to-reinstall-grub2-from-rescue-mode/
  6. https://docs.oracle.com/cd/E37670_01/E64030/html/ol_upuek2_rn64.html
  7. https://access.redhat.com/solutions/1355683
  8. https://bugzilla.redhat.com/show_bug.cgi?id=1509302
  9. https://docs.fedoraproject.org/en-US/quick-docs/bootloading-with-grub2/

19 июн. 2018 г.

Развод от ООО Lifecell сотоварищи.

В общем, новый старый развод от мобильных операторов со мной случился. В начале июня приходит мне смс, что вы мол подписаны на какой-то player18.top за 5 грн/день бла-бла чтоб отписаться позвоните/перейдите. Ну я смотрю, номера не оператора, думаю - да какой-то развод, позвоню, снимет бабки, а по ссылке вирус.

Оказался таки развод, но не такой, как я думал. Оно таки подписало, хотя я никогда о таком сервисе не слышал, в глаза не видел и ни на что не подписывался. Сожрало у меня 95 грн, т е всё, что было на счете.

Я ж, как и любой наверное "подвинутый пользователь"+, сначала начал гуглить. Нашел отзывы https://www.otzyvua.net/life/review-478197 - тут по ссылке детально описывают, как развод работает.

После пошел я разбираться в Центр обслуживания абонентов лайфселл. Мне там ничего внятного не смогли ответить, кроме "ставьте антивирус" и "не держите денег на счету", "вирусы, черви, даркнет" (как-будто я домохозяйка и к айти не имею отношения), но хоть отписали от этой хрени.

Позвонил я дальше им в центр поддержки. Говорю мой, что за дела, что практически любой может влезть на мой мобильный счет и списывать оттуда деньги. Они отвечают, что это "авторизованный контент-провайдер". Но в ЦОА мне говорили, что это вирус... Выходит, они авторизовывают вирусы? To cut long story shot, поставили они для моего номера блокировку всяческих подписок, хотя в ЦОА говорили, что такой функции нет.

Далее, я подумал, что может есть какой у них механизм фидбека и жалобы, начал на сайте lifecell онланй чат с представителем компании с целью оставить жалобу на этого контент провайдера. Историю переписки я тут ниже прикреплю, но если коротко их ответ был "я не я, и корова не моя - разбирайтесь сами с контент-провайдером, мы тут ни при чем и нам вообще насрать на своих клиентов, спасибо за звонок". Кстати, операторша написала, что должна была быть СМС с кодом подтверждения при подписывании - ничего такого не было.

Отписали меня от этой подписки "третьей фирмы" работники самого лайфселла. Т. е. они в курсе и всё знают и скорее всего крышуют.

Вот сейчас сижу и думаю, что с этим делать. В полицию идти? Но ущерб на 95 грн, они наверное откажутся заниматься этим. Хотя это только у меня 95, а судя по отзывам, жертв этой аферы - десятки. Может в общество по защите прав потребителя или в новости какие пойти? Но законно на них давить в нашей банановой Украине не получится - по ссылке там чувак описывает, что если ты нажал капчу, то ты зная или не зная согласился на условия договора. А то что они эту картинку/ссылку/капчу подсунули мошенническим способом - никого не волнует в юридическом плане. Кстати, на сайте этого говноконтент-провайдера реквизитов нет никаких, кроме названия фирмы ООО "UMG", которое может быть фейковое.

Я вот кстати, так и не могу вспомнить, как я на эту хрень подписался вообще. Вроде левых кратинок не нажимал. Кто что думает - пишите в комментарии.

Да, и осторожнее с капчами, всплывающими окнами, ссылками и картинками когда серфите с мобильного.

Сайты говноконтент-провайдера:
http://player18.top/
http://mob-help.net/

Скрин СМС прилагаю

также переписка с оператором:

Нижче наведено історію Вашої розмови з lifecell.

12:33:23, Представник lifecell: Добрый день, Евгений! Меня зовут Евгения.
12:33:48, Евгений: Здравствуйте. Хотел бы оставить жалобу на контент-провайдера player18.top
12:34:05, Евгений: Они мошенническим способом без моего согласия подписали меня на платный свой контент
12:34:53, Евгений: в службе поддержки сказали, что это "авторизованный контент-провайдер", в центре обслуживания абонентов рекомендуют установить антивирус. Но если это вирус, то почему он авторизован?
12:35:27, Представник lifecell: Передать жалобу на контент-провайдера возможность, к сожалению, отсутствует.
12:35:59, Представник lifecell: Я могу установить по номеру блокировку на активацию подобных услуг в интернете от контент-провайдеров.
12:36:11, Евгений: Да, установите пожалуйста
12:36:28, Представник lifecell: Хорошо. Я должна убедиться, что указанный номер сейчас у Вас. Телефон рядом с Вами?
12:36:33, Евгений: Да
12:36:49, Представник lifecell: Пожалуйста, укажите пароль, который поступил.
12:37:01, Евгений: 369
12:38:04, Представник lifecell: Евгений, на сколько вижу, то блокировка уже установлена по номеру.
12:38:25, Евгений: Это хорошо, но хотелось бы, чтобы вы передали мою жалобу администрации комапании
12:38:37, Представник lifecell: Такая возможность отсутствует.
12:39:03, Евгений: А как тогда защититься от подобных мошшенических действий? допустим, не мне а моим родственникам?
12:40:28, Представник lifecell: Все мобильные операторы сотрудничают с рядом контент-провайдеров, которые являются непосредственными поставщиками услуг – в данном случае ТОВ "Українська Мобiльна Група". Мобильный оператор не является прямым провайдером услуги, то есть, если была заказана услуга, она заказывается у самого контент-провайдера. Ваш баланс в таком случае выступает в роли источника тарификации. Если Вы желаете узнать подробнее об услугах и способе активации услуг, достаточно обратиться на горячую линию контент-провайдера 048 737 73 66 с 9:00 до 21:00 без выходных.
12:41:34, Представник lifecell: Так же по желанию можно установить ограничение с нашей стороны на активацию услуг контент-провайдеров.
12:41:39, Представник lifecell: Остались ли у Вас еще вопросы?
12:41:41, Евгений: Это я уже понял, но вот я не доволен действиями этого контент провайдера, который без моего ведома подписал меня на свои услуги. У вас же есть корпоративная репутация, этика, совесть в конце концов? Я хочу, чтобы ваша компания воздействовала на этого контент провайдера
12:42:09, Евгений: Причем, я поискал в интернете, у многих людей такая проблема с этим контент провайдером
12:42:17, Евгений: в августа 2017 года отзывы
12:42:30, Евгений: т е уже почти год они этим занимаются - разводят людей на деньги
12:42:35, Представник lifecell: По деталям активации и условий предоставления услуг рекомендую обращаться на линию поддержки этой компании.
12:42:42, Евгений: а ваш Лайфселл - получается - им способствует
12:43:15, Евгений: Ладно, тогда я оставлю негативные отзывы на лайфселл везде, где только можно и напишу в новости вместе с этой перепиской
12:43:29, Евгений: пускай страдает ваша репутация, раз совести нет
12:43:46, Евгений: (не ваша лично, а компании, естественно)
12:43:57, Евгений: Или дайте мне поговорить с администрацией
12:44:13, Представник lifecell: К сожалению, такая возможность отсутствует.
12:44:57, Представник lifecell: Возможно, у Вас остались другие вопросы?
12:44:58, Евгений: Т е вы признаете, что ваша компания не препядствует мошшеническим действиям этого контент-провайдера и негативные отзывы клиентов для вас не имеют смысла??
12:45:11, Евгений: ?*
12:45:28, Евгений: Я ваш клиент и я не доволен
12:46:19, Представник lifecell: Услуга контент-провайдера не подключается автоматически. Для того, чтобы сервис контент-провайдера подключился, необходимо: - пройти по баннеру или ссылке соответствующего контента; - ввести номер на отобразившейся странице; - ввести код, который указан на изображении; - ввести код, полученный в SMS.
12:46:36, Евгений: мне НЕ приходила СМС с кодом активации
12:46:57, Представник lifecell: Соответсвенно активация происходит после совершения абонентом какого-либо действия на сайте контент-провайдера.
12:47:30, Евгений: но я не совершал это действие намеренно, я про этого провайдера первый раз услышал из смс о том, что услуга уже подключена
12:47:42, Евгений: могу предоставить скриншот смс с мобильного телефона
12:48:03, Представник lifecell: Более детальная информация о подключении у нас отсутствует, уточняйте у контент-провайдера.
12:48:12, Представник lifecell: Остались ли у Вас еще вопросы?
12:48:33, Евгений: Ага, отлично. Вам значит всё равно, что ваших клиентов обманывают пользуясь вашими сервисами
12:49:25, Представник lifecell: Евгений, на Ваши вопросы были предоставлены ответы. В случае, если у вас отсутствуют другие вопросы, я буду вынуждена завершить наш диалог. Скажите, пожалуйста, есть у вас другие вопросы по услугам lifecell?
12:49:35, Евгений: Окей, будут отзывы, будут новости, и так далее. Have a nice day.


4 окт. 2016 г.

TCP dump в Wireshark без служебной информации.

Например, нам необходимо посмотреть в Wireshark дамп, но служебная информация вроде ретрансмиссии, дубликатов пакетов (в случае бондов) и прочего мешает анализировать. Чтобы не отображать её применяем фильтр:

!tcp.analysis.flags

16 июл. 2016 г.

Обновление firmware на сетевых адаптерах Solarflare серий SFN5xxxx, SFN6xxx, SFN7xxx и SFN8xxx в ОС семейства RHEL.

Вначале скачиваем RPM с утилитой (Solarflare Linux Utilities RPM (64bit)) с сайта производителя.

Затем на сервере выполняем команду:

sfupdate

Solarstorm firmware update utility [v6.0.0]
Copyright Solarflare Communications 2006-2015, Level 5 Networks 2002-2005

eth0 - MAC: **-**-**-**-**-**
    Firmware version:   v6.1.0
    Controller type:    Solarflare SFC9000 family
    Controller version: v3.3.2.1000
    Boot ROM version:   v4.5.2.1010

The Boot ROM firmware is up to date
The controller firmware is up to date

eth1 - MAC: **-**-**-**-**-**
    Firmware version:   v6.1.0
    Controller type:    Solarflare SFC9000 family
    Controller version: v3.3.2.1000
    Boot ROM version:   v4.5.2.1010

The Boot ROM firmware is up to date
The controller firmware is up to date

В данном примере прошивки на адаптерах последней версии, но если потребуется обновление, то выполняем команду:

sfupdate --write 

Соглашаемся (Y, Enter) и ждем окончания процесса обновления.

На всякий случай напомню, что в процессе обновления может пропасть доступ к серверу по сети, потому обновление лучше выполнять не через ssh, а находясь у непосредственно сервера или используя системы удаленного управления, поставляемые вместе с сервером (iDRAC (Dell), IMM (IBM), iLO (HP) etc.)



Получение UUID устройства в ОС Linux

Иногда необходимо получить UUID устройства в ОС Linux для только что добавленных устройств или в какой-либо иной ситуации. Например - чтобы настроить сетевую карточку в RHEL в файле /etc/sysconfig/network-scripts/ifcfg-eth0 есть параметр UUID=

Получаем UUID командой:

uuidgen <DEVICE>

Например, 

uuidgen eth0


27 апр. 2016 г.

Как загрузить файл на удаленный FTP из командной строки

Проще всего с помощью curl:

curl -T my-local-file.txt ftp://ftp.example.com --user user:secret


Эта команда загрузит файл в корневую директорию на удаленном FTP сервере.

Источник:

1. http://superuser.com/questions/323214/how-to-upload-one-file-by-ftp-from-command-line

15 февр. 2016 г.

Как добавить Alias на сетевой интерфейс в OS Solaris

Бывает нужно добавить второй IP к существующему интерфейсу в OS Solaris. Делается этос ледующим образом:

1. Скопировать уже существующий конфиг с именем:1

cp /etc/hostname.eth0 /etc/hostname.eth0:1

2. Заменяем название интерфейса внутри скопированного конфига на новое, например:

server-eth0 на server-eth0-v1

3. Создаем новый интерфейс командой ifconfig plumb:

ifconfig eth0:1 plumb

4. Назначаем IP адрес новому интерфейсу:

ifconfig eth0:1 192.168.1.135 netmask 255.255.255.0 up

5. Проверяем, что всё поднялось:

ifconfig -a
eth0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 192.168.1.135 netmask ffffff80 broadcast 192.255.255.255


ping 192.168.1.135
192.168.1.135 is alive


6. Чтобы при перезагрузке и при рестарте интерфейса сохранялись настройки IP, добвляем адрес в файл /etc/hosts

192.168.1.135 server-eth0-v1

Чтобы удалить интерфейс выполняем команду:

ifconfig eth0:1 unplumb

Источники:

1. http://ciphermethod.com/how-to-create-solaris-virtualalias-interface/

1 сент. 2015 г.

Настройка сканера отпечатков пальцев в Windows 10

Чтобы настроить вход по сканированию отпечатка пальцев в Windows 10, необходимо:

1. Зайти в Settings (Настройки), далее Accounts (Аккаунты) и там выбрать Sign-In Options (Опции входа).


2. Установить PIN (без этой опции меню натсройки отпечатков недоступно)

3. Теперь можно настроить т. н. Windows Hello:


Нажимаем Get Started и вводим сканы отпечатков пальцев:


Готово. Теперь можно заходить в систему по отпечатку плаьца.

Защита от рекламы с помощью редактирования файла hosts

Плагины вроде AdBlock для браузеров помогают бороться с рекламой, но что делать, чтобы побороть рекламу в других приложениях, где нет таких плагинов? Выход - использовать блокировку рекламных сайтов с помощью файла hosts.

Это очень эффективное решение, т. к. программы не могут отрезолвить адрес веб-сайта с рекламой (файл hosts, к которому идет вначале обращение, отдает, что сайт оказывает на адрес 0.0.0.0 или 127.0.0.1)

Чтобы заблокировать рекламу с помощью файла hosts для Windows делаем следующее:

1. Берем файл со списком рекламных сайтов https://drive.google.com/open?id=0B8i9gjmgPvLZcmpoVl9FOER6N1k

2. Открываем с правами администратора Notepad и уже в нем открываем файл C:\Windows\System32\drivers\etc\hosts

3. Просто добавляем содержимой файла, скачанного ранее, в конец и сохраняем.

Для Linux тоже самое, только другие пути и программы :)

nano /etc/hosts

Источники:

1. http://winhelp2002.mvps.org/hosts.htm

Как удаленно перезагрузить Dell iDRAC

Если возникли проблемы и веб-интерфейс недоступен, но есть доступ по сети, то можно перезагрузить iDRAC удаленно. Чтобы удаленно перезагрузить iDRAC:

1. Скачать с сайта Dell DRAC Tools, includes Racadm (64bit).
Для Windows http://www.dell.com/support/home/us/en/19/Drivers/DriversDetails?driverId=K7F2N
Для Linux http://www.dell.com/support/home/us/en/19/drivers/driversdetails?c=us&l=en&s=gen&driverid=R171069

2. Установить DRAC Tools.

3. Открыть cmd и выполнить команду (возможно потребуется переход в папку, куда установлен DRAC Tools, если установщик не добавил ее в $PATH):

racadm -u root -p calvin -r 192.168.1.1 racreset soft

Доступы и IP, соответственно, подставить ваши.  root/calvin - это логин и пароль по-умолчанию для iDRAC.

Сам сервер при этом не перезагрузится, только карточка.

Также можно поменять пароль:

racadm -u root -p calvin -r 192.168.1.1 config -g cfgUserAdmin -o cfgUserAdminPassword -i 1 password

Если что-то случилось с настройками совсем плохое и надо сбросить настройки до factory settings, то используем компанду:

racadm -u root -p calvin -r 192.168.1.1 racresetcfg

20 июл. 2015 г.

Как добавить статический маршрут на vmware ESXi 4/5.0 и 5.1/5.5

Для добавления маршрута на ESXi 4.x и 5.0 нужно зайти по SSH на сервер и выполнить команду:

esxcfg-route -a <целевой_IP_подсети> <маска> <шлюз>

Например, чтобы задать маршрут к сети 192.168.1.0 с маской /24 (255.255.255.0) через роутер с адресом 192.168.2.1, нужно выполнить:

esxcfg-route -a 192.168.1.0/24 192.168.2.1

или

esxcfg-route -a 192.168.1.0 255.255.255.0 192.168.2.1

Для ESXi 5.0 роуты не сохраняются после перезагрузки, потому необходимо также вписать команду выше в файл /etc/rc.local - чтобы она выполнялась при загрузке гипервизора и прописывала нужный маршрут:

vi /etc/rc.local

Для ESXi 5.1/5.5 команда другая:

esxcli network ip route ipv4/ipv6 add --gateway <шлюз> --networkI <шлюз>/<маска> 

Т. е. для примера выше будет:

esxcli network ip route ipv4 add --gateway 192.168.2.1 --network 192.168.1.0/24

Для просмотра маршрутов необходимо использовать команду:

esxcfg-route -l


Источники:

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2001426

19 мая 2015 г.

Удобная настройка автозагрузки из консоли в Debian

Для управления демонами, стартующими при загрузке сервера, в Debian существует утилита update-rc.d. Но её использование не особо наглядно и удобно.

Можно установить тулзы для управления автозагрузкой с использованием ncurses - rcconf и sysv-rc-conf:

aptitude install rcconf sysv-rc-conf

Далее запускаем sysv-rc-conf:


В принципе, сверху и снизу написаны команды управления:
[Пробел] - устанавливаем/убираем загрузку на выбранном стрелками уровне исполнения, 
[=] - можно запустить сразу выбранный сервис, 
[-] - остановить выбранный сервис.

А вот пример использования утилиты rcconf:

15 мая 2015 г.

Ошибка клиента svn: Cannot negotiate authentication mechanism

Ошибка

SVN Checkout: svn: Cannot negotiate authentication mechanism

возникла у меня при попытке мониторинга сервера SVN через плагин check_svn в Nagios.
Т. к. этот плагин является всего лишь клиентом для svn таким же, как и другие, то данная ошибка может возникать и при собственно работе с удаленным svn сервером.

Решается она на стороне клиента путем установки пакета cyrus-sasl-md5 (для RHEL: Oracle Linux, CentOS, Fedora и т. п.):

yum install cyrus-sasl-md5

Источники:

1. http://www.question-defense.com/2009/04/29/svn-checkout-svn-cannot-negotiate-authentication-mechanism