Инструменты пользователя

Инструменты сайта


nix:shell:hacks

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
nix:shell:hacks [2022/04/08 10:00] – [Делпаем свой "Антивирус"] sannix:shell:hacks [2025/01/28 14:29] (текущий) – [Всякие хитрости в shell] san
Строка 1: Строка 1:
 ====== Всякие хитрости в shell ====== ====== Всякие хитрости в shell ======
 +
 +===== сбор сетевой информации о системе =====
 +
 +<file bash get_net_info.sh>
 +#!/bin/bash                                                                                                                                                                                                         
 +                                                                                                                                                                                                                    
 +log="$(basename $0).$(date +%Y%m%d%H%M%S).log"                                                                                                                                                                      
 +:>$log                                                                                                                                                                                                              
 +(                                                                                                                                                                                                                   
 +echo "ip a"                                                                                                                                                                                                         
 +ip a                                                                                                                                                                                                                
 +echo "ip r list table all"                                                                                                                                                                                          
 +ip r list table all                                                                                                                                                                                                 
 +echo "ip ru"                                                                                                                                                                                                        
 +ip ru                                                                                                                                                                                                               
 +                                                                                                                                                                                                                    
 +echo "iptables -S"                                                                                                                                                                                                  
 +iptables -S                                                                                                                                                                                                         
 +echo "iptables -S -t nat"                                                                                                                                                                                           
 +iptables -S -t nat                                                                                                                                                                                                  
 +echo "iptables -S -t mangle"                                                                                                                                                                                        
 +iptables -S -t mangle                                                                                                                                                                                               
 +) >>$log 2>&                                
 +</file>
  
 ===== получить список каталогов в текущей папке ===== ===== получить список каталогов в текущей папке =====
Строка 34: Строка 58:
 </code> </code>
  
-===== Делпаем свой "Антивирус" ===== 
-Ну антивирус - громко сказано, просто сканер текстовых файлов на предмет наличия в нем сигнальных строк. 
-База сигнатур, которые ищет скрипт находится в файле scanbase.txt расположенном рядом со скриптом. В файле scanbase.txt можно указывать как точные [под]строки, так и пользоваться некоторыми регулярными выражениями: 
  
-<file text scanbase.txt [enable_line_numbers="true"]> 
-Simple Text 
-Simple {0,1}Text 
-Simple[ -_]{0,1}Text 
-(S|s)imple (T|t)ext 
-^Simple Text 
-Simple Text$ 
-</file> 
-Пояснения к строкам сигнатур: 
-  - Поиск точного соответствия строке 
-  - Поиск строки с пробелом или без 
-  - Поиск строки, написанной слитно, либо с любым из разденителей: пробел, дефис, подчеркивание 
-  - Поиск строк, где слова начинаются с заглавной либо строчной буквы 
-  - Поиск шаблона в начале строки 
-  - Поиск шаблона в конце строки 
  
 +===== получить список каталогов в текущей папке =====
  
-Сам скрипт сканера: +<code bash> 
-<file bash scan.sh+ls -d */|sed 's/\/$//'|xargs
-#!/bin/bash+
  
-dir=$(cd "$(dirname "$0")"; pwd) #"+</code>
  
-if [[ -z "$1]]; then scandir="."; else scandir="$1"; fi +===== полный путь к каталогу скрипта ===== 
-inc="" + 
-if [[ -n "$2" ]]; then +<code bash> 
-  for i in $(echo "$2"tr , ' '); do inc="${inc} --include='*.$i'"; done +dir="$(cd "$(dirname "$0")"; pwd)" 
-fi+ 
 +</code> 
 + 
 +===== имя текущего скрипта ===== 
 + 
 +<code bash> 
 +basename $0 
 + 
 +</code> 
 + 
 +То же самое, но еще отрезаем от имени расширение файла 
 + 
 +<code bash> 
 +basename $0|sed 's/\.[^.]*$//' 
 + 
 +</code> 
 + 
 +То же самоено еще отрезаем от имени все расширения файла 
 + 
 +<code bash> 
 +basename $0|sed 's/\..*$//' 
 + 
 +</code> 
 + 
 +===== pipefail ===== 
 + 
 +Если опция pipefail включена — статус выхода из конвейера является значением последней (самой правойкоманды, завершённой с ненулевым статусом, или ноль — если работа всех команд завершена успешно. 
 + 
 +<code bash> 
 +set -o pipefail 
 + 
 +</code> 
 +===== tail с подсветкой слов ===== 
 + 
 +<code 4cs> 
 +tail -F /path/to/file | grep -E --color=always '^|word1|string 1
 + 
 + 
 +</code> 
 + 
 +Команда будет выводить на экран файл как обычный tail, но при этом подсвечивая строки 'word1' и 'string 1'. 
 + 
 +Ключ -E для grep включает расширенные регулярные выражения. Это даст возможность использования пайпа ''|'' как элемента ''или''. Первая часть строки для grep ''^'' позволяет выводить все строки (не отфильтровывая), так как совпадает с любой строкой
  
-echo "$(date +%Y-%m-%dT%H:%M:%S) Scaning '$scandir' ..." 
-cmd=$(echo egrep -rnI -f "$dir/scanbase.txt" "$inc" "$scandir/") 
-echo "$cmd" 
-eval $cmd 
-echo "$(date +%Y-%m-%dT%H:%M:%S) Scan End." 
  
-</file> 
nix/shell/hacks.1649401210.txt.gz · Последнее изменение: 2022/04/08 10:00 — san

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki