📌 Автоматизация задач (cron, systemd timers, Ansible)
Всем доброй ночи!
Автоматизация — ключевой элемент эффективного администрирования серверов. В данном руководстве рассмотрены три основных инструмента автоматизации:
- cron — классический планировщик задач в UNIX-подобных системах.
- systemd timers — альтернатива cron, интегрированная в systemd.
- Ansible — инструмент управления конфигурацией и автоматизации.
1. Использование cron
cron позволяет запускать команды и скрипты по расписанию.
1.1. Основные файлы cron
- /etc/crontab — системный crontab.
- /etc/cron.d/ — каталог для пользовательских crontab-файлов.
- /var/spool/cron/crontabs/ — файлы crontab для отдельных пользователей.
1.2. Формат записи crontab
Пример: запуск скрипта каждый день в 3:30 утра:
1.3. Управление cron
- Просмотр текущего crontab:
- Редактирование crontab:
- Удаление crontab:
- Логи cron хранятся в /var/log/syslog (Ubuntu/Debian) или /var/log/cron (CentOS/RHEL).
2. Использование systemd timers
Systemd timers — альтернатива cron, предоставляющая больше возможностей, включая логирование и гибкость настроек.
2.1. Создание таймера
1. Создайте unit-файл для сервиса (`/etc/systemd/system/myscript.service`):
2. Создайте unit-файл для таймера (`/etc/systemd/system/myscript.timer`):
2.2. Управление таймерами
- Включение таймера:
- Проверка состояния таймера:
- Просмотр логов:
3. Автоматизация с Ansible
Ansible позволяет управлять серверами без установки агентов.
3.1. Установка Ansible
Для Debian/Ubuntu:
Для CentOS/RHEL:
3.2. Базовая структура Ansible
3.3. Пример Playbook
Файл
Запуск:
Заключение
- Используйте cron для простых задач.
- Применяйте systemd timers, если важны логи и интеграция с systemd.
- Автоматизируйте масштабные задачи с Ansible.
Всем доброй ночи!
Автоматизация — ключевой элемент эффективного администрирования серверов. В данном руководстве рассмотрены три основных инструмента автоматизации:
- cron — классический планировщик задач в UNIX-подобных системах.
- systemd timers — альтернатива cron, интегрированная в systemd.
- Ansible — инструмент управления конфигурацией и автоматизации.
1. Использование cron
cron позволяет запускать команды и скрипты по расписанию.
1.1. Основные файлы cron
- /etc/crontab — системный crontab.
- /etc/cron.d/ — каталог для пользовательских crontab-файлов.
- /var/spool/cron/crontabs/ — файлы crontab для отдельных пользователей.
1.2. Формат записи crontab
* * * * * /путь/к/команде аргументы
| | | | |
| | | | +---- День недели (0 - вс, 6 - сб)
| | | +------ Месяц (1-12)
| | +-------- День месяца (1-31)
| +---------- Часы (0-23)
+------------ Минуты (0-59)
Пример: запуск скрипта каждый день в 3:30 утра:
30 3 * * * /usr/local/bin/myscript.sh
1.3. Управление cron
- Просмотр текущего crontab:
crontab -l
- Редактирование crontab:
crontab -e
- Удаление crontab:
crontab -r
- Логи cron хранятся в /var/log/syslog (Ubuntu/Debian) или /var/log/cron (CentOS/RHEL).
2. Использование systemd timers
Systemd timers — альтернатива cron, предоставляющая больше возможностей, включая логирование и гибкость настроек.
2.1. Создание таймера
1. Создайте unit-файл для сервиса (`/etc/systemd/system/myscript.service`):
[Unit]
Description=Запуск скрипта
[Service]
ExecStart=/usr/local/bin/myscript.sh
2. Создайте unit-файл для таймера (`/etc/systemd/system/myscript.timer`):
[Unit]
Description=Таймер для myscript.service
[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true
[Install]
WantedBy=timers.target
2.2. Управление таймерами
- Включение таймера:
systemctl enable --now myscript.timer
- Проверка состояния таймера:
systemctl list-timers
- Просмотр логов:
journalctl -u myscript.service --no-pager
3. Автоматизация с Ansible
Ansible позволяет управлять серверами без установки агентов.
3.1. Установка Ansible
Для Debian/Ubuntu:
sudo apt update && sudo apt install -y ansible
Для CentOS/RHEL:
sudo yum install -y epel-release
sudo yum install -y ansible
3.2. Базовая структура Ansible
inventory/hosts # Список серверов
playbooks/
install_apache.yml # Пример Playbook
roles/
common/ # Роли Ansible
3.3. Пример Playbook
Файл
install_apache.yml
:
- hosts: webservers
become: yes
tasks:
- name: Установить Apache
apt:
name: apache2
state: present
Запуск:
ansible-playbook -i inventory/hosts playbooks/install_apache.yml
Заключение
- Используйте cron для простых задач.
- Применяйте systemd timers, если важны логи и интеграция с systemd.
- Автоматизируйте масштабные задачи с Ansible.
❤1
20 лучших скриптов Powershell для Active Directory
Работая много лет, я столкнулся со многими проблемами в качестве системного администратора windows. Иногда создание пользователей или групп в домене занимает значительное время. Это процесс можно автоматизировать, чтобы сэкономить время. В данной статье есть скрипты DNS powershell, скрипты DHCP powershell и мой собственный репозиторий powershell.
https://itmozg.ru/20-luchshih-skriptov-powershell-dlja-active-directory/
Работая много лет, я столкнулся со многими проблемами в качестве системного администратора windows. Иногда создание пользователей или групп в домене занимает значительное время. Это процесс можно автоматизировать, чтобы сэкономить время. В данной статье есть скрипты DNS powershell, скрипты DHCP powershell и мой собственный репозиторий powershell.
https://itmozg.ru/20-luchshih-skriptov-powershell-dlja-active-directory/
❤3
Подборка часто используемых команд для первоначальной настройки устройств MikroTik: имя устройства, DNS сервера, Email, время, доступы и т.д.
Установки имени устройства
Установка своих DNS серверов и отключение получения их по DHCP
Настройка email клиента для работы с Yandex.Mail
Для корректной работы разрешите в настройках профиля авторизацию SMTP по обычному паролю или [рекомендуется] используйте пароли приложений (почта)
Настройка синхронизации времени по NTP и MikroTik Cloud Time (Москва)
Изменение количества строк системного лога
Очистка системного лога (оставляет сообщение о смене настроек лога)
Контроль доступа с IP адресов домена
Это позволяет использовать DynamicDNS для записей своего домена, и получать доступ к устройству с IP адресов, которые будут резолвится с домена. RouterOS будет сам обновлять записи и access-list при изменении записи в домене.
Обратите внимание, в конце 2 строки с move. Это сделано для того, чтобы правило корректно двигалось на первое место при включенном fasttrack (то есть первое место), а также при отключенном (на нулевое место)
Отключение ненужных служб доступа (web тоже отключается, осторожно)
Фикс MTU (нужен редко, но метко)
Заблокировать доступ к WiFi по MAC-адресу
Поместить клиента WiFi в отдельный VLAN по MAC-адресу
Настройка пароля и безопасности WiFi на default профиль
Включение пробросов портов SSH
Установки имени устройства
/system identity set name=MyHomeMikrotik
Установка своих DNS серверов и отключение получения их по DHCP
/ip dns set servers=8.8.8.8,1.1.1.1
/ip dhcp-client set [find ] use-peer-dns=no
Настройка email клиента для работы с Yandex.Mail
Для корректной работы разрешите в настройках профиля авторизацию SMTP по обычному паролю или [рекомендуется] используйте пароли приложений (почта)
/tool e-mail
set address=smtp.yandex.ru [email protected] password=example-pass port=587 start-tls=yes [email protected]
Настройка синхронизации времени по NTP и MikroTik Cloud Time (Москва)
/system ntp client set enabled=yes server-dns-names=time.google.com,0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org,3.pool.ntp.org
/system clock set time-zone-autodetect=no
/system clock set time-zone-name=Europe/Moscow
/ip cloud set update-time=yes
Изменение количества строк системного лога
/system logging action set memory memory-lines=10000
Очистка системного лога (оставляет сообщение о смене настроек лога)
/system logging action set memory memory-lines=1
/system logging action set memory memory-lines=10000
Контроль доступа с IP адресов домена
Это позволяет использовать DynamicDNS для записей своего домена, и получать доступ к устройству с IP адресов, которые будут резолвится с домена. RouterOS будет сам обновлять записи и access-list при изменении записи в домене.
Обратите внимание, в конце 2 строки с move. Это сделано для того, чтобы правило корректно двигалось на первое место при включенном fasttrack (то есть первое место), а также при отключенном (на нулевое место)
/ip firewall address-list
add address=access.example.con list=DomainIPsAccess
/ip firewall filter
add action=accept chain=input src-address-list=DomainIPsAccess comment="Allow DomainIPsAccess"
move [find comment="Allow DomainIPsAccess"] 1
move [find comment="Allow DomainIPsAccess"] 0
Отключение ненужных служб доступа (web тоже отключается, осторожно)
/ip service disable www,ftp,api,api-ssl,telnet
/ip service enable ssh,winbox
/ip service set ssh address=""
/ip service set winbox address=""
Фикс MTU (нужен редко, но метко)
/ip firewall mangle
add chain=postrouting out-interface-list=WAN protocol=tcp tcp-flags=syn,!ack action=change-mss new-mss=clamp-to-pmtu comment="MTU Fix" passthrough=yes
Заблокировать доступ к WiFi по MAC-адресу
/interface wireless access-list authentication=no mac-address=8A:EA:B7:2E:38:C1
Поместить клиента WiFi в отдельный VLAN по MAC-адресу
/interface wireless access-list
add interface=all mac-address=8A:EA:B7:2E:38:C1 vlan-id=99 vlan-mode=use-tag
Настройка пароля и безопасности WiFi на default профиль
/interface wireless security-profiles set default mode=dynamic
-keys authentication-types=wpa2-psk unicast-ciphers=aes-ccm group-ciphers=aes-ccm
wpa2-pre-shared-key=bigpassword
Включение пробросов портов SSH
/ip ssh set forwarding-enabled=both
❤1
DevOps resources
Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP
https://github.com/bregman-arie/devops-resources
Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP
https://github.com/bregman-arie/devops-resources
❤1👍1
Как выполнить grep для поиска текста в PowerShell
grep – это мощная утилита для поиска текста в Linux, но она недоступна в Windows.
Хотя существуют сторонние порты и решения, PowerShell предлагает встроенные эквиваленты grep, которые выполняют ту же работу в ваших скриптах.
Использование findstr для поиска в PowerShell
В PowerShell есть несколько различных утилит поиска, каждая из которых обладает своими достоинствами.
Самая простая – findstr, которая является собственным исполняемым файлом windows.
Она хорошо подходит для замены grep для простых операций поиска в командной строке.
Например, вы можете передать ему вывод ls для поиска совпадений.
Вы также можете искать несколько слов одновременно, использовать подстановочные знаки для соответствия чему угодно и использовать флаг /R для передачи основных регулярных выражений.
Хотя, если вы хотите искать явно , включая пробел, вам нужно использовать флаг /C::
Если вы привыкли к командной строке Linux и не хотите запоминать новую команду, вы можете настроить “grep” как алиас findstr, что позволит вам сохранить мышечную память.
Использование Select-String для поиска в PowerShell
Другой собственный метод, который предлагает PowerShell, – это команда Select-String, которая делает то же самое, что и findstr, но является командой PowerShell, а не исполняемым файлом Windows.
Это означает, что она лучше работает в сценариях PowerShell, и, что особенно важно, возвращает результат в виде объекта, который может быть красиво распечатан PowerShell.
Его также легче использовать в командной строке, поскольку с ним работает завершение вкладки PowerShell.
Он работает так же, как findstr, и может принимать подстановочные знаки и регулярные выражения.
Вы можете использовать Select-String для поиска текста внутри файлов, передав ему аргумент -Path. Вы также можете использовать его с вводом, передаваемым другими командами, например Get-Content.
Если вы хотите использовать его в командной строке, вы также можете присвоить ему псевдоним “grep” для быстрого доступа.
grep – это мощная утилита для поиска текста в Linux, но она недоступна в Windows.
Хотя существуют сторонние порты и решения, PowerShell предлагает встроенные эквиваленты grep, которые выполняют ту же работу в ваших скриптах.
Использование findstr для поиска в PowerShell
В PowerShell есть несколько различных утилит поиска, каждая из которых обладает своими достоинствами.
Самая простая – findstr, которая является собственным исполняемым файлом windows.
Она хорошо подходит для замены grep для простых операций поиска в командной строке.
Например, вы можете передать ему вывод ls для поиска совпадений.
ls | findstr "foo"
Вы также можете искать несколько слов одновременно, использовать подстановочные знаки для соответствия чему угодно и использовать флаг /R для передачи основных регулярных выражений.
ls | findstr /R ba[a-z]\.txt
Хотя, если вы хотите искать явно , включая пробел, вам нужно использовать флаг /C::
ls | findstr /C:"foo"
Если вы привыкли к командной строке Linux и не хотите запоминать новую команду, вы можете настроить “grep” как алиас findstr, что позволит вам сохранить мышечную память.
new-alias grep findstr
Использование Select-String для поиска в PowerShell
Другой собственный метод, который предлагает PowerShell, – это команда Select-String, которая делает то же самое, что и findstr, но является командой PowerShell, а не исполняемым файлом Windows.
Это означает, что она лучше работает в сценариях PowerShell, и, что особенно важно, возвращает результат в виде объекта, который может быть красиво распечатан PowerShell.
Его также легче использовать в командной строке, поскольку с ним работает завершение вкладки PowerShell.
Он работает так же, как findstr, и может принимать подстановочные знаки и регулярные выражения.
ls | Select-String foo
ls | Select-String -Pattern <regexPattern>
Вы можете использовать Select-String для поиска текста внутри файлов, передав ему аргумент -Path. Вы также можете использовать его с вводом, передаваемым другими командами, например Get-Content.
Select-String -Path ".\foo.txt" -Pattern ba.*
Если вы хотите использовать его в командной строке, вы также можете присвоить ему псевдоним “grep” для быстрого доступа.
remove-alias grep
new-alias grep Select-String
❤2
Трюки терминала Bash
Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.
Горячие клавиши Bash с Ctrl
Изменить заглавные на строчные и наоборот
Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
Запускает последнюю команду и меняет какой-то параметр. Например, меняем
Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте
Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
— запускает
Указание файлов по шаблону в Bash
Полезные переменные окружения Bash
Короткие переменные:
Более длинные, но тоже полезные переменные:
Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.
Горячие клавиши Bash с Ctrl
Ctrl + n
— то же самое, что и стрелка вниз.Ctrl + p
— то же самое, что и стрелка вверх.Ctrl + r
— поиск по предыдущим командам из истории команд (history). Продолжайте нажимать Ctrl + r
, чтобы искать дальше. Ctrl + Shift + r
— поиск в другую сторону.Ctrl + s
— остановить вывод в терминал.Ctrl + q
— восстановить вывод в терминал после Ctrl + s.Ctrl + a
— перейти к началу строки (аналог клавиши Home).Ctrl + e
— перейти к концу строки (аналог клавиши End).Ctrl + d
— если вы ввели что-то, то Ctrl + d
удаляет символ под курсором. В противном случае означает конец ввода и завершает текущую сессию Bash.Ctrl + k
— удалить весь текст от курсора до конца строки.Ctrl + x + backspace
— удалить весь текст от начала строки до курсора.Ctrl + t
— переставить символ до курсора на символ под курсором. Нажмите Esc + t
для перестановки двух слов до курсора.Ctrl + w
— удалить слово до курсора; затем Ctrl + y, чтобы вставить его.Ctrl + u
— удалить строку перед курсором; Ctrl + y для вставки его.Ctrl + _
— отменить ввод.Ctrl + l
— очищает окно терминала. То же самое, что и clear.Ctrl + x + Ctrl + e
— запускает редактор, определённый в переменной $EDITOR
, для ввода команды. Полезно для многострочных команд.Изменить заглавные на строчные и наоборот
Esc + u
— преобразовать буквы от курсора до конца строки в заглавные буквы.Esc + l
— преобразовать буквы от курсора до конца строки в нижний регистр.Esc + c
— заменить букву под курсором на заглавную.Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
!53
!!
— запуск последней команды.sudo !!
— запустить предыдущую команду с sudo.Запускает последнюю команду и меняет какой-то параметр. Например, меняем
"aaa" на "bbb":
# Последняя команда: echo 'aaa'
$ ^aaa^bbb
$ echo 'bbb'
bbb
Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте
:&
:^aaa^bbb^:&
# или
!!:gs/aaa/bbb/
Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
!cat
# или
!c
— запускает
cat filename
ещё раз.Указание файлов по шаблону в Bash
/etc/pa*wd
→ /etc/passwd
— символ *
означает "несколько любых символов"./b?n/?at
→ /bin/cat
— символ ?
означает "один любой символ".ls -l [a-z]*
— вывести список файлов, содержащих только буквы латинского алфавита. В квадратных скобках []
перечисляются символы, которые будут искаться. А символ *
после []
означает "хоть сколько раз".ls {*.sh,*.py}
— вывести все .sh и .py файлы. {}
используется для группировки нескольких шаблонов по принципу "или".Полезные переменные окружения Bash
Короткие переменные:
$0
— оболочка командной строки или путь до запускаемого файла.$1
, $2
, $3
, ... — аргументы запуска скрипта.$#
— число аргументов, переданных в скрипт из терминала.$?
— код завершения последней команды.$-
— текущие опции, установленные для оболочки.$$
— идентификатор текущего процесса.$!
— идентификатор процесса, завершённого последним.Более длинные, но тоже полезные переменные:
$DESKTOP_SESSION
— текущий менеджер дисплеев.$EDITOR
— редактор текста по умолчанию.$LANG
— используемый системой язык.$PATH
— список директорий, в которых будут искаться исполняемые файлы.$PWD
— текущая директория.$SHELL
— текущая оболочка командной строки.$USER
— имя текущего пользователя.$HOSTNAME
— имя текущего хоста (компьютера).❤2
Шпаргалка по работе в командной строке
Команды для работы с файлами
Команды для работы с файлами
ls
— вывод содержимого каталога;ls -la
— вывод содержимого каталога в форматированном виде (в т.ч. скрытые файлы);cd dir
— перейти в каталог dir;cd
— перейти в домашний каталог;pwd
— показать текущий каталог;mkdir dir
— создать каталог dir;rm file
— удалить файл;rm -r dir
— удалить каталог dir;rm -f file
— принудительно удалить файл;rm -rf dir
— принудительно удалить каталог dir;cp file1 file2
— скопировать file1 в file2;cp -r dir1 dir2
— скопировать каталог dir1 в каталог dir2 (если каталога dir2 нет, он будет создан);mv file1 file2
— переместить (или переименовать, если file1 и file2 находятся в одном каталоге) file1 в file2;ln -s file link
— создать симлинк link на файл file;touch file
— создать файл;cat > file
— направить стандартный ввод в file;more file
— вывод содержимого file;head file
— вывод содержимого первых 10 строк file;tail file
— вывод содержимого последних 10 строк file;tail -f file
— вывод содержимого file по мере появления, начиная с последних 10 строк файла.❤4
📌 Как проверить SSL-сертификат с Bash
Иногда нужно быстро проверить, когда истекает SSL-сертификат у сайта.
Вывод будет примерно таким:
А если хочешь узнать, сколько дней осталось до окончания сертификата:
Иногда нужно быстро проверить, когда истекает SSL-сертификат у сайта.
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -dates | grep 'notAfter'
Вывод будет примерно таким:
notAfter=Jun 15 12:00:00 2025 GMT
А если хочешь узнать, сколько дней осталось до окончания сертификата:
end_date=$(echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -enddate | cut -d= -f2)
end_ts=$(date -d "$end_date" +%s)
now_ts=$(date +%s)
echo $(( (end_ts - now_ts) / 86400 )) дней до окончания
❤4
Трюки терминала Bash
Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.
Горячие клавиши" Bash с Ctrl
Изменить заглавные на строчные и наоборот
Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
Запускает последнюю команду и меняет какой-то параметр. Например, меняем
Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте
Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
— запускает
Указание файлов по шаблону в Bash
Полезные переменные окружения Bash
Короткие переменные:
Более длинные, но тоже полезные переменные:
Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.
Горячие клавиши" Bash с Ctrl
Ctrl + n
— то же самое, что и стрелка вниз.Ctrl + p
— то же самое, что и стрелка вверх.Ctrl + r
— поиск по предыдущим командам из истории команд (history). Продолжайте нажимать Ctrl + r
, чтобы искать дальше. Ctrl + Shift + r
— поиск в другую сторону.Ctrl + s
— остановить вывод в терминал.Ctrl + q
— восстановить вывод в терминал после Ctrl + s.Ctrl + a
— перейти к началу строки (аналог клавиши Home).Ctrl + e
— перейти к концу строки (аналог клавиши End).Ctrl + d
— если вы ввели что-то, то Ctrl + d
удаляет символ под курсором. В противном случае означает конец ввода и завершает текущую сессию Bash.Ctrl + k
— удалить весь текст от курсора до конца строки.Ctrl + x + backspace
— удалить весь текст от начала строки до курсора.Ctrl + t
— переставить символ до курсора на символ под курсором. Нажмите Esc + t
для перестановки двух слов до курсора.Ctrl + w
— удалить слово до курсора; затем Ctrl + y, чтобы вставить его.Ctrl + u
— удалить строку перед курсором; Ctrl + y для вставки его.Ctrl + _
— отменить ввод.Ctrl + l
— очищает окно терминала. То же самое, что и clear.Ctrl + x + Ctrl + e
— запускает редактор, определённый в переменной $EDITOR
, для ввода команды. Полезно для многострочных команд.Изменить заглавные на строчные и наоборот
Esc + u
— преобразовать буквы от курсора до конца строки в заглавные буквы.Esc + l
— преобразовать буквы от курсора до конца строки в нижний регистр.Esc + c
— заменить букву под курсором на заглавную.Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
!53
!!
— запуск последней команды.sudo !!
— запустить предыдущую команду с sudo.Запускает последнюю команду и меняет какой-то параметр. Например, меняем
"aaa" на "bbb":
# Последняя команда: echo 'aaa'
$ ^aaa^bbb
$ echo 'bbb'
bbb
Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте
:&
:^aaa^bbb^:&
# или
!!:gs/aaa/bbb/
Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
!cat
# или
!c
— запускает
cat filename
ещё раз.Указание файлов по шаблону в Bash
/etc/pa*wd
→ /etc/passwd
— символ *
означает "несколько любых символов"./b?n/?at
→ /bin/cat
— символ ?
означает "один любой символ".ls -l [a-z]*
— вывести список файлов, содержащих только буквы латинского алфавита. В квадратных скобках []
перечисляются символы, которые будут искаться. А символ *
после []
означает "хоть сколько раз".ls {*.sh,*.py}
— вывести все .sh и .py файлы. {}
используется для группировки нескольких шаблонов по принципу "или".Полезные переменные окружения Bash
Короткие переменные:
$0
— оболочка командной строки или путь до запускаемого файла.$1
, $2
, $3
, ... — аргументы запуска скрипта.$#
— число аргументов, переданных в скрипт из терминала.$?
— код завершения последней команды.$-
— текущие опции, установленные для оболочки.$$
— идентификатор текущего процесса.$!
— идентификатор процесса, завершённого последним.Более длинные, но тоже полезные переменные:
$DESKTOP_SESSION
— текущий менеджер дисплеев.$EDITOR
— редактор текста по умолчанию.$LANG
— используемый системой язык.$PATH
— список директорий, в которых будут искаться исполняемые файлы.$PWD
— текущая директория.$SHELL
— текущая оболочка командной строки.$USER
— имя текущего пользователя.$HOSTNAME
— имя текущего хоста (компьютера).❤5🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Statusnook — это открытое (MIT) self-hosted решение для быстрого развёртывания страницы статуса и мониторинга HTTP-эндпоинтов с оповещениями в Email и Slack.
https://github.com/goksan/statusnook
https://github.com/goksan/statusnook
❤1👍1
Системные утилиты для безопасного удаления файлов с HDD
Windows
В данном примере мы форматируем том D в файловую систему NTFS, при этом даем операционной системе команду предварительно перезаписать весь раздел нулями 10 раз, используя параметр /p («passes»), задающий количество проходов.
Linux
Быстро и надежно удаляет один или несколько файлов.
В этом примере мы перезаписали файл file.txt случайными данными 40 раз подряд (параметр -n, по умолчанию же shred совершает 25 проходов) и затем удалили его (параметр -u, поскольку по умолчанию shred не удаляет файлы, а сразу перезаписывает).
Если нам внужно дополнительно скрыть и сам факт «зачистки», то можете воспользоваться параметром -z:
Единственный недостаток shred — данная утилита не умеет работать с директориями. Поэтому если вам требуется уничтожить содержимое целого каталога с вложенными папками, стоит воспользоваться wipe. В данном примере мы отдали команду рекурсивно (-r) удалить все, что находится в папке private, а также отключили запрос подтверждения удаления папок и файлов (-f), которое wipe выводит по умолчанию. Среди интересных дополнительных опций, поддерживаемых утилитой, стоит выделить принудительное выполнение chmod для каталогов и файлов, защищенных от перезаписи (-c), работу в тихом режиме (-s) и возможность заставить wipe следовать символическим ссылкам (-D, конфликтует с -r).
Mac OS
В версиях операционной системы с 10.4 по 10.10 вы могли инициировать перезапись файлов, переместив их в корзину, а затем выбрав в Finder опцию «Очистить корзину необратимо», однако впоследствии Apple от нее отказалась. Вплоть до версии 10.11 для безопасного удаления данных можно было воспользоваться консольной командой srm. В данном примере мы рекурсивно удаляем содержимое папки private (-r), перезаписывая каждый файл случайными данными 7 раз подряд (-m). Также можно выбрать однократную перезапись файлов (-s) или же не указывать этот параметр вовсе — в этом случае утилита выполнит 35 проходов.
В актуальных версиях Mac OS инициировать безопасное удаление файлов с жесткого диска можно с помощью Дисковой утилиты (для этого необходимо нажать на кнопку «Параметры безопасности» и задать количество циклов перезаписи), либо через терминал, используя конструкцию вида. Параметр -P является специфичным для Mac OS и сообщает утилите, что удаляемые файлы необходимо трижды перезаписать.
Windows
В данном примере мы форматируем том D в файловую систему NTFS, при этом даем операционной системе команду предварительно перезаписать весь раздел нулями 10 раз, используя параметр /p («passes»), задающий количество проходов.
format d: /fs:NTFS /p:10
Linux
Быстро и надежно удаляет один или несколько файлов.
shred -u -n 40 /private/file.txt
В этом примере мы перезаписали файл file.txt случайными данными 40 раз подряд (параметр -n, по умолчанию же shred совершает 25 проходов) и затем удалили его (параметр -u, поскольку по умолчанию shred не удаляет файлы, а сразу перезаписывает).
shred -u -n 40 /private/file.txt /private/file2.txt
Если нам внужно дополнительно скрыть и сам факт «зачистки», то можете воспользоваться параметром -z:
shred -u -z -n 40 /private/file.txt
Единственный недостаток shred — данная утилита не умеет работать с директориями. Поэтому если вам требуется уничтожить содержимое целого каталога с вложенными папками, стоит воспользоваться wipe. В данном примере мы отдали команду рекурсивно (-r) удалить все, что находится в папке private, а также отключили запрос подтверждения удаления папок и файлов (-f), которое wipe выводит по умолчанию. Среди интересных дополнительных опций, поддерживаемых утилитой, стоит выделить принудительное выполнение chmod для каталогов и файлов, защищенных от перезаписи (-c), работу в тихом режиме (-s) и возможность заставить wipe следовать символическим ссылкам (-D, конфликтует с -r).
wipe -rf /private/*
Mac OS
В версиях операционной системы с 10.4 по 10.10 вы могли инициировать перезапись файлов, переместив их в корзину, а затем выбрав в Finder опцию «Очистить корзину необратимо», однако впоследствии Apple от нее отказалась. Вплоть до версии 10.11 для безопасного удаления данных можно было воспользоваться консольной командой srm. В данном примере мы рекурсивно удаляем содержимое папки private (-r), перезаписывая каждый файл случайными данными 7 раз подряд (-m). Также можно выбрать однократную перезапись файлов (-s) или же не указывать этот параметр вовсе — в этом случае утилита выполнит 35 проходов.
srm -rm /private/
В актуальных версиях Mac OS инициировать безопасное удаление файлов с жесткого диска можно с помощью Дисковой утилиты (для этого необходимо нажать на кнопку «Параметры безопасности» и задать количество циклов перезаписи), либо через терминал, используя конструкцию вида. Параметр -P является специфичным для Mac OS и сообщает утилите, что удаляемые файлы необходимо трижды перезаписать.
rm -P /private/file.txt
🔥2❤1
Команды для получения информации о системе в Linux
Если хочешь быстро узнать, что происходит с твоей системой — эти команды помогут:
▪️
Показывает информацию о системе: версию ядра, архитектуру и тип машины.
▪️
Только версия работающего ядра Linux.
▪️
Отображает текущее время, как давно включён компьютер, число пользователей и среднюю нагрузку.
▪️
Выводит имя хоста (имя машины в сети).
▪️
Показывает IP-адрес текущего хоста.
▪️
История перезагрузок системы: когда и как долго работала.
▪️
Текущая дата и время.
▪️
Подробности о системных часах и часовом поясе.
▪️
Простой календарь текущего месяца.
▪️
Кто сейчас в системе и чем занят.
▪️
Имя текущего пользователя.
▪️
Информация о пользователе
Если хочешь быстро узнать, что происходит с твоей системой — эти команды помогут:
▪️
uname
Показывает информацию о системе: версию ядра, архитектуру и тип машины.
▪️
uname -r
Только версия работающего ядра Linux.
▪️
uptime
Отображает текущее время, как давно включён компьютер, число пользователей и среднюю нагрузку.
▪️
hostname
Выводит имя хоста (имя машины в сети).
▪️
hostname -i
Показывает IP-адрес текущего хоста.
▪️
last reboot
История перезагрузок системы: когда и как долго работала.
▪️
date
Текущая дата и время.
▪️
timedatectl
Подробности о системных часах и часовом поясе.
▪️
cal
Простой календарь текущего месяца.
▪️
w
Кто сейчас в системе и чем занят.
▪️
whoami
Имя текущего пользователя.
▪️
finger username
Информация о пользователе
username
(если установлен пакет finger
).🥰2❤1👍1💩1