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

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

streamripper

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

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

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

bashrc

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

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

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

 PS1='[\W]\$ '

https://www.opennet.ru/tips/1539_bash.shtml 

среда, 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 asciinema

asciinema топаем https://docs.asciinema.org/getting-started/ регаемся (что бы было что сохранить или постримить можно )

в терминале пишем asciinema rec - получаем инфо что запись пошла
по окончанию шаманства пишем  exit - получаем предложение  

asciinema: recording finished
asciinema: press <enter> to upload to asciinema.org, <ctrl-c> to save locally

ну и в итоге посылаем кому нибудь ссылку на "щас покажу как это делать" в терминале 

вторник, 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; и &amp;
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" но тогда можно получить баг что некоротые треки без ссылки ( уже заблоканы )