Рубрика "а что, так можно было"
Вот работаешь себе спокойно админом, делаешь какие-то действия из года в год, а потом раз и... так можно было? т.е. есть какие-то очень примитивные вещи, о которых ты просто не знаешь и работаешь как-то без них, ну и ладно. В частности как пример - обновить свое членство в группах можно без изменения текущей сессии - командой
А также, она меняет GID текущего пользователя, если у тебя есть на это права.
Командой
Спасибо vos за поправки.
#bash_tips_and_tricks
Вот работаешь себе спокойно админом, делаешь какие-то действия из года в год, а потом раз и... так можно было? т.е. есть какие-то очень примитивные вещи, о которых ты просто не знаешь и работаешь как-то без них, ну и ладно. В частности как пример - обновить свое членство в группах можно без изменения текущей сессии - командой
newgrp
. Эта команда открывает новый шелл в рамках текущего, получая следующую картину:├─bash───newgrp───bash───pstree
А также, она меняет GID текущего пользователя, если у тебя есть на это права.
Командой
newusers
можно создавать набор пользователей из файла. или заводить их в интерактивном режиме.Спасибо vos за поправки.
#bash_tips_and_tricks
копируем содержимое папки с dot-файлами
Казалось бы, чего сложного,
Для решения этой проблемы можно использовать такую конструкцию, которая скопирует все содержимое директории, включая dot-файлы и папки:
#bash_tips_and_tricks
Казалось бы, чего сложного,
cp -r /opt/* /app/
, однако, есть нюансы. Квантификатор * не учитывает файлы и папки, начинающиеся с точки, поэтому в список аргументов для копирования они не попадают.Для решения этой проблемы можно использовать такую конструкцию, которая скопирует все содержимое директории, включая dot-файлы и папки:
cp -r /opt/. /app
#bash_tips_and_tricks
Удаляем из директории все, исключая несколько файлов
Встретил несколько реализаций этой задачи - когда надо полностью почистить папку, включая dot-файлы, но при этом когда нужно сохранить какие-то определенные. Писать длинные скрипты, парсить вывод ls? слишком мутно. Проще всего включить опцию extglob в bash.
!(regexp) - список файлов в виде регулярки, которые нужно сохранить
.[!.]* - исключить из списка аргументов символ .
..?* - исключить из списка аргументов символ ..
два последних - для того чтобы rm не удалял ./. и ./.. - он их не удалит, но процесс завершится с ошибкой. (хотя и отработает, удалив все что нужно)
выключить обратно extglob можно с помощью ключа -u
#bash_tips_and_tricks
Встретил несколько реализаций этой задачи - когда надо полностью почистить папку, включая dot-файлы, но при этом когда нужно сохранить какие-то определенные. Писать длинные скрипты, парсить вывод ls? слишком мутно. Проще всего включить опцию extglob в bash.
shopt -s extglob
rm -rf !(package*.json|node_modules) .[!.]* ..?*
!(regexp) - список файлов в виде регулярки, которые нужно сохранить
.[!.]* - исключить из списка аргументов символ .
..?* - исключить из списка аргументов символ ..
два последних - для того чтобы rm не удалял ./. и ./.. - он их не удалит, но процесс завершится с ошибкой. (хотя и отработает, удалив все что нужно)
выключить обратно extglob можно с помощью ключа -u
#bash_tips_and_tricks
Список тегов, используемых в канале:
—-------------------------------
Лекции и материалы
—-------------------------------
#Занятие
#Лекции
Лекция
#junior
—---------
Linux
—---------
#ssh
#bash
#bash_tips_and_tricks
#awk
#tmux
#console
#utils
#troubleshooting
#nmap
#apt
#bind
#sound
#power_management
—----------
DevOps
—----------
#jenkins
#ansible
#git
#kubernetes
#deploy
#ceph
#docker
#puppet
—------------------
Virtualization
—------------------
#vmware
vagrant
—------------------
Networking
—---------------—
#networking
#proxy
#socks
—---------
InfoSec
—---------
#vulns
#security
#ctf
—-------------
Windows
—-------------
#RDTS
#windows_server2012
#RDP
—------------
Datacenters
—---------—
#ovh
#hetzner
—-------
Other
—-------
#android
#jira
—------------------------------------------------
Ссылки и сторонние материалы
—------------------------------------------------
#read
#thirdparty
Updated: 29.05.18
—-------------------------------
Лекции и материалы
—-------------------------------
#Занятие
#Лекции
Лекция
#junior
—---------
Linux
—---------
#ssh
#bash
#bash_tips_and_tricks
#awk
#tmux
#console
#utils
#troubleshooting
#nmap
#apt
#bind
#sound
#power_management
—----------
DevOps
—----------
#jenkins
#ansible
#git
#kubernetes
#deploy
#ceph
#docker
#puppet
—------------------
Virtualization
—------------------
#vmware
vagrant
—------------------
Networking
—---------------—
#networking
#proxy
#socks
—---------
InfoSec
—---------
#vulns
#security
#ctf
—-------------
Windows
—-------------
#RDTS
#windows_server2012
#RDP
—------------
Datacenters
—---------—
#ovh
#hetzner
—-------
Other
—-------
#android
#jira
—------------------------------------------------
Ссылки и сторонние материалы
—------------------------------------------------
#read
#thirdparty
Updated: 29.05.18
110 полезных команд для ОС Linux
Я потихонечку со студентами в рамках курса по Linux делаю проект, способствущий изучению командам, необходимым для работы в ОС linux. Пока это далеко даже не релизная версия, поэтому там точно есть множество несоответствий действительности, которые нужно исправлять. Если у Вас есть желание поспособствовать проекту - обращайтесь.
https://github.com/bykvaadm/SuzenEscape
группа для обсуждений: https://t.me/joinchat/CwI6k0yeabxC6teSz3usnQ
#learning #students #bash_tips_and_tricks #junior
Я потихонечку со студентами в рамках курса по Linux делаю проект, способствущий изучению командам, необходимым для работы в ОС linux. Пока это далеко даже не релизная версия, поэтому там точно есть множество несоответствий действительности, которые нужно исправлять. Если у Вас есть желание поспособствовать проекту - обращайтесь.
https://github.com/bykvaadm/SuzenEscape
группа для обсуждений: https://t.me/joinchat/CwI6k0yeabxC6teSz3usnQ
#learning #students #bash_tips_and_tricks #junior
GitHub
GitHub - bykvaadm/SuzenEscape: Game
Game. Contribute to bykvaadm/SuzenEscape development by creating an account on GitHub.
Bash shortcuts
Написал микро лабораторную работу для обучения хоткеям в bash. Все это доступно благодняря библиотеке readline. Все описанное ниже и более того -
https://medium.com/@bykvaadm/bash-shortcuts-d6f275a6ce9d
#bash_tips_and_tricks #junior
Написал микро лабораторную работу для обучения хоткеям в bash. Все это доступно благодняря библиотеке readline. Все описанное ниже и более того -
man readline
https://medium.com/@bykvaadm/bash-shortcuts-d6f275a6ce9d
#bash_tips_and_tricks #junior
Medium
bash shortcuts
Небольшая лабораторка по изучению основных хоткеев в bash. Подготовьте себе вот такую строку:
.bashrc vs .bash_profile
разница между ними в том что .bash_profile исполняется при прямом логине в shell, тогда как .bashrc выполняется для non-login shells. Таким образом если вы например хотите настроить алиасы для работы в консоли на удаленном сервере - ваш файл bash_profile, если это будет отличный от прямого входа в shell - тогда настраиваем bashrc.
But, if you’ve already logged into your machine and open a new terminal window (xterm) then .bashrc is executed before the window command prompt. .bashrc is also run when you start a new bash instance by typing /bin/bash in a terminal.
#bash_tips_and_tricks
разница между ними в том что .bash_profile исполняется при прямом логине в shell, тогда как .bashrc выполняется для non-login shells. Таким образом если вы например хотите настроить алиасы для работы в консоли на удаленном сервере - ваш файл bash_profile, если это будет отличный от прямого входа в shell - тогда настраиваем bashrc.
But, if you’ve already logged into your machine and open a new terminal window (xterm) then .bashrc is executed before the window command prompt. .bashrc is also run when you start a new bash instance by typing /bin/bash in a terminal.
#bash_tips_and_tricks
Forwarded from mindsellers
Полноценное логирование действий пользователей в консоли
Все, конечно, знают о ~/.bash_history. Равно как и о том, что его нужно за собой чистить, особенно, если занимаешься на чужой системе чем-то интересным. Недавно мне стало интересно, как же хранить реальные логи действий, да желательно с привязкой к тому, кто реально хулиганил на системе(мало ли, у кого гипотетически есть sudo) и ко времени.
В интернетах наткнулся на проект snoopy logger. Потестил, и выяснил, что штука вполне неплохая, лог пишет исправно, ставится или скриптами от разработчиков или из репозиториев (в Убунтовских есть).
Не вижу смысла в дальнейших подробностях - заходим и ставим!
https://github.com/a2o/snoopy
#linux #bash
Все, конечно, знают о ~/.bash_history. Равно как и о том, что его нужно за собой чистить, особенно, если занимаешься на чужой системе чем-то интересным. Недавно мне стало интересно, как же хранить реальные логи действий, да желательно с привязкой к тому, кто реально хулиганил на системе(мало ли, у кого гипотетически есть sudo) и ко времени.
В интернетах наткнулся на проект snoopy logger. Потестил, и выяснил, что штука вполне неплохая, лог пишет исправно, ставится или скриптами от разработчиков или из репозиториев (в Убунтовских есть).
Не вижу смысла в дальнейших подробностях - заходим и ставим!
https://github.com/a2o/snoopy
#linux #bash
GitHub
GitHub - a2o/snoopy: Snoopy Command Logger is a small library that logs all program executions on your Linux/BSD system.
Snoopy Command Logger is a small library that logs all program executions on your Linux/BSD system. - a2o/snoopy
bash использование grep как условия для if
хотелось бы составить такую конструкцию:
Проблема в том, что grep выдает на stdout строку, которую он нашел. и тогда на if подается набор каких-то отфильтрованных символов. шо бы таки этого избежать, можно просто использовать с грепом ключ --quiet. тогда if реагирует на код возврата - нашел - не нашел - true & false. как раз то что нужно для условия.
#bash_tips_and_tricks
хотелось бы составить такую конструкцию:
если бла-бла-бла (вывод) | grep <expression> то выполнить <cmd>
Проблема в том, что grep выдает на stdout строку, которую он нашел. и тогда на if подается набор каких-то отфильтрованных символов. шо бы таки этого избежать, можно просто использовать с грепом ключ --quiet. тогда if реагирует на код возврата - нашел - не нашел - true & false. как раз то что нужно для условия.
#bash_tips_and_tricks
Послать сообщение по tcp\udp когда под рукой вообще нет ничего
#bash_tips_and_tricks
echo "123" >/dev/tcp/127.0.0.1/7777Можно использовать для разных целей, в том числе чтобы протестировать доступность порта, если нет telnet
>/dev/tcp/127.0.0.1/23
bash: connect: Connection refused
bash: /dev/tcp/127.0.0.1/23: Connection refused
#bash_tips_and_tricks