Как скопировать структуру каталогов в Linux
В этой статье мы расскажем как в две команды скопировать структуру директорий без файлов через командрую строку Linux.
Сначала необходимо перейти в директорию, где находятся нужная структура
Затем выполняем команду, которая находит директории и сохраняет пути к ни в файл
Теперь необходимо перенести этот файл в директорию, где мы хотим воссоздать структуру
Переходим туда
И используя xargs читаем из файла пути и создаем по ним структуру директорий
📲 Мы в MAX
👉 @sysadminof
В этой статье мы расскажем как в две команды скопировать структуру директорий без файлов через командрую строку Linux.
Сначала необходимо перейти в директорию, где находятся нужная структура
# cd /dir1Затем выполняем команду, которая находит директории и сохраняет пути к ни в файл
# find . -type d > dirs.txtТеперь необходимо перенести этот файл в директорию, где мы хотим воссоздать структуру
# mv ./dirs.txt /dir2Переходим туда
# cd /dir2И используя xargs читаем из файла пути и создаем по ним структуру директорий
# xargs mkdir -p < dirs.txt📲 Мы в MAX
👉 @sysadminof
👍8❤2🔥1😨1
Полезные команды Linux. Манипуляции с текстом
#
Вывести содержимое файла, нумеруя выводимые строки
#
Вывести только не четные строки файла
#
Вывести первую и третью колонки. Разделение, по-умолчанию, по пробельным символам или символу табуляции
#
Вывести первую колонку содержимого файла. Разделение, по-умолчанию, по пробельным символам или символу табуляции
#
Сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах
#
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file1
#
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file2
#
Отобрать и вывести строки содержащие цифровые символы из файла /var/log/messages
#
Отобрать и вывести строки, начинающиеся с сочетания символов "Aug", из файла /var/log/messages
#
Отобрать и вывести строки, содержащие сочетание символов "Aug" из файла /var/log/messages
#
Отобрать и вывести строки, содержащие сочетание символов "Aug", из всех файлов, расположенных в директории /var/log и ниже
#
Объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
#
Объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
#
Сравнить содержимое двух файлов
#
Заменить string1 на string2 в файле example.txt и вывести содержимое
#
Удалить пустые строки и комментарии из файла example.txt
#
Удалить пустые строки и комментарии из файла example.txt
#
Удалить первую строку из файла example.txt
#
Отобразить только строки содержащие string1
#
Удалить строку string1 из текста файла example.txt не изменяя всего остального
#
Удалить пустые символы в конце каждой строки файла example.txt
#
Вывести пятую строку
#
Вывести строки со второй по пятую
#
Заменить последовательность из любого количества нулей одним нулём
#
Вывести отсортированное содержимое двух файлов
#
Вывести отсортированное содержимое двух файлов исключая повторные значения
#
Вывести уникальные значения из отсортированного содержимого двух файлов
#
Вывести только повторяющиеся значения из отсортированного содержимого двух файлов
#
Перевести символы нижнего регистра в верхний
📲 Мы в MAX
👉 @sysadminof
#
cat -n file1Вывести содержимое файла, нумеруя выводимые строки
#
cat example.txt | awk 'NR%2==1'Вывести только не четные строки файла
#
echo a b c | awk '{print $1,$3}'Вывести первую и третью колонки. Разделение, по-умолчанию, по пробельным символам или символу табуляции
#
echo a b c | awk '{print $1}'Вывести первую колонку содержимого файла. Разделение, по-умолчанию, по пробельным символам или символу табуляции
#
comm -3 file1 file2Сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах
#
comm -1 file1 file2Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file1
#
comm -2 file1 file2Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file2
#
grep [0-9] /var/log/messagesОтобрать и вывести строки содержащие цифровые символы из файла /var/log/messages
#
grep ^Aug /var/log/messagesОтобрать и вывести строки, начинающиеся с сочетания символов "Aug", из файла /var/log/messages
#
grep Aug /var/log/messagesОтобрать и вывести строки, содержащие сочетание символов "Aug" из файла /var/log/messages
#
grep Aug -R /var/log/*Отобрать и вывести строки, содержащие сочетание символов "Aug", из всех файлов, расположенных в директории /var/log и ниже
#
paste -d '+' file1 file2Объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
#
paste file1 file2Объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
#
sdiff file1 file2Сравнить содержимое двух файлов
#
sed 's/string1/string2/g' example.txtЗаменить string1 на string2 в файле example.txt и вывести содержимое
#
sed '/ *#/d; /^$/d' example.txtУдалить пустые строки и комментарии из файла example.txt
#
sed '/^$/d' example.txtУдалить пустые строки и комментарии из файла example.txt
#
sed -e '1d' exampe.txtУдалить первую строку из файла example.txt
#
sed -n '/string1/p'Отобразить только строки содержащие string1
#
sed -e 's/string//g' example.txtУдалить строку string1 из текста файла example.txt не изменяя всего остального
#
sed -e 's/ *$//' example.txtУдалить пустые символы в конце каждой строки файла example.txt
#
sed -n '5p;5q' example.txtВывести пятую строку
#
sed -n '2,5p' example.txtВывести строки со второй по пятую
#
sed -e 's/00*/0/g' example.txtЗаменить последовательность из любого количества нулей одним нулём
#
sort file1 file2Вывести отсортированное содержимое двух файлов
#
sort file1 file2 | uniqВывести отсортированное содержимое двух файлов исключая повторные значения
#
sort file1 file2 | uniq -uВывести уникальные значения из отсортированного содержимого двух файлов
#
sort file1 file2 | uniq -dВывести только повторяющиеся значения из отсортированного содержимого двух файлов
#
echo 'word' | tr '[:lower:]' '[:upper:]'Перевести символы нижнего регистра в верхний
📲 Мы в MAX
👉 @sysadminof
👍8🔥3
Шпаргалка по часто используемым командам systemctl
1. Посмотреть статус службы. Покажет статус службы на примере сети network
2. Запустить сервис. Запустит сервис баз данных на примере mysql
3. Остановить службу. Остановит сервис времени ntpd
4. Перезапустить службу. Перезапустит веб-сервер nginx
5. Включить автозапуск службы. Разрешит автозапуск веб-сервера apache
6. Отключить автозапуск службы. Запретит автозапуск брандмауэра firewalld
7. Выполнить команду на удаленной системе. Остановит cron на компьютере с IP-адресом 192.168.0.15, подключившись под учетной записью root
8. Перезагрузить сервер. Перезагрузит локальный сервер
9. Проверка работы сервиса. Выполняется с помощью опции is-active. В данном примере мы проверим работу службы docker.
а) Если сервис запущен, мы увидим:
active
б) Если не запущен:
failed
... или:
inactive
в) Если такого сервиса нет в системе:
unknown
... или:
inactive
Если сервис не работает или его нет в системе, команда вернет код ошибки, таким образом конструкция:
... приведет к выполнению команды docker run hello-world только в том случае, если сервис docker работает.
📲 Мы в MAX
👉 @sysadminof
1. Посмотреть статус службы. Покажет статус службы на примере сети network
systemctl status network2. Запустить сервис. Запустит сервис баз данных на примере mysql
systemctl start mysql3. Остановить службу. Остановит сервис времени ntpd
systemctl stop ntpd4. Перезапустить службу. Перезапустит веб-сервер nginx
systemctl restart nginx5. Включить автозапуск службы. Разрешит автозапуск веб-сервера apache
systemctl enable apache6. Отключить автозапуск службы. Запретит автозапуск брандмауэра firewalld
systemctl disable firewalld7. Выполнить команду на удаленной системе. Остановит cron на компьютере с IP-адресом 192.168.0.15, подключившись под учетной записью root
systemctl --host root@192.168.0.15 stop cron8. Перезагрузить сервер. Перезагрузит локальный сервер
systemctl reboot9. Проверка работы сервиса. Выполняется с помощью опции is-active. В данном примере мы проверим работу службы docker.
systemctl is-active dockerа) Если сервис запущен, мы увидим:
active
б) Если не запущен:
failed
... или:
inactive
в) Если такого сервиса нет в системе:
unknown
... или:
inactive
Если сервис не работает или его нет в системе, команда вернет код ошибки, таким образом конструкция:
systemctl is-active docker && docker run hello-world... приведет к выполнению команды docker run hello-world только в том случае, если сервис docker работает.
📲 Мы в MAX
👉 @sysadminof
👍8
Чем отличается команда rm от unlink?
Обе эти команды умеют удалять, но в 99% используется именно rm, потому что про unlink вы либо не слышали, либо rm с головой хватает.
Есть ошибочное мнение, что unlink предназначен для удаления лишь ссылок — команда вполне может удалять обычные файлы. А если углубиться, то весь процесс удаления в Linux, это удаление ссылок.
У unlink есть всего лишь два ключа запуска help и version. Очень ограниченный инструмент, но чем инструмент проще, тем проще его синтаксис.
Софт очень молчаливый — после удаления, он промолчит и ничего не выведет на экран.
Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы.
Unlink не умеет работать с wildcard и globbing шаблонами. Так же вы не сможете с помощью нее удалить каталог.
Запустим команду и пытаемся насильно удалить файл которого нет в каталоге:
И получаем - НИЧЕГО. То есть rm -f не вернул ошибку, что файл отсутствует. А если сделать так:
получим ошибку:
unlink: cannot unlink 'test.txt': No such file or directory
То есть если нужно будет обработать результат выполнения команды rm -f, то будет непонятно, существовал ли вообще файл.
С unlink можно гибче обрабатывать эксепшены в скриптах. А еще при использовании команды unlink отсутствует проверка безопасности. Она удалит файл, защищенный от записи. Хотя современная версия rm теперь тоже так умеет.
Небольшой секрет: если нужно, чтобы файл никто не смог удалить, включая root:
chattr позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение).
Ключ i - сделает файл неизменяемым. Чтобы снять с файла этот аттрибут, в команде которая выше, замените знак «+» на «-».
📲 Мы в MAX
👉 @sysadminof
Обе эти команды умеют удалять, но в 99% используется именно rm, потому что про unlink вы либо не слышали, либо rm с головой хватает.
Есть ошибочное мнение, что unlink предназначен для удаления лишь ссылок — команда вполне может удалять обычные файлы. А если углубиться, то весь процесс удаления в Linux, это удаление ссылок.
У unlink есть всего лишь два ключа запуска help и version. Очень ограниченный инструмент, но чем инструмент проще, тем проще его синтаксис.
# unlink /tmp/hardlink
# unlink /tmp/fileСофт очень молчаливый — после удаления, он промолчит и ничего не выведет на экран.
Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы.
Unlink не умеет работать с wildcard и globbing шаблонами. Так же вы не сможете с помощью нее удалить каталог.
Запустим команду и пытаемся насильно удалить файл которого нет в каталоге:
rm -f test.txtИ получаем - НИЧЕГО. То есть rm -f не вернул ошибку, что файл отсутствует. А если сделать так:
unlink test.txtполучим ошибку:
unlink: cannot unlink 'test.txt': No such file or directory
То есть если нужно будет обработать результат выполнения команды rm -f, то будет непонятно, существовал ли вообще файл.
С unlink можно гибче обрабатывать эксепшены в скриптах. А еще при использовании команды unlink отсутствует проверка безопасности. Она удалит файл, защищенный от записи. Хотя современная версия rm теперь тоже так умеет.
Небольшой секрет: если нужно, чтобы файл никто не смог удалить, включая root:
chattr +i test.txtchattr позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение).
Ключ i - сделает файл неизменяемым. Чтобы снять с файла этот аттрибут, в команде которая выше, замените знак «+» на «-».
📲 Мы в MAX
👉 @sysadminof
👍6❤1🔥1🗿1
🥷 Living off the Browser — пентест из вкладки Chrome
Приглашаем на открытый урок.
🗓 05 октября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Пентест. Инструменты и методы проникновения в действии».
Программа вебинара
✔️ Как работает Direct Sockets API в Chrome
✔️ Почему Isolated Web Apps (IWA) — подписные и изолированные приложения
✔️ Как IWA открывают прямой доступ к сетевым протоколам транспортного уровня из JavaScript
Кому будет интересно:
Пентестерам и специалистам по информационной безопасности, которые хотят понять возможности браузера как инструмента для тестирования инфраструктуры.
🔗 Ссылка на регистрацию: https://vk.cc/d2bXbG
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Приглашаем на открытый урок.
🗓 05 октября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Пентест. Инструменты и методы проникновения в действии».
Программа вебинара
Кому будет интересно:
Пентестерам и специалистам по информационной безопасности, которые хотят понять возможности браузера как инструмента для тестирования инфраструктуры.
🔗 Ссылка на регистрацию: https://vk.cc/d2bXbG
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🔥 Bash: Удаление старых логов автоматически
📌 Расшифровка:
*
*
*
*
*
📅 Можно повесить этот скрипт на
📲 Мы в MAX
👉 @sysadminof
#!/bin/bash
# Удалить логи старше 7 дней в указанной директории
LOG_DIR="/var/log/myapp"
find "$LOG_DIR" -type f -name "*.log" -mtime +7 -delete
📌 Расшифровка:
*
find — ищем файлы*
-type f — только файлы*
-name "*.log" — с расширением .log*
-mtime +7 — старше 7 дней*
-delete — удаляем📅 Можно повесить этот скрипт на
cron, чтобы запускался каждый день:
# Открываем планировщик
crontab -e
# Добавляем строчку (запуск в 3:00 ночи)
0 3 * * * /path/to/script.sh
📲 Мы в MAX
👉 @sysadminof
👍4🔥3
Zenith - что-то вроде top или htop, но с диаграммами с возможностью масштабирования, использованием CPU, GPU, сети и диска.
Особенности
Дополнительные графики использования ЦП, памяти, сети и дисков
Быстрый просмотр свободного места на диске, IP-адресов сетевых карт, частоты процессора
Выделение основных пользователей ЦП, памяти и диска
Процент заряда батареи, время зарядки или разрядки, потребляемая мощность
Таблица процессов с возможностью фильтрации по типу верхней части, включающая использование диска каждым процессом
Изменение приоритета процесса
Представления диаграмм с возможностью масштабирования (с поддержкой прокрутки назад во времени)
Управление процессами с помощью сигналов
Сохранение данных о производительности между запусками
Метрики использования GPU для графических процессоров NVIDIA (с --features nvidia), включая использование GPU для каждого процесса
Графики свободного места на диске
Учет задержек (в Linux при запуске zenith с правами root)
Установка на дистрибутивы Linux на базе Debian/Ubuntu (64-бит)
https://github.com/bvaisvil/zenith
📲 Мы в MAX
👉 @sysadminof
Особенности
Дополнительные графики использования ЦП, памяти, сети и дисков
Быстрый просмотр свободного места на диске, IP-адресов сетевых карт, частоты процессора
Выделение основных пользователей ЦП, памяти и диска
Процент заряда батареи, время зарядки или разрядки, потребляемая мощность
Таблица процессов с возможностью фильтрации по типу верхней части, включающая использование диска каждым процессом
Изменение приоритета процесса
Представления диаграмм с возможностью масштабирования (с поддержкой прокрутки назад во времени)
Управление процессами с помощью сигналов
Сохранение данных о производительности между запусками
Метрики использования GPU для графических процессоров NVIDIA (с --features nvidia), включая использование GPU для каждого процесса
Графики свободного места на диске
Учет задержек (в Linux при запуске zenith с правами root)
Установка на дистрибутивы Linux на базе Debian/Ubuntu (64-бит)
sudo apt install curl
curl -sL https://raw.githubusercontent.com/wimpysworld/deb-get/main/deb-get | sudo -E bash -s install deb-gethttps://github.com/bvaisvil/zenith
📲 Мы в MAX
👉 @sysadminof
👍6🔥2