Показаны сообщения с ярлыком linux. Показать все сообщения
Показаны сообщения с ярлыком linux. Показать все сообщения

четверг, 19 декабря 2019 г.

Конвертация .key файла ключа в gpg-формат для проверки подписи apt-get

Рассмотрим на примере nginx.org.
Разработчик собирает пакеты под дистрибутивы Debian/Ububntu и подписывает их своим ключом. Далее нам предлагают импортировать этот ключ в default apt keyring и пользоваться:
sudo apt-key add nginx_signing.key
Ключ будет добавлен в /etc/apt/trusted.gpg, им можно управлять с помощью apt-key.

Есть альтернативный вариант - создать отдельный keyring для конкретного или нескольких ключей, и распространять его обычным копированием в /etc/apt/trusted.gpg.d/ на требуемом количестве окружений.

Делается это путём нехитрого набора действий (на данном примере):
wget http://nginx.org/keys/nginx_signing.key
gpg --no-default-keyring --keyring ./tmp.gpg --import nginx_signing.key
gpg --no-default-keyring --keyring ./tmp.gpg --export > /etc/apt/trusted.gpg.d/nginx.gpg
Созданный таким образом ключ теперь можно распространять с помощью этих ваших шефов/анзиблов/etc.

Updated on 2019-12-19

вторник, 20 ноября 2018 г.

понедельник, 18 декабря 2017 г.

Конвертируем время в лог-фале из формата TAI64N в человеко-читаемый вил

В логах qmail время пишется в формате TAI64N, что иногда доставляет неудобств.
Решается перенаправлением лога через pipe в исправляющий это через pipe в perl-код.
Выглядит как-то так:
tail -F /var/log/qmail/*/current | perl -MPOSIX=strftime -npe 's{\@4 (\w{15}) (\w{8}) }{strftime( "%Y-%m-%d %H:%M:%S.".sprintf("%09s",hex($2)),localtime hex($1) )}ex' 

вторник, 1 сентября 2015 г.

tail -f on rapidly truncated file

При частой перезаписи файла (например, при ротации лог-файла) tail -f останавливается на первом таком событии. Для автоматического подключения к новому файлу следует использовать команду:
tail -f --follow=name --retry <filename>
В случае отсутствия функционала у бинарного tail (например, на busybox) можно использовать следующий bash-скрипт:
#!/bin/bash 

PID=`mktemp`
while true;
do
  [ -e "$1" ] && IO=`stat -c %i "$1"`
  [ -e "$1" ] && echo "restarting tail" && { tail -f "$1" 2> /dev/null & echo $! > $PID; }

  # as long as the file exists and the inode number did not change
  while [[ -e "$1" ]] && [[ $IO = `stat -c %i "$1"` ]]
  do
     sleep 0.5
  done
  [ ! -z $PID ] && kill `cat $PID` 2> /dev/null && echo > $PID
  sleep 0.5
done 2> /dev/null
rm -rf $PID

вторник, 7 июля 2015 г.

Перенос процесса в screen

Иногда возникает необходимость перенести важный долго работающий процесс из консоли без screen в screen для последующего закрытия консоли. Этого можно достичь с помощью утилиты reptyr (GitHub).
Установка в Debian/Ubuntu:
sudo apt-get install reptyr
Использование (в новой консоли):
screen -S <screen name>
reptyr <PID of running process to attach>

среда, 20 мая 2015 г.

Чем заняты inode в /

Сканирование всех директорий в / (без прохода по другим файловым системам) и вывод сортированного списка директорий от наименьшего количества занятых inode к наибольшему:
find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n

среда, 21 января 2015 г.

Инкрементация в bash

(( x++ )) или (( x += 1 )) или let x++

Создание раздела на большом диске

# parted /dev/<диск>
mklabel gpt
unit TB
mkpart primary 0 <кол-во терабайт диска>
print
quit

Горячая замена жестких дисков

При горячей замене жесткого диска, его следует сначала отмонтировать:
umount /dev/sdX

Затем записать все буферы из памяти на физические накопители:
sync

И удалить жесткий диск из списка устройств:
echo 1 >/sys/block/sdX/device/delete


Жесткий диск можно отключать.

После подключения нового диска, следует выполнить поиск новых устройств:
for i in $(ls /sys/class/scsi_host/); do echo "- - -" > /sys/class/scsi_host/$i/scan; done

SSH-тоннель

ssh -g -f -ND <IP сервера>:<порт SOCKS> <SSH логин>@<IP сервера> -p<порт SSHd>

Запуск tcpdump не из под root

groupadd tcpdump
addgroup <username> tcpdump
chown root.tcpdump /usr/sbin/tcpdump
chmod g+rx /usr/sbin/tcpdump
setcap "CAP_NET_RAW+eip" /usr/sbin/tcpdump