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

пятница, 11 июля 2025 г.

streamripper

задача: иногда пропадает инет и надо иметь в офлайне апру сотен треков любимой станции гуглим в нете список урлов типа вот такого https://gist.github.com/ergoz/e7837a54956116167db93b016dbd51a9

Ставим streamripper и запускаем его в скрине 

понедельник, 14 апреля 2025 г.

bashrc

чтобы в histoty отображалась дата ввода комнды export 

HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S | ' 

 не отображать хостнейм и пользователя при ssh 

 PS1='[\W]\$ '


среда, 25 августа 2021 г.

mac

 cat /usr/bin/mac

используем для вывода регистроточкозависымых маков 


#!/bin/bash

echo $1 | sed 's/-/:/g'

echo $1 | sed 's/.*/\U&/'

echo $1 | sed 's/-/:/g'| sed 's/.*/\U&/'


как вариант для просомотра мака в DHCP микротика 


mac=`echo $1 | sed 's/-/:/g'| sed 's/.*/\U&/'`

ssh 192.168.13.1 ip dhcp-server lease print detail  where mac-address="$mac"

пятница, 8 мая 2020 г.

тепловая карта неудачного входа в SSH

источник
идем на https://ipinfo.io/ регаемся - получаем API key он нужен будет скрипту (бесплатный лимит запросов 50к в месяц то есть каждый айпишник из лога  это 1 запрос )

ставим недостающие пакеты
pip3 install folium requests ipinfo
тянем сам скрипт
wget https://raw.githubusercontent.com/meesaltena/SSHHeatmap/master/SSHHeatmap.py
собираем попытки входа на сервер

ssh root@193.*.61.11 'grep "Failed password" /var/log/auth.log' > failed.txt

генерим хтмлку где последнее - это ключ взятый ранее
python3 SSHHeatmap.py failed.txt 6e**f9**f**fb*
получаем файл  heatmap.html - открываем в браузере и топаем настраивать файл ту бан




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

запись cli

пока искал одну нашел пачку, понравилось из них 2 тулзы
http://showterm.io/ - собственно что искал ,
установка от рута :

  • curl showterm.io/showterm > /bin/showterm
  • chmod +x /bin/showterm
  • запуск командой showterm - и пока не написать exit - все будет писаться, после как написал, файлик еше и зааплоадится на их ресурс - очень удобно

    ну а если не надо аплоадить ибо файл секурный и нало сохранить локально - то утилитка ttyrec по умолчанию сохраняет файл ~/ttyrecord либо указать иной, воспроизвести можно командой ttyplay

    вторник, 30 апреля 2019 г.

    монитор охранника

    задача:
    - есть сарай и монитор , на нем надо показывать 4 камеры и если что то подвисло перезапустить плеер

    2 скрипта
    - первый (запускается из под пользователя) просто запускает окошки  плеера (mpv) без рамочек , предварительно померив экран и поделив его на 4 части (за это отвечает xdoottool)
    - второй (запускается из под рута) читает первый скрипт цепляет из него ip с которых идет поток и пишет его в файл (если в файле строк меньше чем положено - поток перезапускается)

    4mpl.sh 


    #!/bin/bash
    # тут указываем какие стримы будем вещать
    scriptname=4mpl.sh
    str1=rtsp://root:passsword@212.191.253.53:554/live/sub
    str2=rtsp://root:passsword@212.191.253.61:554/live/sub
    str3=rtsp://root:passsword@122.191.253.88:554/live/sub
    str4=rtsp://root:passsword@212.191.253.18:554/live/sub
    # глядим что за экран у нас, вдруг сменили и пригодиться в положениях плеера
    export DISPLAY=':0.0'
    xwin=`xdotool getdisplaygeometry | awk {'print $1'}`
    ywin=`xdotool getdisplaygeometry | awk {'print $2'}`
    # прячим мышку? помоему не работает
    xdotool mousemove "$xwin $ywin"
    # это статусбар убунту, мешается по умолчанию на 24 пикселя, сука
    Barsize=24
    # тут мы делем полученый размер экрана на 4 равных части за вычетом бара
    let "wsizex=$xwin / 2"
    let "wsizey=$ywin / 2 - ($Barsize / 2)"
    wsize="$wsizex""x""$wsizey"
    let "wsizeyY=$wsizey + $Barsize "
    # водим переменные позиций окон
    gpos1="+0+$Barsize"
    gpos2="+$wsizex+$Barsize"
    gpos3="+$wsizex+$wsizeyY"
    gpos4="+0+$wsizeyY"
    # гавнякаем переменными в syslog - тупо для дебага, можно удалить
    logger "$scriptname str1=$str1"
    logger "$scriptname str2=$str2"
    logger "$scriptname str3=$str3"
    logger "$scriptname str4=$str4"
    logger "$scriptname xwin=$xwin"
    logger "$scriptname ywin=$ywin"
    logger "$scriptname wsize=$wsize"
    logger "$scriptname gpos1=$gpos1"
    logger "$scriptname gpos2=$gpos2"
    logger "$scriptname gpos3=$gpos3"
    logger "$scriptname gpos4=$gpos4"
    # из соседнего скрипта тисипидампим ip переменных str и складываем
    # в файл, если в файле меньше 2 х строк - потока нет, перезапускаемся
    a=1
    b=`cat /home/filalex/dump1 | wc -l `
    c=`cat /home/filalex/dump2 | wc -l `
    d=`cat /home/filalex/dump3 | wc -l `
    e=`cat /home/filalex/dump4 | wc -l `
    # тут я не понял как работет $переменная$а_тут_вторая_которая_подставляется_первой поэтому говнокод
    if  [ "$b" -gt "$a" ]
        then
        logger "$scriptname поток $str1 в норме, что то прилетело работаем дальше "
        else
        logger "$scriptname поток $str1 упал, перезапускаем плеер"
        mpv -cache=32 -border=no -geometry "$wsize"$gpos1 $str1 &
    fi
    if  [ "$c" -gt "$a" ]
        then
        logger "$scriptname поток $str2 в норме, что то прилетело работаем дальше "
        else
        logger "$scriptname поток $str2 упал, перезапускаем плеер"
        mpv -cache=32 -border=no -geometry "$wsize"$gpos2 $str2 &
    fi
    if  [ "$d" -gt "$a" ]
        then
        logger "$scriptname поток $str3 в норме, что то прилетело работаем дальше "
        else
        logger "$scriptname поток $str3 упал, перезапускаем плеер"
        mpv -cache=32 -border=no -geometry "$wsize"$gpos3 $str3 &
    fi
    if  [ "$e" -gt "$a" ]
        then
        logger "$scriptname поток $str4 в норме, что то прилетело работаем дальше "
        else
        logger "$scriptname поток $str4 упал, перезапускаем плеер"
        mpv -cache=32 -border=no -geometry "$wsize"$gpos4 $str4 &
    fi


    strdumper.sh 

    #!/bin/bash
    for i in {1..4}
    do
    dumphost=`grep str$i /home/filalex/4mpl.sh | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}"`
    timeout 5 tcpdump -i enp1s0 -n -q host $dumphost > /home/filalex/tdump$i
    cp /home/filalex/tdump$i /home/filalex/dump$i`
    done


    enp1s0 - заменить на свой интерфейс 
    filalex - заменить на пользователя 
    в корон добавляем 

    */1 * * * * root /home/filalex/strdumper.sh
    */1 * * * * filalex /home/filalex/4mpl.sh

    примерно как выглядит строка плеера 
    mpv -cache=32 -border=no -geometry 640x512+0+512 rtsp://login:password@ip.190.23.46/1/2

    так выглядит в процессах 

    а так на мониторе

    кому хачу программу чтоб поставить и забыть  - курим сыль
    https://securityrussia.com/blog/vms-vs-cms.html  иил гуглим herospeed или iSpy 

    суббота, 6 января 2018 г.

    lantatv.sh

    пара строк, которые надо кудато зебекапить чтобы не гуглимть


    #!/bin/bash

    ping -c 1 -w 5 37.235.***.*** &>/dev/null
    if [ $? -ne 0 ] ; then
    echo "inet down Oo exit"
    else

    echo  "inet up, working!"
    cd /var/www/tv/
    rm *.m3u
    echo "cd to www"
    wget -t 300 -O full.m3u http://tv.site.ru/full.m3u
    echo "wget full"
    sed -e 's/udp:\/\/@/http:\/\/server.lanta.me:50611\/udp\//g' full.m3u > lanta_proxy.m3u
    echo "created lanta proxy"
    sed -e 's/udp:\/\/@/http:\/\/myIP:50666\/udp\//g' full.m3u > filalex_proxy.m3u
    echo "created filalex proxy"
    sed -e '/225.50.70/d' -e '/Взросл/d' -e 's/udp:\/\/@/http:\/\/192.168.251.10:8888\/udp\//g' full.m3u > wox.m3u
    echo "done!"
    sed -e '/225.50.79/d' -e '/Взросл/d' filalex_proxy.m3u > wox2.m3u
    fi




    тест работы udpxy

    бывает просто падает, чтобы не тревожили в крон раз в минуту (ну или по желанию) проверка работоспособности


    #!/bin/bash
    wget  http://127.0.0.1:8888/status/ -O /dev/null

    if [ $? -ne 0 ] ; then
     logger test udpxy deamon its dead
     echo "down"
     kill -9 `pidof udpxy`
     udpxy -p 8888 -c 6 -S -l /media/data/log/udpxy/temp.log
    else
     logger test udpxy deamon its work
     echo  "up"
    fi


    если прокси упал - значит и страничка статуса упала - проверяем страничку тупо wget , если команда выполнена успешно - все норм, продолжаем работу и отписываемся в сислог (ну и в консоль если скрипт дергаем ручками ) если страничка статуса не открывается - - пишем в лог, консаоль, киляем процессы и запускаем с нужными параметрами

    вторник, 31 октября 2017 г.

    качаем музыку с vk

    с чего все началось :
    "Лёх, привет ещё раз. ты все знаешь... 😉 а знаешь как перенсти всю музыку из одного акк ВК в другой?"



    я прекрасно помню что яндекс умел сохранять фото с соц сетей (как вариант не ухожу так как там много фото, стягивается прям на диск, окуда пачкой скачивается архивом), сходил - не может, пошли гуглить.

    в принципе реально, для начала надо открыть доступ к своим аудио идея взята с яплакал

    1 топаем на урл https://vk.com/settings?act=privacy  проверяем что доступ открыт или открываем

    2 топаем на http://vkpls.boutnew.ru/ и жмем "create playlist"

    3 вводим id странички  ( либо в дресной строке стартовой старнички профиля, тыкнув на фото "albums3694482" или музыку )

    4 вводим количество треков, я узнал что у меня их 1500 (так же с главной стринчки) - получаем url на m3u или на pls, меня интересует m3u сохраняю как vk.m3u

    5 приводим в человеческий вид пробежав 2 раза по файлу командой sed - убираем #039; и &
    sed -e  's/\&amp\;//g' vk.m3u > vk.m3u1
    sed -e  's/\#039\;//g' vk.m3u1 > vk.m3u2
    6 узнаем сколько строк в фйле (первую не считаем, то есть -1 )
    cat vk.m3u2 | wc -l
    я получил 2915 , то есть работать будем до 2914 строки

    7 ну и сам скрипт

    #!/bin/bash
    cd /home/filalex/tmp2
    for i in `seq 2 2 2914`;
    do
    ii="$i"p
    let j=$i+1
    jj="$j"p
    name=`cat vk.m3u2 | sed -n "$ii" | cut -d ',' -f 2`
    url=`cat vk.m3u2 | sed -n "$jj"`
    wget $url -O "$i"" ""$name.mp3"
    done
    exit 0

    приятного прослушивания

    в принципе полученый  url можно воткнуть в mplyer vlc или куда душе угодно, впринципе можно и wget. но на выходе файлы будут *.mp3&?extra=Y4nnp7EBYwOYJgw4FLM6Va-lb7dPfzw1NUZk_tSjkyK9U9qjxR9kPpL5A6A-aKxFoJsvw4icd6P85DeaXDnCfTqzL-46dh0- то есть название не ахти да и расширение тоже
    юзать можно  wget $url -O "$name.mp3" но тогда можно получить баг что некоротые треки без ссылки ( уже заблоканы )