Media is too big
VIEW IN TELEGRAM
Урок по SQL
#1 Select
#2 Distinct
#3 Сортировка
#4 Transact SQL
#5 Логические операторы
#6 Функции
#7 Объединение двух таблиц
#8 Запрос Insert
#9 Запрос Update
#10 ALTER TABLE
Полный playlist на youtube
👉 @sysodminof
#1 Select
#2 Distinct
#3 Сортировка
#4 Transact SQL
#5 Логические операторы
#6 Функции
#7 Объединение двух таблиц
#8 Запрос Insert
#9 Запрос Update
#10 ALTER TABLE
Полный playlist на youtube
👉 @sysodminof
👍3
Особенности функций Mikrotik noscript. Сode из :parse
Исследование функций и скриптов в Mikrotik noscript. Рассматриваются разные способы создания и вызова функций и скриптов с передачей в них параметров. Оператор :parse и особый тип данных code.
https://habr.com/ru/post/650795/
👉 @sysodminof
Исследование функций и скриптов в Mikrotik noscript. Рассматриваются разные способы создания и вызова функций и скриптов с передачей в них параметров. Оператор :parse и особый тип данных code.
https://habr.com/ru/post/650795/
👉 @sysodminof
Хабр
Особенности функций Mikrotik noscript. Сode из :parse
Исследование функций и скриптов в Mikrotik noscript. Рассматриваются разные способы создания и вызова функций и скриптов с передачей в них параметров. Оператор :parse и особый тип данных code. 1. Что...
👍2
Как найти количество открытых файлов в Linux
Значение сохраняется в
Проверка Hard лимит в Linux
Проверка Soft лимит в Linux
Чтобы просмотреть значения Hard и Soft для разных пользователей, переключите пользователя с «su» на пользователя, ограничения которого вы хотите проверить.
Например:
Как проверить количество системных дескрипторов файлов в Linux
На серверах, некоторые из ваших приложений могут потребовать более высокий лимит для открытых дескрипторов файлов. Хорошим примером этого являются службы MySQL / MariaDB или веб-сервер Apache.
Вы можете увеличить лимит открытых файлов в Linux, отредактировав опцию ядра
Например, чтобы увеличить ограничение на количество открых файла до 500000, вы можете использовать следующую команду:
Вы можете проверить текущее значение для количества открытых файлов с помощью следующей команды:
С помощью указанной команды изменения, которые вы внесли, будут оставаться активными только до следующей перезагрузки. Если вы хотите применить их на постоянной основе, вам придется отредактировать следующий файл:
Добавьте следующую команду:
Конечно, вы можете изменить число в соответствии с вашими потребностями. Чтобы снова проверить изменения, используйте:
Чтобы изменения вступили в силу, пользователям необходимо будет выйти из системы и снова войти в систему. Если вы хотите немедленно применить ограничения, вы можете использовать следующую команду:
Установка количества открытых файлов для пользователя в Linux
Вышеприведенные примеры показали, как установить ограничения, но вы можете установить лимит для каждого пользователя. Для этой цели, с правами пользователя root, вам необходимо отредактировать следующий файл:
Если вы администратор Linux, предлагаем Вам ознакомиться с этим файлом. Прочитайте все комментарии в нем, поскольку он обеспечивает гибкость в плане управления системными ресурсами путем установки лимита пользователям на разных уровнях.
Команды, которые вы должны добавить, имеют следующие параметры:
<domain> <type> <item> <value>
Вот пример установки Soft и Hard лимитов для пользователя dimon:
👉 @sysodminof
Значение сохраняется в
# cat /proc/sys/fs/file-maxПроверка Hard лимит в Linux
# ulimit -HnПроверка Soft лимит в Linux
# ulimit -SnЧтобы просмотреть значения Hard и Soft для разных пользователей, переключите пользователя с «su» на пользователя, ограничения которого вы хотите проверить.
Например:
# su root
$ ulimit -Sn
$ ulimit -HnКак проверить количество системных дескрипторов файлов в Linux
На серверах, некоторые из ваших приложений могут потребовать более высокий лимит для открытых дескрипторов файлов. Хорошим примером этого являются службы MySQL / MariaDB или веб-сервер Apache.
Вы можете увеличить лимит открытых файлов в Linux, отредактировав опцию ядра
fs.file-max. Для этого используйте утилиту sysctl.Sysctl используется для настройки параметров ядра.Например, чтобы увеличить ограничение на количество открых файла до 500000, вы можете использовать следующую команду:
# sysctl -w fs.file-max=500000Вы можете проверить текущее значение для количества открытых файлов с помощью следующей команды:
$ cat /proc/sys/fs/file-maxС помощью указанной команды изменения, которые вы внесли, будут оставаться активными только до следующей перезагрузки. Если вы хотите применить их на постоянной основе, вам придется отредактировать следующий файл:
# vi /etc/sysctl.confДобавьте следующую команду:
fs.file-max=500000Конечно, вы можете изменить число в соответствии с вашими потребностями. Чтобы снова проверить изменения, используйте:
# cat /proc/sys/fs/file-maxЧтобы изменения вступили в силу, пользователям необходимо будет выйти из системы и снова войти в систему. Если вы хотите немедленно применить ограничения, вы можете использовать следующую команду:
# sysctl -pУстановка количества открытых файлов для пользователя в Linux
Вышеприведенные примеры показали, как установить ограничения, но вы можете установить лимит для каждого пользователя. Для этой цели, с правами пользователя root, вам необходимо отредактировать следующий файл:
# vi /etc/security/limits.confЕсли вы администратор Linux, предлагаем Вам ознакомиться с этим файлом. Прочитайте все комментарии в нем, поскольку он обеспечивает гибкость в плане управления системными ресурсами путем установки лимита пользователям на разных уровнях.
Команды, которые вы должны добавить, имеют следующие параметры:
<domain> <type> <item> <value>
Вот пример установки Soft и Hard лимитов для пользователя dimon:
## Example hard limit for max opened files
dimon hard nofile 4096
## Example soft limit for max opened files
dimon soft nofile 1024👉 @sysodminof
👍2
Linux: делаем скриншот и отправляем его на электронную почту
Для успешной работы скрипта необходимо сначала установить: ssmtp(обязательно настроить), mpack и scrot
👉 @sysodminof
Для успешной работы скрипта необходимо сначала установить: ssmtp(обязательно настроить), mpack и scrot
#!/usr/bin/env bash
# Важно! Для работы скрипта необходимо установить и настроить ssmtp, mpack и scrot
# путь к директории со скриншотами
dirpath=/home/$USER/screenshots
# проверяем наличие директории (если нет, то создаем). Делаем скриншот с названием по маске: ДД-ММ-ГГ_ЧЧ-ММ-СС.jpg
if [[ -d $dirpath ]]; then
scrot '%d-%m-%Y_%H-%M-%S.jpg' -e "mv \$f $dirpath"
screenshot=$(find "$dirpath" -name "*.jpg")
else
mkdir -p "$dirpath"
scrot '%d-%m-%Y_%H-%M-%S.jpg' -e "mv \$f $dirpath"
screenshot=$(find "$dirpath" -name "*.jpg")
fi
# отправляем письмо на почту
echo "Скриншот с сервера: $HOSTNAME" > $dirpath/message_body.txt
mpack -s "Скриншот" -d $dirpath/message_body.txt $screenshot your_login@mail.ru
# удаляем скриншот
rm -f $screenshot👉 @sysodminof
👍3
Batch-скрипт. Устаналивает портабельную программу с сетевого диска на локальный диск пользователя и выводит ярлык на рабочий стол.
Отредактированный под себя скрипт нужно прикрепить с помощью GPO в домене, как сценарий запуска при старте системы. Логи по установке пишутся на сетевой диск в отдельную папку.
👉 @sysodminof
Отредактированный под себя скрипт нужно прикрепить с помощью GPO в домене, как сценарий запуска при старте системы. Логи по установке пишутся на сетевой диск в отдельную папку.
@echo off
rem меняем кодировку чтобы использовать кириллицу
chcp 1251 >nul
rem указываем директорию с программой для копирования (в нашем случае на сетевом диске М)
set old_dir="M:\Programs\ExampleProgramPortable"
rem указываем директорию куда копировать программу (в нашем случае в корень диска С)
set new_dir="C:\ExampleProgramPortable"
rem если директория уже существует пишем запись в лог (дата, время, файл называется именем пользователя), в противном случае копируем программу в директорию new_dir
rem копируем ярлык программы в общую папку для всех пользователей, чтобы вывести на рабочий стол
rem переименовываем ярлык кириллицей (если нужно)
rem делаем запись в лог
If Exist "%new_dir%\*.*" (
echo %date% %time:~-11,8% DIR exist already >> M:\logs\%username%.txt
) Else (
xcopy %old_dir% %new_dir% /i /e /h /y
xcopy "C:\ExampleProgramPortable\example_program.lnk" C:\Users\Public\Desktop
rename "C:\Users\Public\Desktop\example_program.lnk" Программа.lnk
echo %date% %time:~-11,8% Example Program install successful >> M:\logs\%username%.txt
)
👉 @sysodminof
👍2
Команды Linux: Файлы и директории.
👉 @sysodminof
cd /home — перейти в директорию '/home'cd .. — перейти в директорию уровнем вышеcd ../.. — перейти в директорию двумя уровнями вышеcd — перейти в домашнюю директориюcd ~user — перейти в домашнюю директорию пользователя usercd - — перейти в директорию, в которой находились до перехода в текущую директориюpwd — показать текущую директориюls — отобразить содержимое текущей директорииls -F — отобразить содержимое текущей директории с добавлением к именам символов, характеризующих типls -l — показать детализированное представление файлов и директорий в текущей директорииls -a — показать скрытые файлы и директории в текущей директорииls *[0-9]* — показать файлы и директории содержащие в имени цифрыtree или lstree — показать дерево файлов и директорий, начиная от корня (/)mkdir dir1 — создать директорию с именем 'dir1'mkdir dir1 dir2 — создать две директории одновременноmkdir -p /tmp/dir1/dir2 — создать дерево директорийrm -f file1 — удалить файл с именем 'file1'rmdir dir1 — удалить директорию с именем 'dir1'rm -rf dir1 — удалить директорию с именем 'dir1' и рекурсивно всё её содержимоеrm -rf dir1 dir2 — удалить две директории и рекурсивно их содержимоеmv dir1 new_dir — переименовать или переместить файл или директориюcp file1 file2 — скопировать файл file1 в файл file2cp dir/* . — копировать все файлы директории dir в текущую директориюcp -a /tmp/dir1 . — копировать директорию dir1 со всем содержимым в текущую директориюcp -a dir1 dir2 — копировать директорию dir1 в директорию dir2ln -s file1 lnk1* — создать символическую ссылку на файл или директориюln file1 lnk1 — создать «жёсткую» (физическую) ссылку на файл или директориюtouch -t 0712250000 fileditest — модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)👉 @sysodminof
👍2
Шифрование информации в Linux
С зарождением цивилизации появилась необходимость передачи информации между людьми. При чём таким способом, чтобы эта информация не стала доступной третьим лицам.
Подробнее
👉 @sysodminof
С зарождением цивилизации появилась необходимость передачи информации между людьми. При чём таким способом, чтобы эта информация не стала доступной третьим лицам.
Подробнее
👉 @sysodminof
👍2
Скрипт / копирование файла из сетевого хранилища в каталог c:\users\public\desktop\ на разные ПК
как оно работает:
c:\users\public\desktop\ ---- файлы из этого каталога будут видны всем пользователям на данном пк
chcp 1251 >nul --- нужно для решение проблемы с кодировкой
set listfile=host.txt --- список компов (комп = одна строка)
for /f "tokens=1" %%i in (%listfile%) do call :procedure %%i - цикл (проходит по списку)
:procedure
copy "\\fileserv\files\file1.lnk" "\\%1\c$\users\public\Desktop\" - выполнение команды
Создаем файл copy_file_for_desktops_users.cmd
chcp 1251 >nul
set listfile=host.txt
for /f "tokens=1" %%i in (%listfile%) do call :procedure %%i
:procedure
copy "\\fileserv\files\file1.lnk" "\\%1\c$\users\public\Desktop\"
Создаем файл host.txt
KOMP1
KOMP2
KOMP3
KOMP4
KOMP5
KOMP6
👉 @sysodminof
как оно работает:
c:\users\public\desktop\ ---- файлы из этого каталога будут видны всем пользователям на данном пк
chcp 1251 >nul --- нужно для решение проблемы с кодировкой
set listfile=host.txt --- список компов (комп = одна строка)
for /f "tokens=1" %%i in (%listfile%) do call :procedure %%i - цикл (проходит по списку)
:procedure
copy "\\fileserv\files\file1.lnk" "\\%1\c$\users\public\Desktop\" - выполнение команды
Создаем файл copy_file_for_desktops_users.cmd
chcp 1251 >nul
set listfile=host.txt
for /f "tokens=1" %%i in (%listfile%) do call :procedure %%i
:procedure
copy "\\fileserv\files\file1.lnk" "\\%1\c$\users\public\Desktop\"
Создаем файл host.txt
KOMP1
KOMP2
KOMP3
KOMP4
KOMP5
KOMP6
👉 @sysodminof
👍2🤝1
Команды Linux: IPTABLES (firewall)
iptables -t filter -nL
iptables -nL — отобразить все цепочки правил
iptables -t nat -L — отобразить все цепочки правил в NAT-таблице
iptables -t filter -F или iptables -F — очистить все цепочки правил в filter-таблице
iptables -t nat -F — очистить все цепочки правил в NAT-таблице
iptables -t filter -X — удалить все пользовательские цепочки правил в filter-таблице
iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT — позволить входящее подключение telnet'ом
iptables -t filter -A OUTPUT -p tcp --dport http -j DROP — блокировать исходящие HTTP-соединения
iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT — позволить «прокидывать» (forward) POP3-соединения
iptables -t filter -A INPUT -j LOG --log-prefix "DROP INPUT" — включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса «DROP INPUT»
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE — включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми IP-адресами.
iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22 — перенаправление пакетов, адресованных одному хосту, на другой хост
👉 @sysodminof
iptables -t filter -nL
iptables -nL — отобразить все цепочки правил
iptables -t nat -L — отобразить все цепочки правил в NAT-таблице
iptables -t filter -F или iptables -F — очистить все цепочки правил в filter-таблице
iptables -t nat -F — очистить все цепочки правил в NAT-таблице
iptables -t filter -X — удалить все пользовательские цепочки правил в filter-таблице
iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT — позволить входящее подключение telnet'ом
iptables -t filter -A OUTPUT -p tcp --dport http -j DROP — блокировать исходящие HTTP-соединения
iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT — позволить «прокидывать» (forward) POP3-соединения
iptables -t filter -A INPUT -j LOG --log-prefix "DROP INPUT" — включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса «DROP INPUT»
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE — включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми IP-адресами.
iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22 — перенаправление пакетов, адресованных одному хосту, на другой хост
👉 @sysodminof
👍2
NFS \ Rsync \ Backup
NFS сервер:
на сервер ставим apt-get install nfs-kernel-server nfs-common portmap
/usr/allbackup тут все будут бэкапы
nano /etc/exports тут ставим какие нужны каталоги
/usr/allbackup/name_catalog ip_clienta(rw,sync,no_root_squash,no_subtree_check)
применить команду exportfs -a
NFS на клиенте:
apt-get install nfs-common portmap rsync
mkdir /nfs/name_catalog -p
nano /etc/fstab
ip_server:/usr/allbackup/name_catalog /nfs/name_catalog nfs rw,sync,hard,intr 0 0
Создаем каталоги для бэкапа:
mkdir -p /root/backup/{www,etc,sql}
Скрипт для бэкапа:
touch /root/backupwww
----------------------------------------
#!/bin/bash
#[Changes Directory]
cd /root/backup
#[Stamps the file name with a date]
TIMESTAMP=`date +%m-%d-%y-%H%M`
#[DB Backup Scripts]
# DB Name
HOST=localhost
DBNAME="basename"
USER="username"
PASSWORD="password"
DUMP_PATH=/root/backup/sql
BACK_PATH=/root/backup/www
BACK_PATH3=/root/backup/etc
#dbname
mysqldump --opt -c -e -Q -h$HOST -u$USER -p$PASSWORD $DBNAME > $DBNAME.sql
tar czpf $DUMP_PATH/$DBNAME.$TIMESTAMP.tar.gz $DBNAME.sql
rm -f $DBNAME.sql
#Backing up files
tar cvzpf $BACK_PATH/www.$TIMESTAMP.tar.gz --same-owner --exclude=/var/www/site/gruzims/* /var/www
tar cvzpf $BACK_PATH3/etc.$TIMESTAMP.tar.gz /etc
-----------------------------------------
Cкрипт стиралки:
touch /root/delbackup
-----------------------------------------
#!/bin/bash
cd /var/backup/
find /var/backup/mysql -name "*.tar.gz" -mtime +30 |xargs /bin/rm -f {};
find /var/backup/www -name "*.tar.gz" -mtime +30 |xargs /bin/rm -f {};
----------------------------------------
Настройка crontab:
crontab -e
----------------------------------------
0 5 * * * /usr/bin/rsync -a /root/ /nfs/folder синхронизируем бэкапы на сервер nfs
0 2 * * * /root/backupwww скрипт бэкапа
----------------------------------------
👉 @sysodminof
NFS сервер:
на сервер ставим apt-get install nfs-kernel-server nfs-common portmap
/usr/allbackup тут все будут бэкапы
nano /etc/exports тут ставим какие нужны каталоги
/usr/allbackup/name_catalog ip_clienta(rw,sync,no_root_squash,no_subtree_check)
применить команду exportfs -a
NFS на клиенте:
apt-get install nfs-common portmap rsync
mkdir /nfs/name_catalog -p
nano /etc/fstab
ip_server:/usr/allbackup/name_catalog /nfs/name_catalog nfs rw,sync,hard,intr 0 0
Создаем каталоги для бэкапа:
mkdir -p /root/backup/{www,etc,sql}
Скрипт для бэкапа:
touch /root/backupwww
----------------------------------------
#!/bin/bash
#[Changes Directory]
cd /root/backup
#[Stamps the file name with a date]
TIMESTAMP=`date +%m-%d-%y-%H%M`
#[DB Backup Scripts]
# DB Name
HOST=localhost
DBNAME="basename"
USER="username"
PASSWORD="password"
DUMP_PATH=/root/backup/sql
BACK_PATH=/root/backup/www
BACK_PATH3=/root/backup/etc
#dbname
mysqldump --opt -c -e -Q -h$HOST -u$USER -p$PASSWORD $DBNAME > $DBNAME.sql
tar czpf $DUMP_PATH/$DBNAME.$TIMESTAMP.tar.gz $DBNAME.sql
rm -f $DBNAME.sql
#Backing up files
tar cvzpf $BACK_PATH/www.$TIMESTAMP.tar.gz --same-owner --exclude=/var/www/site/gruzims/* /var/www
tar cvzpf $BACK_PATH3/etc.$TIMESTAMP.tar.gz /etc
-----------------------------------------
Cкрипт стиралки:
touch /root/delbackup
-----------------------------------------
#!/bin/bash
cd /var/backup/
find /var/backup/mysql -name "*.tar.gz" -mtime +30 |xargs /bin/rm -f {};
find /var/backup/www -name "*.tar.gz" -mtime +30 |xargs /bin/rm -f {};
----------------------------------------
Настройка crontab:
crontab -e
----------------------------------------
0 5 * * * /usr/bin/rsync -a /root/ /nfs/folder синхронизируем бэкапы на сервер nfs
0 2 * * * /root/backupwww скрипт бэкапа
----------------------------------------
👉 @sysodminof
👍2
Пароль на папку \ .htpasswd
0. редактируем конфиг апача httpd.conf
nano /etc/apache2/httpd.conf
<Directory "/var/www/folderpass">
AuthName "Введите пароль"
AuthType Basic
AuthUserFile /var/www/folderpass/.htpasswd файл с паролем
require vasya пользователь
require valid-user
</Directory>
1. Создание самого пароля
htpasswd -c /var/www/folderpass/.htpasswd vasya
PS
многие конечно знают, но решили напомнить 😉
👉 @sysodminof
0. редактируем конфиг апача httpd.conf
nano /etc/apache2/httpd.conf
<Directory "/var/www/folderpass">
AuthName "Введите пароль"
AuthType Basic
AuthUserFile /var/www/folderpass/.htpasswd файл с паролем
require vasya пользователь
require valid-user
</Directory>
1. Создание самого пароля
htpasswd -c /var/www/folderpass/.htpasswd vasya
PS
многие конечно знают, но решили напомнить 😉
👉 @sysodminof
👍2