IPTables — Удаления правила по номеру

Смотрим правила во всех цепочках:

iptables -L --line-numbers

Можно посмотреть в конкретной цепочке:

iptables -L INPUT --line-numbers
iptables -D INPUT НОМЕР_ПРАВИЛА

Смотрим правила в NAT’е:

iptables -t nat -L POSTROUTING --line-numbers
iptables -t nat -D POSTROUTING НОМЕР_ПРАВИЛА

Ubuntu — rc.local

Столкнулся с тем, что в Ubuntu нет привычного c CentOS'а мне файла "rc.local", решение следующее.

Создаем сервис:

vim /etc/systemd/system/rc-local.service

со следующим содержимым:

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

Создаем файл "rc.local" и добавляем ему бит выполнения:

touch /etc/rc.local
chmod +x /etc/rc.local

Читать далее "Ubuntu — rc.local"

SaltStack — Установка

Установка Master

CentOS 7

yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm

yum install salt-master salt-minion salt-ssh salt-syndic salt-cloud salt-api

Добавим в автозапуск и запустим:

systemctl enable salt-master
systemctl start salt-master

Для установки могут потребоваться зависимости, которые есть в EPEL репозитории

yum install epel-release

Читать далее "SaltStack — Установка"

Git — Diff файла между последним и предпоследним коммитом

Данная строка проверяет изменение файла "configmap.yml" между последним и предпоследним коммитом, если в нем было изменение, то выполняется апдейт configmap в Kubernetes.

if git diff HEAD^ HEAD .jenkins/configmap.yml | grep -q configmap; then ${KUBECTL} apply -f .jenkins/configmap.yml; fi

SSL — Проверка срока действия сертификата

Скрипт получает значение, через сколько дней истекает срок действия  сертификата и отправляет значений в "Zabbix" через "zabbix-sender".

Содержание скрипта:

#!/bin/bash

DOMAIN="$(hostname -f)"
DEADLINE="$(echo | openssl s_client -servername $DOMAIN -connect $DOMAIN:443 2>/dev/null | openssl x509 -noout -dates | grep "notAfter" | cut -d "=" -f2)"
SSL_LAST_DAY="$(date +%s -d "$DEADLINE")"
TODAY="$(date +%s)"
let "SSL_LEFT_DAYS = ( $SSL_LAST_DAY - $TODAY ) / 86400"

# WRITE TO LOG OR SEND TO ZABBIX
echo $SSL_LEFT_DAYS > /var/log/ssl_payday

 

Нужно убедится, что в качестве FQDN хоста задан необходимый домен. Или получать его другим образом, к примеру если у вас на хосте больше одного домена.

Linux — Поиск приложения в составе пакетов

К примеру нужно узнать, в состав какого пакета входит утилита "mkpasswd"

CentOS:

yum provides mkpasswd

Результат:

[[email protected] ~]# yum provides mkpasswd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.reconn.ru
 * epel: mirror.logol.ru
 * extras: dedic.sh
 * rpmforge: mirror.awanti.com
 * updates: mirror.reconn.ru
expect-5.45-14.el7_1.x86_64 : A program-script interaction and testing utility
Repo        : base
Matched from:
Filename    : /usr/bin/mkpasswd



expect-5.45-14.el7_1.x86_64 : A program-script interaction and testing utility
Repo        : @base
Matched from:
Filename    : /bin/mkpasswd



expect-5.45-14.el7_1.x86_64 : A program-script interaction and testing utility
Repo        : @base
Matched from:
Filename    : /usr/bin/mkpasswd

Читать далее "Linux — Поиск приложения в составе пакетов"

htaccess — Rewrite

Содержимое файла: ".htaccess"

Перенаправляем все на HTTPS

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

 

Перенаправляем на www

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

 

Перенаправляем с www

RewriteEngine On
RewriteCond %{HTTP_HOST} www.yourwebsitehere.com
RewriteRule (.*) https://yourwebsitehere.com/$1 [R=301,L]

BASH — Бекап сайтов и баз MySQL на AWS S3

Скрипт находит в заданной директории все папки, и поочередно их архивирует, копирует на S3 Bucket и удаляет локально. Также получает список всех MySQL баз, исключая системные, поочередно их архивирует, отправляет на S3 Bucket и удаляет локально.

#!/bin/bash

DATE=$(date +%d-%m-%Y)
WEB_PATH="/var/www/html/"

SITE_LIST="$(ls $WEB_PATH)"
DB_LIST="$(mysql -u root -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql|sys)")"
S3_BUCKET="s3://artem-services"

################################ BACKUP SITES ################################

for SITE in $SITE_LIST
do
	if [ -f "/tmp/$SITE.tar.gz" ] # Check if there is an old archive left
	then
		rm /tmp/$SITE.tar.gz
	fi

	tar -zcvf /tmp/$SITE.tar.gz --directory="$WEB_PATH/$SITE/" ./
	aws s3 cp /tmp/$SITE.tar.gz $S3_BUCKET/$DATE/SITE/$SITE.tar.gz
	rm /tmp/$SITE.tar.gz
done

############################### BACKUP DATABASES ##############################

for DB in $DB_LIST
do
	if [ -f "/tmp/$DB.gz" ] # Check if there is an old archive left
	then
		rm /tmp/$DB.gz
	fi

	mysqldump -u root $DB | gzip -c > /tmp/$DB.gz
	aws s3 cp /tmp/$DB.gz $S3_BUCKET/$DATE/DATABASE/$DB.gz
	rm /tmp/$DB.gz
done

FIX ERROR — Slack KDE icon fix

После обновления Slack'а на Kubuntu 18.04 иконка стала выглядеть следующим образом:

Решение следующее, нужно заменить иконки Slack'а. Для этого можно воспользоваться уже готовым скриптом:

github.com/luski/kde-slackicon

Или же скачать архив тут.