Всякие полезные команды и скрипты в терминале Linux

Сделать дамп всех баз данных в отдельные файлы
#!/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
Данная заметка будет постоянно дополняться

Комментарии ()

    Есть вопрос или предложение пиши в Telegram @cloudsv

    MTProto прokси для Telegram

    Прямой эфир

    cloudsv 31 июля 2019, 00:34
    О жизни 33 year old 0
    cloudsv 25 июня 2019, 21:29
    Telegram Полезные боты в Telegram 0
    cloudsv 24 октября 2018, 00:27
    О жизни Обновление Scala Rider G4 11
    cloudsv 21 октября 2018, 23:16
    Arch Linux Памятка по основным утилитам Linux 0