Для очистки экрана терминала мы вводим в командной строке
clear
, для выхода вводим exit
. Удобнее же очищать экран нажатием Ctrl + l ( ⌘ + l ), а закрывать терминал сочетанием Ctrl + d (⌘ + d).Иногда я запускаю Firefox из командной строки:
firefox https://freecodecamp.org
Но в таком случае при выходе из терминала браузер вылетает.
Избежать этого помогает команда
nohup
nohup firefox https://freecodecamp.org
Теперь при закрытии терминала Firefox не вылетает, но вылетает моя вкладка.
Лечится это запуском Firefox в качестве фонового процесса с помощью флага
&
:nohup firefox https://freecodecamp.org &
Теперь при выходе из терминала вкладки не страдают.
С помощью команды
killall
можно завершать процесс по его имени:killall firefox
Но удобнее использовать для этого
pkill
, которая позволяет вводить лишь часть имени:pkill fire*
Хотите узнать, как долго выполняется некая программа в оболочке? Просто добавьте в начале команды запуска
time
:time gcc -g *.c
Выполнение
uname -a
выводит информацию о системе. Хотите перепроверить, в каком дистрибутиве работаете?Просто наберите в оболочке
cat /etc/*rel*
Нужно заменить множественные вхождения слова в текстовом файле? Используйте команду
sed
:sed s'/apples/oranges/g' myfile.txt
В этом случае все вхождения слова apples будут заменены на oranges.
Если нужно заменить лишь первое вхождение в каждой строке, просто уберите суффикс
g
в конце команды:sed s'/apples/oranges/' myfile.txt
Символ
g
означает «глобально». В качестве разделителя выступает прямой слэш, хотя по факту можно использовать любой другой символsed s'_apples_oranges_'g ` myfile.txt
Простое использование
sed
производит замену только при выводе, оставляя исходный файл незатронутым.Для изменения самого файла используйте
-i
sed -i s'_apples_oranges_g' myfile.txt
Существует два типа IP-адресов: закрытые и публичные.
Закрытый IP присваивается системой, и его можно уточнить с помощью команды
ifconfig
.Если же вы хотите узнать публичный IP вашего ПК, который провайдер присваивает вашему интерфейсу, то при подключённом интернете просто выполните в командной строке:
curl ifconfig.me ; echo
или curl ifconfig.co ; echo
При нажатии клавиши «вверх» отображается последняя введённая команда. При выполнении
history
выводятся все введённые команды из истории Bash.Однако удобнее нажать Ctrl + r (⌘ + r) и начать набирать команду, на что оболочка начнёт предлагать автозаполнение из истории, и вам останется нажать «Ввод», когда будет найдена искомая команда.
Please open Telegram to view this post
VIEW IN TELEGRAM
TechVibe временно открывает доступ к уникальным материалам. Не упустите свой шанс!
Что вас ждет: 👇🏻
⏰ Материалы будут удалены через 48 часов!
Действуйте сейчас, чтобы не пропустить эту уникальную возможность
Подписывайтесь на
P.S.: Вся нужная инфа уже в закрепе канала. Не стесняйся, сделай первый шаг!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотели бы присоединиться к проекту, который приносит пользу миллионам пользователей? 🚀
В Авито актуальна вакансия в команду, которая занимается разработкой продукта по управлению виртуальной инфраструктурой:
1️⃣ SRE инженер в команду Dev
Также в поиске инженера команда инфраструктуры, которая обеспечивает весь фундамент Авито (от серверов до внутреннего облака):
2️⃣ Системный инженер HPC кластеров
А ещё есть вакансия в команде, которая занимается развитием и администрированием систем, повышающих безопасность компании, на основе Infrastructure as Code подхода:
3️⃣ DevOps Engineer
Вас будут ждать:
– достойная зарплата, размер которой обсуждается на собеседовании;
– прозрачная система премий;
– интересные и важные задачи на очень большом проекте;
– передовые технологии и подходы, возможность пробовать новое;
– опытные и заинтересованные коллеги, готовые оказать поддержку;
– мощное железо, дополнительные мониторы и всё, что нужно для продуктивной работы;
– личный бюджет на обучение, который можно тратить на книги, курсы и конференции;
– забота о здоровье: ДМС со стоматологией с первого дня, в офисе принимают терапевт и массажист;
– возможность работать удалённо и по желанию посещать комфортный офис в Москве или Санкт-Петербурге.
Скорее откликайтесь!
В Авито актуальна вакансия в команду, которая занимается разработкой продукта по управлению виртуальной инфраструктурой:
1️⃣ SRE инженер в команду Dev
Также в поиске инженера команда инфраструктуры, которая обеспечивает весь фундамент Авито (от серверов до внутреннего облака):
2️⃣ Системный инженер HPC кластеров
А ещё есть вакансия в команде, которая занимается развитием и администрированием систем, повышающих безопасность компании, на основе Infrastructure as Code подхода:
3️⃣ DevOps Engineer
Вас будут ждать:
– достойная зарплата, размер которой обсуждается на собеседовании;
– прозрачная система премий;
– интересные и важные задачи на очень большом проекте;
– передовые технологии и подходы, возможность пробовать новое;
– опытные и заинтересованные коллеги, готовые оказать поддержку;
– мощное железо, дополнительные мониторы и всё, что нужно для продуктивной работы;
– личный бюджет на обучение, который можно тратить на книги, курсы и конференции;
– забота о здоровье: ДМС со стоматологией с первого дня, в офисе принимают терапевт и массажист;
– возможность работать удалённо и по желанию посещать комфортный офис в Москве или Санкт-Петербурге.
Скорее откликайтесь!
pwgen
или генератор, встроенный в keepassx
. А можно написать простой генератор паролей на bash.SYMBOLS=""
for symbol in {A..Z} {a..z} {0..9}; do SYMBOLS=$SYMBOLS$symbol; done
SYMBOLS=$SYMBOLS'!@#$%&*()?/\[]{}-+_=<>.,'
# Строка со всеми символами создана.
# Теперь нам надо в цикле с количеством итераций равным длине пароля
# случайным образом взять один символ и добавить его в строку, содержащую пароль.
PWD_LENGTH=16 # длина пароля
PASSWORD="" # переменная для хранения пароля
RANDOM=256 # инициализация генератора случайных чисел
for i in `seq 1 $PWD_LENGTH`
do
PASSWORD=$PASSWORD${SYMBOLS:$(expr $RANDOM % ${#SYMBOLS}):1}
done
echo $PASSWORD
Please open Telegram to view this post
VIEW IN TELEGRAM
/etc/network/interfaces
. Примем, что настраиваемый узел обладает только одним сетевым интерфейсом с именем «ens33». Скрипт должен обеспечивать возможность указания статического IP-адреса, маски подсети и шлюза по умолчанию.auto ens33
iface ens33 inet static
address ЗНАЧЕНИЕ_IP_АДРЕСА
netmask ЗНАЧЕНИЕ_МАСКИ_СЕТИ
gateway ЗНАЧЕНИЕ_ШЛЮЗА_ПО_УМОЛЧАНИЮ
Самый простой вариант решения задачи, которым обычно пользуются начинающие разработчики, — это поместить шаблон в тело скрипта и использовать локальные переменные в качестве подстановочных значений.
#!/bin/bash
IP="192.168.0.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.0.1"
TEMPLATE="$(
cat << EOF
auto ens33
iface ens33 inet static
address $IP
netmask $NETMASK
gateway $GATEWAY
EOF
)"
echo -e "$TEMPLATE"
auto ens33
iface ens33 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1
Создадим файл шаблон «template.txt» следующего содержания:
auto ens33
iface ens33 inet static
address $IP
netmask $NETMASK
gateway $GATEWAY
envsubst
, которая ищет во входящем потоке строки вида $имя_переменной
или ${имя_переменной}
и заменяет их на значение соответствующих переменных. Важно отметить, что для работы этой утилиты переменные должны быть отмечены ключевым словом export. С учётом всего вышесказанного наш скрипт будет выглядеть следующим образом:#!/bin/bash
export IP="192.168.0.10"
export NETMASK="255.255.255.0"
export GATEWAY="192.168.0.1"
envsubst < template.txt
Please open Telegram to view this post
VIEW IN TELEGRAM
Функционал. Эксплуатация. Преимущества и недостатки.
3 года тестируем и исследуем российские платформы виртуализации.
Собрали весь материал в одном посте
2022: сравнение шести платформ
2024: характеристики одиннадцати платформ
2022-2023 год:
Astra Linux, «Брест»
zVirt
Альт сервер виртуализации на базе OpenNebula
Альт сервер виртуализации на базе Proxmox
РЕД виртуализация
РУСТЭК
2024 год:
zVirt
SpaceVM
Numa vServer
VMware по-русски: как мы внедряли отечественные платформы виртуализации
Как электросети переехали в частные облака и на российскую виртуализацию
ВРС на базе Basis.Workplace + Р-Платформа
ВРС на базе Termidesk + zVirt
SPACE VDI
Please open Telegram to view this post
VIEW IN TELEGRAM
bashrc
на удаленных машинах и расширенное проксирование.Please open Telegram to view this post
VIEW IN TELEGRAM
Как разрабатывать и настраивать Grafana Stack для эффективного визуализирования метрик и логов?
🔹Расскажем на открытом уроке «Grafana Stack: закрываем все современные потребности Observability», урок приурочен к курсу «Observability: мониторинг, логирование, трейсинг» от Otus.
Рассмотрим ключевые компоненты Grafana Stack и их роли в Observability.
Настроим интеграции с различными системами для получения актуальных данных.
✅ Практика: Создание настраиваемых дашбордов и алертов, для эффективного управления производительности и надежности сервисов
👉 Регистрация и подробности:
https://otus.pw/6D1pa/?erid=LjN8KcNUf
#реклама
О рекламодателе
🔹Расскажем на открытом уроке «Grafana Stack: закрываем все современные потребности Observability», урок приурочен к курсу «Observability: мониторинг, логирование, трейсинг» от Otus.
Рассмотрим ключевые компоненты Grafana Stack и их роли в Observability.
Настроим интеграции с различными системами для получения актуальных данных.
✅ Практика: Создание настраиваемых дашбордов и алертов, для эффективного управления производительности и надежности сервисов
👉 Регистрация и подробности:
https://otus.pw/6D1pa/?erid=LjN8KcNUf
#реклама
О рекламодателе
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Станьте разработчиком нейро-сотрудников на Python и зарабатывайте от 150.000р в месяц 🔥🔥🔥
Мы научим вас создавать топовых нейро-сотрудников на базе GPT-4 Omni, и вы сможете:
1️⃣ Устроиться разработчиком в крупную компанию и зарабатывать от 150 тысяч ₽ в месяц
2️⃣ Разрабатывать такие проекты на заказ и зарабатывать от 500 тысяч ₽ за проект
3️⃣ Создать нейро-сотрудника в вашей компании и вырасти на +30-100% в зарплате
Что будет на интенсиве?
🧬 Теория: как создаются нейро-сотрудники с GPT-4o на Python
🧬 Практика: мы создадим нейро-консультанта, нейро-HR, нейро-маркетолога и др.
Ведущий интенсива - Senior AI разработчик нейросетей и основатель Университета искусственного интеллекта
🔥 Регистрируйтесь на бесплатный интенсив! Встречаемся в ближайший четверг!
Мы научим вас создавать топовых нейро-сотрудников на базе GPT-4 Omni, и вы сможете:
1️⃣ Устроиться разработчиком в крупную компанию и зарабатывать от 150 тысяч ₽ в месяц
2️⃣ Разрабатывать такие проекты на заказ и зарабатывать от 500 тысяч ₽ за проект
3️⃣ Создать нейро-сотрудника в вашей компании и вырасти на +30-100% в зарплате
Что будет на интенсиве?
🧬 Теория: как создаются нейро-сотрудники с GPT-4o на Python
🧬 Практика: мы создадим нейро-консультанта, нейро-HR, нейро-маркетолога и др.
Ведущий интенсива - Senior AI разработчик нейросетей и основатель Университета искусственного интеллекта
🔥 Регистрируйтесь на бесплатный интенсив! Встречаемся в ближайший четверг!
cron
, чтобы выполнять анализ по расписанию и высылать результат вам на почту. Результат будем сохранять в отдельном файле на каждый день и в одном файле будем собирать всю информацию. Саму информацию представим в виде двух значений — количество попыток и IP-адрес. Таким образом мы можем посмотреть заодно, правильно ли работает fail2ban
и сколько попыток залогиниться на почтовый сервер проходит за сутки.#!/bin/bash
# Название файла с адресами, включающее дату
IP_BLACKLIST="/root/scripts/blacklist-`date "+%Y-%m-%d"`.lst"
# Фильтрация ошибок аутентификации
CURRENT_DATE=`date "+%b %d"`
grep "dovecot:auth" /var/log/auth.log \
| grep "authentication failure" \
| grep "$CURRENT_DATE" \
| cut -d" " -f 14 \
| sed 's/rhost=//' \
| sort | uniq -c >> $IP_BLACKLIST
# Добавление в большой список только IP-адресов из сегодняшнего лога
awk '{print $2}' $IP_BLACKLIST >> /root/scripts/blacklist-full.lst
# После добавления сортируем и убираем неуникальные адреса
cat /root/scripts/blacklist-full.lst | sort | uniq >> /root/scripts/blacklist-full.lst.new
rm /root/scripts/blacklist-full.lst
mv /root/scripts/blacklist-full.lst.new /root/scripts/blacklist-full.lst
# Выводим сегодняшний лог
cat $IP_BLACKLIST
/etc/crontab
следующую строчку:55 23 * * * root /root/scripts/check-auth-errors.sh
iptables
можно написать еще один скрипт, которым можно блокировать адреса из ежедневного лога:#!/bin/bash
IPLIST=$(awk '{print $2}' $1)
for IP in ${IPLIST}
do
echo -n Blocking ${IP} ...
iptables -t filter -A INPUT -s ${IP} -j DROP
echo Done
done
Please open Telegram to view this post
VIEW IN TELEGRAM
🎓 Тренинги Zabbix Сертифицированный Специалист 7.0 и Zabbix Сертифицированный Профессионал — ответ на вопрос «как быстро получить самые полные знания по Zabbix 7.0».
@zabbix_ru — наш телеграм-канал, посвященный Zabbix и ничему кроме Zabbix.
Тренинги Zabbix — лучшая инвестиция, которую вы можете сделать для себя или своих коллег. Мы опросили участников предыдущих потоков и сформулировали основные преимущества от прохождения тренингов:
📖 устранить пробелы. Часто знания Zabbix ограничиваются эпизодическим изучением документации и фрагментарны. Курс поможет систематизировать знания и откроет для вас новые возможности уже знакомой системы мониторинга.
📖 делать своими силами. Участие подрядчиков в проектах внедрения подразумевает предоставление доступа в ваше окружение. Прохождение официальных курсов Zabbix на русском языке позволит вам выполнять работы своими силами.
📖 распространять знания. Сотрудники, получившие сертификат Zabbix, не просто совершенствуют свои собственные технические навыки — они привносят полученные знания в коллектив и делятся ими со своими коллегами.
📖 получить сертификат. Это официальный вендорский курс Zabbix, переведенный на русский язык. После прохождения курса у вас будет возможность сдать экзамен и получить сертификат. Сертификат подтверждает знания и дает дивиденды компании и мотивацию сотрудникам.
📖 получить компетенции. Курсы проводят сертифицированные тренеры и эксперты Zabbix, которые регулярно повышают свою компетенцию как путем прохождения дополнительного обучения, так и участием в проектах внедрения Zabbix.
Проведем 2 тренинга подряд в этом году. Далее только в новом 2025. Программа тренингов по ссылкам выше.
📅 Zabbix сертифицированный специалист 7.0 (ZCS 7.0) 11-15 ноября
📅 Zabbix сертифицированный профессионал 7.0 (ZCP 7.0) 18-20 ноября
Подробную информацию вы можете запросить, написав @galssoftware или через почту welcome@gals.software.
@zabbix_ru — наш телеграм-канал, посвященный Zabbix и ничему кроме Zabbix.
Тренинги Zabbix — лучшая инвестиция, которую вы можете сделать для себя или своих коллег. Мы опросили участников предыдущих потоков и сформулировали основные преимущества от прохождения тренингов:
📖 устранить пробелы. Часто знания Zabbix ограничиваются эпизодическим изучением документации и фрагментарны. Курс поможет систематизировать знания и откроет для вас новые возможности уже знакомой системы мониторинга.
📖 делать своими силами. Участие подрядчиков в проектах внедрения подразумевает предоставление доступа в ваше окружение. Прохождение официальных курсов Zabbix на русском языке позволит вам выполнять работы своими силами.
📖 распространять знания. Сотрудники, получившие сертификат Zabbix, не просто совершенствуют свои собственные технические навыки — они привносят полученные знания в коллектив и делятся ими со своими коллегами.
📖 получить сертификат. Это официальный вендорский курс Zabbix, переведенный на русский язык. После прохождения курса у вас будет возможность сдать экзамен и получить сертификат. Сертификат подтверждает знания и дает дивиденды компании и мотивацию сотрудникам.
📖 получить компетенции. Курсы проводят сертифицированные тренеры и эксперты Zabbix, которые регулярно повышают свою компетенцию как путем прохождения дополнительного обучения, так и участием в проектах внедрения Zabbix.
Проведем 2 тренинга подряд в этом году. Далее только в новом 2025. Программа тренингов по ссылкам выше.
📅 Zabbix сертифицированный специалист 7.0 (ZCS 7.0) 11-15 ноября
📅 Zabbix сертифицированный профессионал 7.0 (ZCP 7.0) 18-20 ноября
Подробную информацию вы можете запросить, написав @galssoftware или через почту welcome@gals.software.
<(command)
. Создаёт именованный канал (FIFO) и подключает к нему вывод команды внутри скобок. Именованный канал ведёт себя как файл, что позволяет использовать его в качестве входа для другой команды. >(command)
. Также создаёт именованный канал, но подключает его к входу команды внутри скобок. Это позволяет перенаправить вывод одной команды на вход другой команды.Подстановку процесса можно использовать для сравнения вывода двух команд с помощью команды diff. Например, для сравнения вывода ls в двух разных каталогах:
diff <(ls dir1) <(ls dir2)
Вы можете использовать подстановку процесса, чтобы отправить вывод команды нескольким командам. Например, чтобы отправить вывод ls и в grep, и в wc:
ls | tee >(grep 'txt$') >(wc -l) > /dev/null
Подстановку процессов можно объединить в цепочку для создания сложных конвейеров. Например, чтобы отсортировать и подсчитать слова в текстовом файле, а затем отобразить 10 самых распространенных слов:
cat file.txt | tr '[:space:]' '\n' | grep -v '^$' | sort | uniq -c | sort -nr | head -n 10
Предположим, у вас есть два отсортированных файла, file1.txt и file2.txt, и вы хотите объединить их в новый отсортированный файл, merged.txt . Вы можете использовать команду sort вместе с подстановкой процесса, чтобы добиться этого:
sort -m <(sort file1.txt) <(sort file2.txt) > merged.txt
Вы можете использовать замену процессов для сравнения структуры каталогов двух каталогов с помощью команды tree и diff:
diff -y <(tree -fi dir1) <(tree -fi dir2)
Предположим, у вас есть файл журнала, и вы хотите извлечь записи, содержащие слово "ERROR", сохранить их в отдельный файл и отобразить на экране. Для этого можно использовать grep и tee с заменой процессов:
grep 'ERROR' logfile.txt | tee >(cat > errors.txt)
Вы можете использовать awk с подстановкой процессов для выполнения арифметических операций над столбцами CSV-файла. Например, чтобы сложить столбцы 2 и 3 CSV-файла и отобразить результат:
awk -F, '{ print $1, $2 + $3 }' <(cat file.csv)
Чтобы объединить стандартный поток вывода и стандартный поток ошибок в один поток, можно использовать замену процессов с помощью cat:
command 2> >(cat >&1)
В этом примере команда представляет команду, которую вы хотите выполнить. Подстановка процесса >(cat >&1) перенаправляет стандартный поток ошибок (файловый дескриптор 2) в стандартный поток вывода (файловый дескриптор 1).
Please open Telegram to view this post
VIEW IN TELEGRAM
-l
– перечислить имена связанных функций редактирования. -P
– перечислить названия привязываемых функций редактирования и их привязки, если они есть.-p
– то же, что и -P
, но выводит результат в форме, которую можно использовать в качестве входных данных для команды bind
. -S
– перечислить последовательности клавиш, которые вызывают макросы и их значения.-s
– то же, что и -S
, но выводит результат в форме, которую можно использовать в качестве входных данных для bind
.-V
– перечислить переменные и их значения, которые используются при привязке ключа bash
.-v
– то же, что и -V
, но выводит результат в форме, которую можно использовать в качестве входных данных для bind
. -q название функции
– отобразить (запросить) привязку клавиш для функции bash имя_функции
.-u имя функции
– отключить все ключи, привязанные к функции редактирования function-name
.-r последовательность клавиш
– удалить все привязки для последовательности клавиш keyseq
. -f имя файла
– считать привязки клавиш из файла имя_файла
и использовать их в качестве входных данных для команды привязка.-x keyseq:shell-команда
– привязать команду. Команда оболочки shell-command
будет выполнена bash, когда получит последовательность клавиш keyseq
.-X
– перечислить последовательности клавиш, привязанные к -x
, в форме, подходящей для ввода в bind
.Please open Telegram to view this post
VIEW IN TELEGRAM
Освой работу с Prometheus, Grafana, ELK, etc и настрой мониторинг!
✅ Владение инструментами Observability открывает новые карьерные горизонты администраторам Linux, DevOps-инженерам
Стройте сложные эффективные системы мониторинга и логирования инфраструктуры и приложений
💪 Ответьте на 15 вопросов и проверьте, насколько вы готовы к обучению на курсе «Observability: мониторинг, логирование, трейсинг» от OTUS.
Пройти тест и получить спец. предложение:
https://otus.pw/HhMG/?erid=LjN8KPGU9
#реклама
О рекламодателе
✅ Владение инструментами Observability открывает новые карьерные горизонты администраторам Linux, DevOps-инженерам
Стройте сложные эффективные системы мониторинга и логирования инфраструктуры и приложений
💪 Ответьте на 15 вопросов и проверьте, насколько вы готовы к обучению на курсе «Observability: мониторинг, логирование, трейсинг» от OTUS.
+ 5 новых занятий, для вашего профессионального развития
Пройти тест и получить спец. предложение:
https://otus.pw/HhMG/?erid=LjN8KPGU9
#реклама
О рекламодателе
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
download.sh:
#!/bin/bash
if [ "$1" == "" ]
then
echo "usage: $0 URL"
exit 0
fi
HOST=`echo $1 | sed 's/http\:\/\///' | sed -r 's/([^/])\/(.*)/\1/'`
FILENAME=`echo "$1" | sed -r 's/(.*)\/(.*)/\2/'`
PATH=`echo "$1" | sed 's/http\:\/\///' | sed -r "s/$HOST//" | sed "s/$FILENAME//"`
PORT=80
HEADERS="HTTP/1.1\r\nHost: $HOST\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
F="/tmp/dlfile"
exec 3<>/dev/tcp/$HOST/$PORT
echo -e "GET $PATH$FILENAME $HEADERS" >&3
/bin/cat <&3 > $F
/usr/bin/tail $F -n +$((`/bin/sed $F -e '/^\r$/q' | /usr/bin/wc -l`+1)) > $FILENAME
/bin/rm $F
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM