Показаны сообщения с ярлыком bash. Показать все сообщения
Показаны сообщения с ярлыком bash. Показать все сообщения

вторник, 6 июля 2021 г.

h265.sh

#!/bin/bash

file="../mp4"
if [ -d $file ]; then
        echo "  Директория существует :-) "
        for i in *.mp4; do ffmpeg -i "$i" -c:v libx265 -vtag hvc1 -s 720x480 -r 24 -threads 0 -af "volume=18dB" -crf 30 -ac 2 -strict experimental -c:a aac -b:a 160k "../mp4/${i%.*}.mp4"; done
else
        echo "   Директория не существует ;-( "
        mkdir ../mp4
        for i in *.mp4; do ffmpeg -i "$i" -c:v libx265 -vtag hvc1 -s 720x480 -r 24 -threads 0 -af "volume=18dB" -crf 30 -ac 2 -strict experimental -c:a aac -b:a 160k "../mp4/${i%.*}.mp4"; done
fi
for i in *.avi; do ffmpeg -i "$i" -c:v libx265 -vtag hvc1 -s 720x480 -r 24 -threads 0 -af "volume=18dB" -crf 30 -ac 2 -strict experimental -c:a aac -b:a 160k "../mp4/${i%.*}.mp4"; done
for i in *.mkv; do ffmpeg -i "$i" -c:v libx265 -vtag hvc1 -s 720x480 -r 24 -threads 0 -af "volume=18dB" -crf 30 -ac 2 -strict experimental -c:a aac -b:a 160k "../mp4/${i%.*}.mp4"; done

#-s 1280x720
#-c:a copy
#ffmpeg -i <input> -c:v libx264 -b:v 1M -x265-params pass=1 -f mp4 /dev/null
#ffmpeg -i <input> -c:v libx264 -b:v 1M -x265-params pass=2 <output>.mp4

среда, 23 октября 2019 г.

RHVoice

nano /sh/RHvoice_pogoda.sh

#!/bin/bash
# Санкт-Петербург

URLW1='https://neva.today/pogoda/'

wget -q -O- "$URLW1" > /tmp/pogoda_w

TEMP=$(cat /tmp/pogoda_w | grep "Сейчас" | grep -oE "[+-]*.[0-9]")
WETE=$(cat /tmp/pogoda_w | grep "acronym" | grep -oE "title*.*" | tail -n 1 | grep -oE "[а-яА-Я].*.[0-9]*." | sed 's/">/\ /g' | sed 's/<\/acronym>/ /g' | sed 's/<\/div>/ /g' | awk '{print $2,$3,$4,$5,$6,$7,$8,$9}')

echo "$TEMP" > /tmp/pogoda_temp1
echo "$WETE" > /tmp/pogoda_temp2
echo "Температура $TEMP, ветер $WETE"


воскресенье, 20 октября 2019 г.

rec stream mjpg

#!/bin/bash
echo "`date +%H\ %M\ %S\ %N` bash start"
#if ping -c 1 172.28.253.4 2>&1> /dev/null
# then ssh lv@172.28.253.4 '/sh/rec-stream.sh' &
#     echo "`date +%H\ %M\ %S\ %N` lv rec stream start [OK]"
#fi

if ping -c 1 192.168.0.11 2>&1> /dev/null
 then ssh evg@192.168.0.11 '/sh/rec_stream.sh' &
      echo "`date +%H\ %M\ %S\ %N` asus rec stream start [OK]"
fi

#if ls /tmp/ | grep -oE "*.mp4" &>/dev/null
# then rm /tmp/*.mp4
#fi
#echo "`date +%H\ %M\ %S\ %N` rm .mp4 [OK]"

DATA=$(date +%Y-%m-%d_%H-%M-%S_%N)
echo "`date +%H\ %M\ %S\ %N` ffmpeg rec [OK]"

#ffmpeg -i http://127.0.0.1:8000/stream.mjpg -to 0:02 -c:v copy -c:a copy /tmp/$DATA.mp4 2> /dev/null
#echo "`date +%H\ %M\ %S\ %N` ffmpeg stop [OK]"

#if ls /var/www/html/mrtg/ | grep -oE "cam1.jpg" &>/dev/null
# then rm /var/www/html/mrtg/cam1.jpg
#fi
#echo "`date +%H\ %M\ %S\ %N` bash rm jpg [OK]"

ffmpeg -f MJPEG -y -i http://127.0.0.1:8000/stream.mjpg \
 -r 1 -vframes 1 -q:v 1 /var/www/html/mrtg/cam1.jpg 2> /dev/null
echo "`date +%H\ %M\ %S\ %N` frames [OK]"

convert /var/www/html/mrtg/cam1.jpg -background none -fill black -box 'white' -gravity South \
 -pointsize 20 -annotate +0+1050 $DATA /var/www/html/mrtg/cam.jpg
echo "`date +%H\ %M\ %S\ %N` image convert [OK]"

if ping -c 1 192.168.0.11 2>&1> /dev/null
 then scp /var/www/html/mrtg/cam.jpg evg@192.168.0.11:/1TB/.zm/v/$DATA.jpg 2>&1 > /dev/null &
      echo "`date +%H\ %M\ %S\ %N` scp 11 jpg [OK]"
fi
if ping -c 1 172.28.253.4 2>&1> /dev/null
 then scp /var/www/html/mrtg/cam.jpg lv@172.28.253.4:/a/$DATA.jpg 2>&1 > /dev/null &
      echo "`date +%H\ %M\ %S\ %N` scp  4 jpg [OK]"
fi

--------------------------------------------------------------
nano rec_stream.sh asus
#!/bin/bash
if ! ps aux | grep -v color | grep -v grep | grep -E ffmpeg &> /dev/null
 then DATA=$(date +%Y-%m-%d_%H-%M-%S_%N)
   ffmpeg -i http://192.168.0.4:8000/stream.mjpg \
   -to 0:10 -c:v copy -c:a copy /1TB/.zm/v/$DATA.mp4 2> /dev/null
fi

понедельник, 30 января 2017 г.

Запись диска. rsync быстрее копирует файлы, чем Linux Mint GUI

#!/bin/bash
TIME1=$(date +"%s")
rsync -arvu --ignore-errors --progress /750/repo/TMP_BR/ /home/$USER/TMP_ISO_BR/
TIME2=$(date +"%s")

TIME=$(($TIME1 - $TIME2))
TIME0=$(echo "$TIME" | sed 's/^.//')

if [ "$TIME0" -lt "60" ];
        then echo " $TIME0 секунд" #YES
echo "синхронизация файлов для записи диска завершена за $TIME0 секунд" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q
        else
 X=$(( TIME0 / 60 ));
echo " $X минут"
echo "синхронизация файлов для записи диска завершена за $X минут" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q
fi

find move

#!/bin/bash
echo "";
echo " Search move"
echo "";
echo " Укажи путь, где искать видео:"
read DIR
echo " Укажи название плейлиста:"
read NAME

FILE="/home/$USER/PlayList/$NAME.m3u"
if [ -f $FILE ]; then # если есть уже файл с этим именем
rm /home/$USER/PlayList/$NAME.m3u && echo " файл удален - $NAME.m3u"
else sleep 1 # не найден, продолжаем
fi

find $DIR \( -name "*.avi" -or -name "*.mp4" -or -name "*.mkv" \) -type f -print | sort -g >> /home/$USER/PlayList/$NAME.m3u
LINE=$(cat /home/$USER/PlayList/$NAME.m3u | wc -l)
GB=$(find $DIR -type f -name "*.avi" -or -name "*.mp4" -or -name "*.mkv" -exec ls -l --block-size=G "{}" \; | sort -hr | awk '{print $5}' | sed 's/.$//' | awk -F'#' '{sum = sum+$1}; END {print "Всего: " sum " GB"}')
MB=$(find $DIR -type f -name "*.avi" -or -name "*.mp4" -or -name "*.mkv" -exec du --max-depth=1 -m "{}" \; | sort -hr | awk -F'#' '{sum = sum+$1}; END {print "Всего: " sum " MB"}')
KB=$(find $DIR -type f -name "*.avi" -or -name "*.mp4" -or -name "*.mkv" -printf "%p#%k KB\n" | awk -F'#' '{sum = sum+$2}; END {print "Всего: " sum " KB"}')
echo " количество видео роликов - $LINE"
echo " всего занимают места - $GB"
echo " всего занимают места - $MB"
echo " занимают места - $KB"
echo "Найдено видео файлов $LINE" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q
echo "Создание видео плей листа завершено" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q

ffmpeg склеить 2 изображения

#!/bin/bash
TIME1=$(date +"%s")
echo "";
echo -en "\033[37;1;41m ВНИМЕНИЕ! Изображения ОБЯЗАТЕЛЬНО     \033[0m"; echo "";
echo -en "\033[37;1;41m ВНИМЕНИЕ! добжны быть ОДНОГО РАЗМЕРА! \033[0m"; echo -en "\E[0m";
echo "";
ls | grep ".jpg"; echo "";
# Заменяет пробелы символом подчеркивания в именах файлов в текущем каталоге.
ONE=1                     # единственное или множественное число (см. ниже).
number=0                  # Количество переименованных файлов.
FOUND=0                   # Код завершения в случае успеха.
for filename in *         # Перебор всех файлов в текущем каталоге.
do
     echo "$filename" | grep -q " "         #  Проверить — содержит ли имя файла
     if [ $? -eq $FOUND ]                   #+ пробелы.
     then
       fname=$filename                      # Удалить путь из имени файла.
       n=`echo $fname | sed -e "s/ /_/g"`   # Заменить пробелы символом подчеркивания.
       mv "$fname" "$n"                     # Переименование.
       let "number += 1"
     fi
done
if [ "$number" -eq "$ONE" ]
then
 echo "$number файл переименован."
else
 echo "Переименовано файлов: $number"
fi
#
echo "";
ls | grep ".jpg"
echo " Ввести имена 2-х файлов изображений:";
echo -en "\033[32m Введи img1 : \033[40m"; echo "";
read IMG1
echo -en "\033[32m Введи img2 : \033[40m"; echo "";
read IMG2
echo "";
echo -en "\033[37;1;41m Собрать анимацию ? (y/n) \033[0m"; echo "";
read item
case "$item" in
    y|Y) echo -en "\E[1;40;32m склеивание картинок ... \E[1;40;32m"; echo "";
        ffmpeg -loop 1 -i $IMG1.jpg -loop 1 -i $IMG2.jpg -filter_complex \
     "[0:0]format=rgba,trim=duration=10,fade=in:st=0:d=1:alpha=1,fade=out:st=4:d=1:alpha=1[a];[1:0]format=rgba,trim=duration=10,fade=in:st=5:d=1:alpha=1,fade=out:st=9:d=1:alpha=1[b];[a][b]overlay=[out1]" \
     -map [out1] -y -qscale 25 -vcodec libx264 -b:v 2550K -crf 26 -s "1280x720" \
     -threads auto -thread_type frame -strict -2 /home/$USER/anim_$(date +%Y-%m-%d_%H-%M-%S).mp4 2>/dev/null
        ;;
    n|N) echo -en "\033[32m Ввели «n», завершаем... \033[40m"; echo "";
        exit 0
        ;;
    *) echo "Ничего не ввели. Выполняем действие по умолчанию..."
        exit 0
        ;;
esac
# конец скрипта. записать контрольное время
TIME2=$(date +"%s")
# вычесть стоп-старт
TIME=$(($TIME1 - $TIME2))
# убрать не понятно откуда взявшийся символ "минус"
TIME0=$(echo "$TIME" | sed 's/^.//')
# при значениях менее 60, выдасть в секундах:
if [ "$TIME0" -lt "60" ];
        then echo "$TIME0 секунд" #YES
        else
 X=$(( TIME0 / 60 ));
# при значениях больше 60, разделит на 60 и подаст как минуты:
 echo "$X минут"
fi

ffmpeg bash. замена пробелов в имени файла

#!/bin/bash
TIME1=$(date +"%s")
echo "";
echo " -vcodec libx264 -b:v 2550K -crf 23 -s 1280x720"
echo " -threads auto -thread_type frame -c:a aac -b:a 128k -strict -2"
echo "";
ls | grep ".avi"
echo "";
#ls | grep " "
# Заменяет пробелы символом подчеркивания в именах файлов в текущем каталоге.
ONE=1                     # единственное или множественное число (см. ниже).
number=0                  # Количество переименованных файлов.
FOUND=0                   # Код завершения в случае успеха.
for filename in *         # Перебор всех файлов в текущем каталоге.
do
     echo "$filename" | grep -q " "         #  Проверить — содержит ли имя файла
     if [ $? -eq $FOUND ]                   #+ пробелы.
     then
       fname=$filename                      # Удалить путь из имени файла.
       n=`echo $fname | sed -e "s/ /_/g"`   # Заменить пробелы символом подчеркивания.
       mv "$fname" "$n"                     # Переименование.
       let "number += 1"
     fi
done
if [ "$number" -eq "$ONE" ]
then
 echo "$number файл переименован."
else
 echo "Переименовано файлов: $number"
fi
echo "";
ls | grep ".avi"
#
echo -en "\033[32m Введи число = мах(18-26)мин Качество: \033[40m"; echo "";
read CRF
echo "";
echo -en "\033[37;1;41m Конвертировать видео из .avi в .mp4 ? (y/n) \033[0m"; echo "";
read item
case "$item" in
    y|Y) echo -en "\E[1;40;32m конвертирование в .mp4 ... \E[1;40;32m"; echo -en "\E[0m"; echo "";
    for i in *.avi; do
# -crf 18-26
        ffmpeg -i $i -vcodec libx264 -b:v 2550K -crf $CRF -s 1280x720 \
         -threads auto -thread_type frame -c:a aac -b:a 128k -strict -2 -y $i.mp4 2> /tmp/ffname;
        cat /tmp/ffname | grep -E "(Stream \#0:0)|(Stream \#0:1)" | sed -n '1,2p'
    done
echo "";
    for i in *.mp4; do
                ffmpeg -i $i 2> /tmp/ffname;
                cat /tmp/ffname | grep -E "(Stream \#0:0)|(Stream \#0:1)"
        done
        ;;
    n|N) echo -en "\033[32m Ввели «n», завершаем... \033[40m"; echo "";
        exit 0
        ;;
    *) echo "Ничего не ввели. Выполняем действие по умолчанию..."
        exit 0
        ;;
esac

# конец скрипта. записать контрольное время
TIME2=$(date +"%s")
# вычесть стоп-старт
TIME=$(($TIME1 - $TIME2))
# убрать не понятно откуда взявшийся символ "минус"
TIME0=$(echo "$TIME" | sed 's/^.//')
# при значениях менее 60, выдасть в секундах:
if [ "$TIME0" -lt "60" ];
        then echo "$TIME0 секунд" #YES
        else
 X=$(( TIME0 / 60 ));
# при значениях больше 60, разделит на 60 и подаст как минуты:
 echo -en "\E[1;40;32m $X минут \E[1;40;32m"; echo "";
fi

restore dd bash

#!/bin/bash
echo "";
echo "  Поиск XBMC"
sudo blkid | grep 'PARTLABEL="xbmc"'

# выполнить резервное копирование?
#blkid | grep 'PARTLABEL="xbmc"' | awk '{print $1}' | sed 's/..$//'

DEV=$(sudo blkid | grep 'PARTLABEL="xbmc"' | awk '{print $1}' | sed 's/..$//')
echo " Образ искать в директории: /home/$USER/iso"
echo "`ls /home/$USER/iso`"
echo " Укажи имя файла: (без .расширение)"
read NAME

echo -en "\033[37;1;41m выполнить восстановление из копии? (y/n) \033[0m"

read item
case "$item" in
    y|Y) echo -en "\033[31m Ввели «y», восстановление... \033[40m"
    sudo dd if=/home/$USER/iso/$NAME.img of=$DEV bs=4096
    mpg321 -g 100 /home/$USER/.backup/.torcs1.mp3
        ;;
    n|N) echo -en "\033[32m Ввели «n», завершаем... \033[40"
        exit 0
        ;;
    *) echo "Ничего не ввели. Выполняем действие по умолчанию..."
    exit 0
        ;;
esac

backup dd bash

#!/bin/bash
TIME1=$(date +"%s")
echo "";
echo "  Поиск XBMC"
sudo blkid | grep 'PARTLABEL="xbmc"' | grep -o 'TYPE="ext2" PARTLABEL="xbmc"'

# выполнить резервное копирование?
#blkid | grep 'PARTLABEL="xbmc"' | awk '{print $1}' | sed 's/..$//'

DEV=$(sudo blkid | grep 'PARTLABEL="xbmc"' | awk '{print $1}' | sed 's/..$//')
echo " Образ искать в директории: /home/$USER/iso"
echo " Укажи название файла: (XBMC_ название .img)"
read NAME

echo -en "\033[37;1;41m выполнить резервное копирование? (y/n) \033[0m"

read item
case "$item" in
    y|Y) echo -en "\033[31m Ввели «y», резервное копирование... \033[40m"
    sudo dd if=$DEV of=/home/$USER/iso/XBMC_$NAME.img bs=4096
    echo " Копирование завершено..."
    echo "Резервное копирование Дебиан завершено успешно!" | RHVoice-client \
 -s Anna+CLB -r -0.1 -p -0.7 | aplay -q
    sleep 10
    UM=$(df -h | grep "$DEV" | awk '{print $6}')
    echo " определение устройства для отключения..."
    sleep 5
    sudo umount $UM
    echo " Устройство можно извлечь!"
echo "Устройство можно извлечь" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q
    sleep 5
    mpg321 -g 100 /home/$USER/.backup/.torcs1.mp3 -q
        ;;
    n|N) echo -en "\033[32m Ввели «n», завершаем... \033[40"
        exit 0
        ;;
    *) echo "Ничего не ввели. Выполняем действие по умолчанию..."
    exit 0
        ;;
esac
TIME2=$(date +"%s")

TIME=$(($TIME1 - $TIME2))
TIME0=$(echo "$TIME" | sed 's/^.//')

if [ "$TIME0" -lt "60" ];
        then echo "$TIME0 секунд" #YES
        else
 X=$(( TIME0 / 60 ));
 echo "потрачено $X минут на копирование образа с флешки" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q
 echo "потрачено $X минут на копирование образа с флешки"
fi

запись дисков blu ray Linux

#!/bin/bash
## контрольное время начало скрипта:
TIME1=$(date +"%s")

echo "";
echo "  _ _ Record BluRey _ _ "
echo "";

## проверить смонтирована ли директория:
if df -h | grep "/home/$USER/TMP_ISO_BR" | grep -o loop0 &> /dev/null;
then
## для нового проекта она должна быть отмонтирована:
    echo -en "\E[1;40;31m Запрос пароля для отмонтирования директории TMP_ISO_BR \E[1;40;31m"; echo "";
    echo "";
    sudo umount /home/$USER/TMP_ISO_BR
    echo " * * * отмонтирован! * * *"; echo "";
fi
## имя образа в виде текущей даты:
DAT=$(date +%d_%m_%Y)

## задать размер и тип виртуальной файловой системе:
## 1
echo -en "\033[37;1;41m Удалить существующие образы и создать новый? (y/n) \033[0m"; echo "";
read item1
case "$item1" in
    y|Y) echo -en "\E[1;47;30m Ввели «y», Созданиме, форматирование, монтироваение... \E[1;47;30m"; echo -en "\E[0m"; echo ""; echo "";
## проверить существование образов:
    if find /home/$USER/ -iname "*.udf" -type f -print | grep -o udf &> /dev/null;
    then
    ## для нового проекта она должна быть уделоно:
        find /home/$USER/ -iname "*.udf" -type f -exec rm {} \; && echo "     уделен файл .udf"; echo "";
    fi
##
    echo -en "\E[1;47;30m Create udf... \E[1;47;30m"; echo -en "\E[0m"; echo "";
## задать размер:
    truncate --size=23610MiB /home/$USER/.$DAT.udf
    echo -en "\E[1;40;31m Format... \E[1;40;31m"; echo "";
## создать файловую систему внутри файла:
    sudo mkudffs --utf8 --lvid=$DAT --vid=$DAT /home/$USER/.$DAT.udf
    echo -en "\E[1;47;30m Mount... \E[1;47;30m"; echo -en "\E[0m";  echo ""; echo "";
## монтирование образа как флешку\диск:
    sudo mount -oloop,rw,users,sync,gid=evg,uid=evg,iocharset=utf8 /home/$USER/.$DAT.udf /home/$USER/TMP_ISO_BR

## считает содержимое будущего диска:
## 2
echo -en "\E[1;32;40m Подсчитать файлы, папки, и размер? (y/n) \E[1;32;40m";  echo "";
read item2
case "$item2" in
    y|Y) echo -en "\E[0m Ввели «y», Считаем... \E[0m";  echo ""; echo "";

       echo " `find /home/$USER/TMP_ISO_BR/ -type f -print | wc -l` - количество файлов" > /home/$USER/TMP_ISO_BR/.BR.log
       echo " `find /home/$USER/TMP_ISO_BR/ -type d -print | wc -l` - количество директорий" >> /home/$USER/TMP_ISO_BR/.BR.log
       echo " `du -sh /home/$USER/TMP_ISO_BR/ | awk '{print $1}'` - общее количество занимаемого места" >> /home/evg/TMP_ISO_BR/.BR.log
       echo " `find /home/$USER/TMP_ISO_BR/ -type f -print | wc -l` - количество файлов"
       echo " `find /home/$USER/TMP_ISO_BR/ -type d -print | wc -l` - количество директорий"
       echo " `du -sh /home/$USER/TMP_ISO_BR/ | awk '{print $1}'` - общее количество занимаемого места"
    echo "";
## синхронизация\выгрузка буферов:
    sync
    echo -en "\E[1;40;31m Разрешить umount TMP_ISO_BR: \E[1;40;31m";  echo ""; echo "";
## отмонтирование директории:
    sudo umount /home/$USER/TMP_ISO_BR
    echo -e "\E[1;32;40m Umount OK \E[1;32;40m"
#

if dvd+rw-mediainfo /dev/sr0 2&> /dev/null | grep "Disc status:" | grep -o blank &> /dev/null;
then
## наличие пустого диска:
    echo "";
    echo -e "\E[1;32;40m _ Диск готов к записи :-) _ \E[1;32;40m"; echo "";
    echo "диск в приводе, жми далее" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q
    echo -en "\E[0m"
#
else
    echo -e "\E[1m \E[1;33;40m"
    echo " !!! ВСТАВЬ ПУСТОЙ ДИСК !!!"
        echo "  ПРЕЖДЕ ЧЕМ ПРОДОЛЖИТЬ..."
        echo " !!! ВСТАВЬ ПУСТОЙ ДИСК !!!"
    echo "вставь диск, дубина" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q
        echo -en "\E[0m"; echo "";
fi

## непосредственно запись:
## 3
echo -en "\033[37;1;41m Пишем диск? (y/n) \033[0m"; echo "";
read item2
case "$item2" in
    y|Y) echo -en "\033[31m Ввели «y», Выполняется запись... \033[40m"; echo ""; echo "";
         echo -en "\E[1;31m Record... \E[1;40m"; echo "";
## запись на максимальной скорости 6х, с отключенными резервными блоками:
growisofs -use-the-force-luke=spare:none -speed=6 -dvd-compat -Z /dev/sr0="/home/$USER/.$DAT.udf"
echo "нарезка диска выполнена" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q
echo "далее произойдёт проверка качества копирования" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q

## отрицательный ответ о записи диска:
        ;;
## 3
    n|N) echo -en "\033[32m Ввели «n», Запись отменена! \033[40m" ; echo "";
    echo "";
        exit 0
        ;;
    *) echo -en "\E[0m Ничего не ввели. Выполняем действие по умолчанию... \E[0m"; echo "";
        exit 0
        ;;
esac
#
        ;;
## 2
    n|N) echo -en "\033[32m Ввели «n», завершаем работу скрипта... \033[40m"; echo "";
    echo "";
        exit 0
        ;;
    *) echo -en "\E[0m Ничего не ввели. Выполняем действие по умолчанию... \E[0m"; echo "";
        exit 0
        ;;
esac
#
        ;;
## 1
    n|N) echo -en "\033[32m Ввели «n», завершаем работу скрипта... \033[40m"; echo "";
    echo "";
        exit 0
        ;;
    *) echo -en "\E[0m Ничего не ввели. Выполняем действие по умолчанию... \E[0m"; echo "";
        exit 0
        ;;
esac

echo -en "\E[0m"
date >> /home/$USER/.backup/log_burn_br.txt
echo " исходного образа:" >> /home/$USER/.backup/log_burn_br.txt
md5sum /home/$USER/.$DAT.udf >> /home/$USER/.backup/log_burn_br.txt
echo " на носителе:" >> /home/$USER/.backup/log_burn_br.txt
blocks=$(expr $(du -b /home/$USER/.$DAT.udf | awk '{print $1}') / 2048)
dd if=''/dev/sr0'' bs=2048 count=$blocks | md5sum >> /home/$USER/.backup/log_burn_br.txt
echo " _______________________________________________________________________" >> /home/$USER/.backup/log_burn_br.txt
cat /home/$USER/.backup/log_burn_br.txt | tail -n 7
echo "";
##
IMG=$(cat /home/$USER/.backup/log_burn_br.txt | tail -n 7 | awk '{print $1}' | sed '1,3d' | sed -e '2d' | sed -e '1!d')
##
SR=$(cat /home/$USER/.backup/log_burn_br.txt | tail -n 7 | awk '{print $1}' | sed '1,3d' | sed -e '2d' | sed -e '2!d')
##
if [ $IMG = $SR ]
then
#     echo " `cat /home/$USER/.backup/log_burn_br.txt | tail -n 7 | sed -e '2!d'`"
#     echo "";
    echo -en "\033[32m Запись выполнена успешно \033[40m"
    echo -en "\E[0m"; echo "";
## завершение контрольного времени и подсчет в секундах ( что не возможно)
## выдаст значенияя в минутах, с округлением до челого числа:
    TIME2=$(date +"%s")
    TIME=$(($TIME1 - $TIME2))
    TIME0=$(echo "$TIME" | sed 's/^.//')
    if [ "$TIME0" -lt "60" ];
        then echo "$TIME0 секунд" #YES
        else
            X=$(( TIME0 / 60 ));
            echo " весь цикл записи выполнен за $X минут"
            mpg321 -g 100 /home/$USER/.backup/.torcs1.mp3 -q
            sleep 2
            echo "весь цикл записи выполнен за $X минут" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q
            echo "диск можно извлечь" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q
    fi
else echo -en "\033[37;1;41m ОШИБКА ПРИ ЗАПИСИ!!! ДИСК В УТИЛЬ!!! \033[0m"; echo "";
     mpg321 -g 100 /home/$USER/.backup/.torcs1.mp3 -q
     sleep 2
     mpg321 -g 100 /home/$USER/.backup/.torcs1.mp3 -q
     sleep 3
     echo "Ошибка при записи! диск выкинуть" | RHVoice-client -s Anna+CLB -r -0.1 -p -0.7 | aplay -q
fi
echo "";

gnuplot температура CPU

#!/bin/bash

FILE="/tmp/sys_temp_gnuplot_h"
echo " проверка файла..."
if [ -f $FILE ]; then
echo " файл найден..." # файл есть
MAX=(62)
TMP=`cat /tmp/sys_temp_gnuplot_h | wc -l`
echo " $TMP"
if [ $TMP -ge $MAX ]; then
echo " файл 62 и более строк!" # в файле 23 и более строк
truncate -s 0 /tmp/sys_temp_gnuplot_h
echo "`date +%d-%m` `date +%H:%M` `/usr/bin/sensors | grep -E 'Physical id 0*' | awk {'print $4'} | cut -c 2-3`" >> /tmp/sys_temp_gnuplot_h
# # # # # # # # # # #
gnuplot << EOP

datafile = "/tmp/sys_temp_gnuplot_h"
set terminal jpeg font arial 14 size 1600,1200
set output "/var/www/html/sys_temp_cpu_h.jpg"
set tics out scale 0.5
set ytics 1.0 border rangelimited mirror
set y2tics 1.0 border nomirror
set border 3
set xrange [:]
set yrange [34:70]
set ylabel "Температура (C)"
set timefmt "%d-%m %H:%M"
set xdata time
set style line 1 lc rgb 'red' lt 2 lw 2
set style data histogram
set style histogram cluster gap 1
set style fill pattern border -1
set xtics rotate by 0 rangelimited 1*300
set mxtics 3 #a small tic every five minute
set format x "%d-%m\n%H:%M" #set format x was needed to format the x axis as hh:mm, not hh:mm:ss
set grid x y y2 layerdefault linecolor rgb "gray" linewidth 4.0 dashtype solid, linecolor rgb "gray" linewidth 4.0 dashtype "."
set title "Температура(C) CPU Час" font "Times-Roman,35"
plot datafile using 1:3 title 'Температура CPU' with lines lw 4 lt rgb "red"

EOP
# # # # # # # # # # #
else
echo " файл менее 62 строк" # в файле менее 23 строк
echo "`date +%d-%m` `date +%H:%M` `/usr/bin/sensors | grep -E 'Physical id 0*' | awk {'print $4'} | cut -c 2-3`" >> /tmp/sys_temp_gnuplot_h
FILE1="/tmp/sys_temp_gnuplot_h"
echo " проверка файла..."
if [ -f $FILE1 ]; then
# файл есть
MAX=(61)
TMP1=`cat /tmp/sys_temp_gnuplot_h | wc -l`
echo " $TMP1"
if [ $TMP -ge $MAX ]; then
# более 60
echo " удаляется 1-я строчка..."
sed -i '1d' /tmp/sys_temp_gnuplot_h
fi
fi

# # # # # # # # # # #
gnuplot << EOP

datafile = "/tmp/sys_temp_gnuplot_h"
set terminal jpeg font arial 14 size 1600,1200
set output "/var/www/html/sys_temp_cpu_h.jpg"
set tics out scale 0.5
set ytics 1.0 border rangelimited mirror
set y2tics 1.0 border nomirror
set border 3
set xrange [:]
set yrange [34:70]
set ylabel "Температура (C)"
set timefmt "%d-%m %H:%M"
set xdata time
set style line 1 lc rgb 'red' lt 2 lw 2
set style data histogram
set style histogram cluster gap 1
set style fill pattern border -1
set xtics rotate by 0 rangelimited 1*300 # 1*3600
set mxtics 3 #a small tic every five minute
set format x "%d-%m\n%H:%M" #set format x was needed to format the x axis as hh:mm, not hh:mm:ss
set grid x y y2 layerdefault linecolor rgb "gray" linewidth 4.0 dashtype solid, linecolor rgb "gray" linewidth 4.0 dashtype "."
set title "Температура(C) CPU Час" font "Times-Roman,35"
plot datafile using 1:3 title 'Температура CPU' with lines lw 4 lt rgb "red"

EOP
# # # # # # #
fi
else
echo " файл не найден!!!" # файла нет
echo "`date +%d-%m` `date +%H:%M` `/usr/bin/sensors | grep -E 'Physical id 0*' | awk {'print $4'} | cut -c 2-3`" >> /tmp/sys_temp_gnuplot_h
# # # # # # # # # # #
gnuplot << EOP

datafile = "/tmp/sys_temp_gnuplot_h"
set terminal jpeg font arial 14 size 1600,1200
set output "/var/www/html/sys_temp_cpu_h.jpg"
set tics out scale 0.5
set ytics 1.0 border rangelimited mirror
set y2tics 1.0 border nomirror
set border 3
set xrange [:]
set yrange [34:70]
set ylabel "Температура (C)"
set timefmt "%d-%m %H:%M"
set xdata time
set style line 1 lc rgb 'red' lt 2 lw 2
set style data histogram
set style histogram cluster gap 1
set style fill pattern border -1
set xtics rotate by 0 rangelimited 1*300
set mxtics 3 #a small tic every five minute
set format x "%d-%m\n%H:%M" #set format x was needed to format the x axis as hh:mm, not hh:mm:ss
set grid x y y2 layerdefault linecolor rgb "gray" linewidth 4.0 dashtype solid, linecolor rgb "gray" linewidth 4.0 dashtype "."
set title "Температура(C) CPU Час" font "Times-Roman,35"
plot datafile using 1:3 title 'Температура CPU' with lines lw 4 lt rgb "red"

EOP
# # # # # # #
fi

gnuplot Load CPU bash

#!/bin/bash

FILE="/tmp/sys_load_cpu_gnuplot_h"
echo " проверка файла..."
if [ -f $FILE ]; then
echo " файл найден..." # файл есть
MAX=(62)
TMP=`cat /tmp/sys_load_cpu_gnuplot_h | wc -l`
echo " $TMP"
if [ $TMP -ge $MAX ]; then
echo " файл 62 и более строк!" # в файле 23 и более строк
truncate -s 0 /tmp/sys_load_cpu_gnuplot_h
echo "`date +%d-%m` `date +%H:%M` `awk '{print $2}' /proc/loadavg`" >> /tmp/sys_load_cpu_gnuplot_h
# # # # # # # # # # #
gnuplot << EOP

datafile = "/tmp/sys_load_cpu_gnuplot_h"
set terminal jpeg font arial 14 size 1600,1200
set output "/var/www/html/sys_load_cpu_h.jpg"
set ytics 0.05 border rangelimited mirror
set y2tics 0.05 border nomirror
set border 3
set yrange [0:*]
set ylabel "Load CPU"
set timefmt "%d-%m %H:%M"
set xdata time
set style line 1 lc rgb 'red' lt 2 lw 2
set style data histogram
set style histogram cluster gap 1
set style fill pattern border -1
set xtics rotate by 0 rangelimited 1*300 # 1*3600
set mxtics 3 #a small tic every five minute
set format x "%d-%m\n%H:%M" #set format x was needed to format the x axis as hh:mm, not hh:mm:ss
set grid x y y2 layerdefault linecolor rgb "gray" linewidth 4.0 dashtype solid, linecolor rgb "gray" linewidth 4.0 dashtype "."
set title "Load CPU (H)" font "Times-Roman,35"
plot datafile using 1:3 title 'Load CPU (H)' with lines lw 4 lt rgb "red"

EOP
# # # # # # # # # # #
else
echo " файл менее 62 строк" # в файле менее 23 строк
echo "`date +%d-%m` `date +%H:%M` `awk '{print $2}' /proc/loadavg`" >> /tmp/sys_load_cpu_gnuplot_h
FILE1="/tmp/sys_load_cpu_gnuplot_h"
echo " проверка файла..."
if [ -f $FILE1 ]; then
# файл есть
MAX=(62)
TMP1=`cat /tmp/sys_load_cpu_gnuplot_h | wc -l`
echo " $TMP1"
if [ $TMP -ge $MAX ]; then
# более 60
echo " удаляется 1-я строчка..."
sed -i '1d' /tmp/sys_load_cpu_gnuplot_h
fi
fi

# # # # # # # # # # #
gnuplot << EOP

datafile = "/tmp/sys_load_cpu_gnuplot_h"
set terminal jpeg font arial 14 size 1600,1200
set output "/var/www/html/sys_load_cpu_h.jpg"
set ytics 0.05 border rangelimited mirror
set y2tics 0.05 border nomirror
set border 3
set yrange [0:*]
set ylabel "Load CPU"
set timefmt "%d-%m %H:%M"
set xdata time
set style line 1 lc rgb 'red' lt 2 lw 2
set style data histogram
set style histogram cluster gap 1
set style fill pattern border -1
set xtics rotate by 0 rangelimited 1*300 # 1*3600
set mxtics 3 #a small tic every five minute
set format x "%d-%m\n%H:%M" #set format x was needed to format the x axis as hh:mm, not hh:mm:ss
set grid x y y2 layerdefault linecolor rgb "gray" linewidth 4.0 dashtype solid, linecolor rgb "gray" linewidth 4.0 dashtype "."
set title "Load CPU (H)" font "Times-Roman,35"
plot datafile using 1:3 title 'Load CPU (H)' with lines lw 4 lt rgb "red"

EOP
# # # # # # #
fi
else
echo " файл не найден!!!" # файла нет
echo "`date +%d-%m` `date +%H:%M` `awk '{print $2}' /proc/loadavg`" >> /tmp/sys_load_cpu_gnuplot_h
# # # # # # # # # # #
gnuplot << EOP

datafile = "/tmp/sys_load_cpu_gnuplot_h"
set terminal jpeg font arial 14 size 1600,1200
set output "/var/www/html/sys_load_cpu_h.jpg"
set ytics 0.05 border rangelimited mirror
set y2tics 0.05 border nomirror
set border 3
set yrange [0:*]
set ylabel "Load CPU"
set timefmt "%d-%m %H:%M"
set xdata time
set style line 1 lc rgb 'red' lt 2 lw 2
set style data histogram
set style histogram cluster gap 1
set style fill pattern border -1
set xtics rotate by 0 rangelimited 1*300 # 1*3600
set mxtics 3 #a small tic every five minute
set format x "%d-%m\n%H:%M" #set format x was needed to format the x axis as hh:mm, not hh:mm:ss
set grid x y y2 layerdefault linecolor rgb "gray" linewidth 4.0 dashtype solid, linecolor rgb "gray" linewidth 4.0 dashtype "."
set title "Load CPU (H)" font "Times-Roman,35"
plot datafile using 1:3 title 'Load CPU (H)' with lines lw 4 lt rgb "red"

EOP
# # # # # # #
fi

dialog yes|no

#!/bin/bash
DIALOG=${DIALOG=dialog}

$DIALOG --title " Мой первый диалог" --clear \
--yesno "Выполнить скрипт dialog1.sh ?" 10 40

case $? in
0)
# выполнить скрипт
/sh/dialog2.sh
;;
1)
echo "Выбрано 'Нет'.";;
255)
echo "Нажата клавиша ESC.";;
esac

dialog menu

#!/bin/bash
DIALOG=${DIALOG=dialog}
tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15

$DIALOG --backtitle "Выбрать значение" \
--title "Выбрать число" --clear \
--radiolist "выбрать число " 30 71 15 \
"Edit" "nano" ON \
"Log" "size log" off \
"Allow" "3" off \
"Root" "4" off \
"User" "5" off \
"Name" "6" off 2> $tempfile

retval=$?

choice=`cat $tempfile`
case $retval in
0)
if [ "$choice" = Edit ]; then
echo "Выбрано: Edit"
sleep 1
nano
fi
if [ "$choice" = Log ]; then
echo "Выбрано: Log"
sleep 1
du -sh /var/log/
fi
if [ "$choice" = Allow ]; then
echo "Выбрано: Allow"
fi
if [ "$choice" = Root ]; then
echo "Выбрано: Root"
fi
if [ "$choice" = User ]; then
echo "Выбрано: User"
fi
if [ "$choice" = Name ]; then
echo "Выбрано: Name"
fi

cat $tempfile;
echo "";
;;
1)
echo "Отказ от ввода.";;
255)
echo "Нажата клавиша ESC.";;
esac

воскресенье, 25 декабря 2016 г.

backup и монтирование при отсутствии примонтированного раздела

#!/bin/bash

MOUNT=$(blkid | grep "e3dfd950-041c-4f6d-b743-e990ed2a42b5" | awk '{ print $1 }' | sed 's/.$//')

file1="/media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5/BACKUP/odt"
if [ -d $file1 ]; then

find /home/evg -name *.odt -type f \
-exec cp {} /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5/BACKUP/odt \;

find /home/evg -name *.txt -type f \
-exec cp {} /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5/BACKUP/odt \;

find /home/evg -name *.ctd -type f \
-exec cp {} /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5/BACKUP/odt \;

else
echo " Резервные копии сделать в данный момент невозможно"
file2="/media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5"
if [ -d $file2 ]; then
echo " Директория для монтирования раздела $MOUNT существует "
sudo chmod 777 /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5 && \
sudo mount $MOUNT /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5 && \
find /home/evg -name *.odt -type f \
-exec cp {} /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5/BACKUP/odt \;

find /home/evg -name *.txt -type f \
-exec cp {} /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5/BACKUP/odt \;

find /home/evg -name *.ctd -type f \
-exec cp {} /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5/BACKUP/odt \;

else
echo " Директория подключения $MOUNT пока не существует "
echo " Исправляем..."
echo " Создание директории и монтирование раздела..."
sudo mkdir -p /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5 && \
sudo chmod 777 /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5 && \
sudo mount $MOUNT /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5 && \;

find /home/evg -name *.odt -type f \
-exec cp {} /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5/BACKUP/odt \;

find /home/evg -name *.txt -type f \
-exec cp {} /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5/BACKUP/odt \;

find /home/evg -name *.ctd -type f \
-exec cp {} /media/evg/e3dfd950-041c-4f6d-b743-e990ed2a42b5/BACKUP/odt \;

fi
fi

суббота, 12 марта 2016 г.

linux + a2dp = auto connect

  шаблон скрипта. осталось собрать рабочую версию))
#!/bin/bash
# отзовется, если есть подключение к наушникам:
# hcitool con | grep -oE "30:23:FF:FD:FF:FF"
#
# отзовется, если найдены наушники:
# hcitool name 30:23:FF:FD:FF:FF

# подключиться к наушникам:
# { sleep 1 && echo -e 'connect 30:23:FF:FD:FF:FF \n' && sleep 1;} | bluetoothctl
# sleep 2
# потвердить подключение:
# { sleep 1 && echo -e 'info 30:23:FF:FD:FF:FF \n' && sleep 1;} | bluetoothctl | grep -E 'Connected:'


воскресенье, 28 октября 2012 г.

Скрипт копирования файлов по размеру и расширению

Полезен, для быстрого сохранения необходимой информации, перед фарматированием носителя. Например, если нужно вылечить компьютер от вирусов, прежде чем ставить виндовс.

суббота, 20 октября 2012 г.

Скрипт для простого поиска изображений и копирования их


  Принесли мне несколько дней назад компьютер и ноутбук. Оба устройства были изрядно побиты вирусами и потому не желая особенно возиться лечением, приступил к копированию необходимых файлов. Естественно загрузился с LiveCD с ubuntu. Ясное дело, что за несколько лет использования линукс, уже не одну команду на память введу)) Так что на ходу пришло в голову не использовать подобную бредятину:
find /home/DISK1 -name *.jpg -type f -size +50k -exec cp {} /home/DISK2 \;
   Поняв простую вещь, что в ручную перебирать расширения графических файлов утомительно,

Быстрые клавиши и скрипт


exo-open --launch TerminalEmulator /sh/script.sh

h265.sh

#!/bin/bash file="../mp4" if [ -d $file ]; then         echo "  Директория существует :-) "         for i in *.mp4; do f...