Проверка SSL-сертификата у домена

Для проверки домена по эмитенту и сроку SSL-сертификата можно использовать следующую конструкцию:

echo | openssl s_client -connect ya.ru:443 -servername ya.ru 2>/dev/null | openssl x509 -noout -subject -issuer -dates

Выдаст:

subject= /C=RU/ST=Moscow/L=Moscow/O=Yandex LLC/CN=*.xn--d1acpjx3f.xn--p1ai
issuer= /C=BE/O=GlobalSign nv-sa/CN=GlobalSign ECC OV SSL CA 2018
notBefore=Aug 19 10:19:21 2022 GMT
notAfter=Feb 16 20:59:59 2023 GMT

Аналог команд whereis / which в Windows

В Windows 10/11 в качестве аналога команд whereis/which из *unix (выводят полный путь до местоположения исполняемого файла/команды/сценария) можно использовать следующую команду:

gcm <command>

Пример:

> gcm node
Command Type Name Version Source
----------- ---- ------- ------
Application node.exe 18.12.1.0 C:\webos_cli\bin\node.exe

[Docker] Команды по контейнерам

Список всех контейнеров:

sudo docker container ls --size

Размер контейнеров и volums:

sudo docker system df --verbose

Информация об образе:

sudo docker inspect <image name>
sudo docker image history <image name>

Возвращает таблицу со списком идентификаторов, репозиториев и тегов для каждого образа контейнера:

sudo docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

Перезапуск контейнера:

sudo docker restart <container id>

[Linux] Очистка лог-файлов

Логи по умолчанию хранятся в /var/logs. Узнать размер занимаемых данных:

/var/log# du -sh */ | sort -hr

800.1M journal/
6.2M atop/
1.7M nginx/
1.5M exim4/
344K apt/
124K mysql/
96K proftpd/
72K apache2/
8.0K installer/
4.0K unattended-upgrades/
4.0K ntpstats/
4.0K dbconfig-common/

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

urnalctl --vacuum-size=100M
journalctl --vacuum-time=7d

Затем очищаем:

rm -r /var/log/journal/

[macOS] Запуск веб-сервера одной командой

Чтобы поднять примитивный локальный веб-сервер на macOS, необязательно качать из сети сторонние решения (XAMPP, OpenServer…) — все что нужно, скорее всего, уже работает «из коробки».

Перейдите в директорию, которая будет являться корнем веб-сервера и выполните следующую команду:

Если установлен Python 2:

python -m SimpleHTTPServer 8000

Если установлен Python 3:

python3 -m http.server --cgi 8080

Если установлен PHP:

php -S localhost:2222

Сервер будет работать по адресу http://localhost:<порт>

Если установлен npm:

npm i -g serve
serve

Mikrotik — удаленный доступ через RDP

В офисе есть компьютер на ОС Windows. Сеть имеет «внешний» IP-адрес, используется роутер Mikrotik hAP ac².

Задача: необходимо получить к компьютеру доступ извне, через штатную утилиту «Удаленный рабочий стол».

Решение: заходим в панель управления Mikrotik, далее:

  1. В меню выбираем пункт IP -> Firewall
  2. Открываем вкладку NAT
  3. Создаем новое правило:
    1. Chain: dnsnat
    2. Src. Address: <внешний IP-адрес компьютера, с которого будем подключаться > (опционально, для защиты от вредителей)
    3. Protocol: (6) tcp
    4. Dst. Port: любая комбинация (к примеру, 14801)
    5. In. Interface: all ethernet
    6. Action: dns-nat
    7. To Address: <локальный IP-адрес компьютера, к которому будем подключаться >
    8. To Ports: 3389
  4. Сохраняем сделанные настройки
  5. Через «Удаленный рабочий стол» подключаемся к <внешний IP-адрес офисной сети>:<порт> Если все сделано правильно, то роутер направит данный запрос к нужному компьютеру.

Переход сервера на Debian Stretch

Обновил сервер с Debian 8 (Squeeze) до Debian 9 (Stretch).

Хотел сразу перейти на Debian 10, но на OpenVZ-тарифах он не поддерживается из-за различий требования к ядру.

К слову, в Debian 9 теперь nginx версии 1.16.1, что позволило нормально перейти на HTTP/2.

[WordPress] 502 ошибка при открытии админки

Столкнулся с проблемой, что при попытке открыть админку WordPress, отображалась ошибка 502 Bad Gateway.

Отключение плагинов не помогло. Стал копать в разных направлениях, но тоже безрезультатно.

В итоге помог перезапуск FastCGI:

php5-fpm restart

Unit nginx.service entered failed state

При попытке перезапустить nginx получаем ошибку:

nginx restart

[....] Restarting nginx (via systemctl): nginx.serviceJob for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' for details.
failed!

Проверяем статус:

systemctl status nginx.service

nginx.service - nginx - high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code) since Sun 2019-12-15 16:42:45 MSK; 1min 48s ago
     Docs: http://nginx.org/en/docs/
  Process: 12694 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 16448 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)
 Main PID: 5865 (code=exited, status=0/SUCCESS)

Проверяем файл конфигурации:

nginx -t -c /etc/nginx/nginx.conf

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Пробуем вылечить:

fuser -k 80/tcp
fuser -k 443/tcp
/etc/init.d/nginx restart

Проверяем:

[ ok ] Restarting nginx (via systemctl): nginx.service.