Список тегов, используемых в канале:
—-------------------------------
Лекции и материалы
—-------------------------------
#Занятие
#Лекции
Лекция
#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
обрезаем строку, выбирая диапазон для отображения
Или через pipe или напрямую из файла можно заставить отобразить именно какой-то конкретный кусок строки. Например это может понадобиться для дебага при просмотре логов mysql, чтобы видеть запросы.
#bash_tips_and_tricks
cut -c 140-240 file
Или через pipe или напрямую из файла можно заставить отобразить именно какой-то конкретный кусок строки. Например это может понадобиться для дебага при просмотре логов mysql, чтобы видеть запросы.
#bash_tips_and_tricks
Самый быстрый способ узнать свой IP-адрес(*)
в качестве вывода получите список всех адресов, разделенных пробелом, кроме 127.0.0.1. Таким образом, если вы точно знаете что у вас всего один интерфейс (помимо lo), то вывод даст вам в чистом виде адрес интерфейса.
*при условии что у вас один интерфейс
#bash_tips_and_tricks
hostname -Iзначение ключа: -I, --all-ip-addresses all addresses for the host
в качестве вывода получите список всех адресов, разделенных пробелом, кроме 127.0.0.1. Таким образом, если вы точно знаете что у вас всего один интерфейс (помимо lo), то вывод даст вам в чистом виде адрес интерфейса.
*при условии что у вас один интерфейс
#bash_tips_and_tricks
Консольный генератор паролей
Утилита pwgen (есть в репозиториях debian) - генерирует поле из 8 символьных паролей. Вам остается только выбрать требуемое количество групп и убрать пробелы.
По просьбе особо упоротых раскрываю тему ебли сисек. Эта утилита имеет help, в котором рассказывается, что кроме ввода без параметров существуют еще и другие способы вывода паролей.
--
Еще несколько способов предложенных в качестве "нативных" генераторов:
#bash_tips_and_tricks
Утилита pwgen (есть в репозиториях debian) - генерирует поле из 8 символьных паролей. Вам остается только выбрать требуемое количество групп и убрать пробелы.
По просьбе особо упоротых раскрываю тему ебли сисек. Эта утилита имеет help, в котором рассказывается, что кроме ввода без параметров существуют еще и другие способы вывода паролей.
--
Еще несколько способов предложенных в качестве "нативных" генераторов:
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | sed 1q
base64 -w 15 /dev/urandom | head
#bash_tips_and_tricks
Вопросительные знаки вместо прав
если после набора
если после набора
ls -lash
получаем такую картину:? d????????? ? ? ? ? ? .то починить это можно такой командой:
? d????????? ? ? ? ? ? ..
? -????????? ? ? ? ? ? gpg.conf
? d????????? ? ? ? ? ? openpgp-revocs.d
? -????????? ? ? ? ? ? pubring.kbx
? -????????? ? ? ? ? ? pubring.kbx~
? -????????? ? ? ? ? ? trustdb.gpg
chmod -R a+X /path/to/folder#bash_tips_and_tricks
Способ, который поможет работать с файлами, имеющими в названиях ЛЮБЫЕ спецсимволы
1. находим inode
#bash_tips_and_tricks
1. находим inode
ls -i
2. делаем что хотим, например, выводим на экран:find . -inum 12345 -exec cat '{}' \;
#bash_tips_and_tricks
Назначаем права на файлы
Дано: есть N файлов с неизвестными разными правами
Задача: для всех файлов и директорий сделать права группы = правам пользователя
Решение: chmod -R g=u ./*
#bash_tips_and_tricks
Дано: есть N файлов с неизвестными разными правами
Задача: для всех файлов и директорий сделать права группы = правам пользователя
Решение: chmod -R g=u ./*
#bash_tips_and_tricks
удаление старых файлов
подсчет занимаемого места
для удаления вместо
А еще... есть ключ
подсчет занимаемого места
nice find ./ -type f -mtime +365 | xargs du | awk '{ t+=$1 } END { print t }'просмотр
find ./ -type f -mtime +365 -exec ls {} \;удаление
nice find ./ -type f -mtime +365 -exec rm {} \;удаление 2 (быстрее):
для удаления вместо
\;
лучше использовать \+
, так работает гораздо быстрее, т.к. \;
на каждый файл будет запускать rm, а \+
будет комбинировать пока не дойдет до ARG_MAX или не кончатся файлы.А еще... есть ключ
-delete
#bash_tips_and_tricksForwarded 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
Вывод результата выполнения команды в переменной с сохранением переносов
cmd=$(ps aux)#bash_tips_and_tricks
printf "%s\n" "$cmd"
для забывчивых людей...
UPD: добавлен выход если кол-во аргументов пустое
#bash_alias
kubectl ()Написал несколько функций, которые при использовании команд helm, kubectl подставляют вам в PS1 имя текущего контекста. Помогает когда у вас более нескольких кластеров и вы иногда выполняете команды не в том кластере, в котором хотели.
{
PS1="\e[1;31m $(/usr/bin/kubectl config current-context) \e[m \[\e]0;\u@\h: \w\a\]\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$ "
if [[ "$#" == "0" ]]; then return; fi
/usr/bin/kubectl "$@"
PS1="\e[1;31m $(/usr/bin/kubectl config current-context) \e[m \[\e]0;\u@\h: \w\a\]\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$ "
}
helm ()
{
PS1="\e[1;31m $(/usr/bin/kubectl config current-context) \e[m \[\e]0;\u@\h: \w\a\]\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$ "
if [[ "$#" == "0" ]]; then return; fi
read -p "Context $(tput setaf 1)$(/usr/bin/kubectl config current-context)$(tput sgr 0) is proper? [Y/n]: " userinput
if [[ ! "$userinput" == "" ]]; then return; fi
/usr/local/bin/helm "$@"
}
UPD: добавлен выход если кол-во аргументов пустое
#bash_alias
как массово переименовывать файлы по маске
дано: file.ololo.orig, результат: file.ololo
Пример 1:
https://mywiki.wooledge.org/UsingFind
https://mywiki.wooledge.org/ParsingLs
#bash_tips_and_tricks
дано: file.ololo.orig, результат: file.ololo
Пример 1:
for i in $(ls *.back); do echo $i is now ${i/back/hi-bo0om}; doneПример 2:
1.2.back is now 1.2.hi-bo0om
3.4.back is now 3.4.hi-bo0om
5.6.back is now 5.6.hi-bo0om
find -type f -name "*.html~" |Пример 3:
while read f; do
mv "$f" "${f%\~}"
done
for i in $(ls *.back); do basename $i .back; doneПример 4:
basename -s .back $(find ./ -name *.back)Пример 5: (нужно ставить доп утилиту)
rename 's/.back/.hi-bo0om/g' *
UPD Дополнительное чтиво:https://mywiki.wooledge.org/UsingFind
https://mywiki.wooledge.org/ParsingLs
#bash_tips_and_tricks
коллекция Bash-oneliner скриптов
По рекомендации коллеги, прикладываю ссылочку на годноту:
https://onceupon.github.io/Bash-Oneliner/
#bash
По рекомендации коллеги, прикладываю ссылочку на годноту:
https://onceupon.github.io/Bash-Oneliner/
#bash