Иногда не стоит придумывать велосипед, и для этого есть уже целая утилита в
GNU Coreutils
Сделать дамп всех баз данных в отдельные файлы
#!/bin/bash
USER="root"
PASSWORD="password"
OUTPUT="/www/sql"
#rm "$OUTPUTDIR/*gz" > /dev/null 2>&1
databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
for db in $databases; do
if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then
echo "Dumping database: $db"
mysqldump -u $USER -p$PASSWORD --databases $db > `date +%Y%m%d`.$db.sql
# gzip $OUTPUT/`date +%Y%m%d`.$db.sql
fi
done
Получить из дампа только одну таблицу, 1 аргумент файл базы данных, 2 аргумент имя таблицы
#!/bin/sh
DB=$1
TABLE=$2
if [ -f $DB ]; then
/bin/gunzip -c $DB | /usr/bin/awk '/CREATE TABLE `'$TABLE'`/,/UNLOCK TABLES/' > /tmp/$DB.$TABLE.sql
else
echo 'FILE not found'
fi
Получить структуру базы данных из дампа
#!/bin/sh
DB=$1
if [ -f $DB ]; then
/bin/gunzip -c $DB | /usr/bin/awk '/CREATE TABLE /,/ENGINE=/' > /tmp/$DB.$TABLE.sql
else
echo 'FILE not found'
fi
Проделать нечто со списком файлов
for list in `ls -1 /`; do echo "File -- ${list}"; done
Если в имени файла есть пробелы лучше использовать
while.
(while read i; do cp "${i}" "/destination"; done) < list
Сравнить два файла на наличие нехватки строк командой grep, данная команда покажет какие строки исчезли из файла new
grep -vFx old -f new
Или можно использовать diff
diff old new | grep -E "^<" | sed -e 's/^< //g'
Прослушать микрофон удаленного компьютера по ssh
ssh user@host 'arecord -'|aplay -
Подключиться к камере удаленного компьютера по ssh
ssh user@host LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so ffmpeg -an -f video4linux2 -s 640x480 -i /dev/video0 -r 10 -b:v 500k -f matroska - | mplayer
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so — нужно если изображение будет перевернуто
Простейший сниффер на python2
#Packet sniffer in python
#For Linux
import socket
#create an INET, raw socket
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
# receive a packet
while True:
print s.recvfrom(65565)
Создать gif из видео
ffmpeg -ss 00:22:00.000 -i yesbuddy.mov -r 10 -s 320x240 -t 00:00:10.000 output.gif
Перевернуть видео на 90 градусов без конвертации
ffmpeg -i in.mp4 -metadata:s:v rotate="-90" -codec copy out.mp4
Переконвертировать видео с указанным максимальные битрейтом, если нужно аля gif добавляем
-an
вырежет звук
ffmpeg -i in.mp4 -c:v libx264 -b:v 1M -maxrate 1.5M out.mp4
Заменить определенную строку в нескольких файлах
find -name "шаблонфайла*.txt" -exec replace "Что меняем" "На что меняем" -- {} \;
Вставить строку в определенное место в тексте при помощи
sed
После:
find -type f -name "шаблонфайла*.txt" -exec sed -i '/Что ищем/a Что вставляем/' {} \;
Перед:
find -type f -name "шаблонфайла*.txt" -exec sed -i '/Что ищем/i Что вставляем/' {} \;
Массовое переименование по регулярному выражению.
Для начала проверьте что у вас за утилита
rename командой
rename --version
Если так, то все ок
/usr/bin/rename using File::Rename version 0.20
А если так, то рекомендую установить
perl-rename
rename из util-linux 2.32
А теперь сама командая
find -type f -name "*.css?ver=3.3" -exec perl-rename 's/\?.*//' {} \;
\?.* — убрать все что после знака?
Если нужно скопировать файлы сохраняя путь можно использовать параметр
--parents у команды cp
cp --parents from/files.* to/
Посмотреть какие страны в текущий момент поддерживают соединение с сервером. нужно
geoip-bin
for ip in netstat -tapn | grep "ESTABLISHED" | awk '{split($5,S,":");print S[1]}';do geoiplookup $ip; done | sort | uniq -c
Передать по ssh данные используя архиватор tar
tar -cz DIR | ssh root@inetsystems.ru tar -xz --directory /PATH/TO/DIR
Вырезать нежелательные данные из потока между определенных патернов
cat file | sed '/Начало патерна/,/Конец патерна/g'
Вырезать содержимое между 2х паттернов
sed -n '/Начало патерна/,/Конец патерна/p' file.txt
Удалить ANSI color из вывода
sed 's/\x1b\[[0-9;]*m//g'
Посмотреть топ 10 запросов с одного IP к виртуальному хосту в apache
cat /var/log/apache2/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
Найти в файле IP адреса при помощи grep
grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" file.txt
Объединить данные из массива объектов json
cat file.json | jq '[.[].id] | join(",")'
Данная заметка будет постоянно дополняться
Комментарии ()