четверг, 24 октября 2024 г.

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

в продолжение https://terminalko.blogspot.com/2019/04/blog-post.html 

надо :  mpv xorg xdotool i3 

топовые команды

поворот экранаexport DISPLAY=':0.0' && xrandr -o left &
вернуть как былоexport DISPLAY=':0.0' && xrandr -o normal &
переключение на рабочее место 1export DISPLAY=':0.0' && exec i3-msg 'workspace 1' &
переключение на рабочее место 1 альтернативный способexport DISPLAY=':0.0' && xdotool key "Super_L+1"
переключение на рабочее место 2export DISPLAY=':0.0' && exec i3-msg 'workspace 2' &
переключение на рабочее место 2 альтернативный способexport DISPLAY=':0.0' && xdotool key "Super_L+2"
запуск произвольного потокаexport DISPLAY=':0.0' && mpv -border=no rtsp://admin:admin@10.190.249.9/live/main &
узнать текущее рабочее место
i3-msg -t get_workspaces | jq '.[] | select(.focused==true).name' | cut -d"\"" -f2
автозапуск иксов

в файле

/home/filalex/.bash_profile 

прописываем

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
автологин пользователя

в файле

/etc/systemd/system/getty.target.wants/getty@tty1.service

меняем строку

ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear %I $TERM

на

ExecStart=-/sbin/agetty -a filalex %I $TERM
автозапуск приложений

в конце файла

/home/filalex/.config/i3/config

прописываем либо скрипт либо команду

exec /home/filalex/load_layout.sh
exec  mpv -border=no rtsp://admin:admin@10.190.249.9/live/main &
переключение мониторов

в кронтаб записываем

1-59/2 * * * *	filalex	export DISPLAY=':0.0' && exec i3-msg 'workspace 1' &
2-58/2 * * * *	filalex	export DISPLAY=':0.0' && exec i3-msg 'workspace 2' &
сохранить текущее рабочее место
i3-save-tree --workspace 1 > /home/filalex/workspace-1.json
для восстановления требуется пройтись по нему скриптом
tail -n +2 /home/filalex/workspace-1.json | fgrep -v '// splitv' | sed 's|//||g' > /home/filalex/workspace1.json
рестор сейшн идет командой
i3-msg "workspace 1; append_layout /home/filalex/workspace1.json"

но это только восстанавливает мозайку которая была сохранена, поэтому надо еще запустить в этой мазайке приложухи проще всего это сделать скриптом , а его засунуть в автозапуск

/home/filalex/load_layout.sh
#!/bin/bash

# Во-первых, мы добавим сохраненный макет рабочей области N в рабочую область M
i3-msg "workspace 1; append_layout /home/filalex/workspace1.json"

# И, наконец, мы заполним контейнеры программами
(mpv -border=no rtsp://admin:admin@10.190.253.88/live/main &)
(mpv -border=no rtsp://admin:admin@10.190.252.101/live/main &)
(mpv -border=no rtsp://admin:admin@10.190.254.94/live/main &)
подключение к монитору
x11vnc  -display :0 -auth /tmp/serverauth.*

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


--------------------------------------------------------

неактуально но пусть лежит
Chrome's autoplay policies will change in April of 2018 при обновлении системы получили дисейбл автоплея в браузере
таблетка
google-chrome-stable --kiosk http://127.0.0.1/ --new-window --start-maximized --incognito  --autoplay-policy=no-user-gesture-required --disable-features=PreloadMediaEngagementData,AutoplayIgnoreWebAudio,MediaEngagementBypassAutoplayPolicies & 

так же можно юзать firefox (в сервии 71 они научились работать в режиме киоск и не нужны вякие необновляемые плагины) но эта сволочь будет просить обновлений пока не нагуглил как их отключить
как вариант дождаться ESR версии но на данный момент она 68 а следующая будет 78 - June 30, 2020 хотя в ней тоже могут быть камни

firefox --kiosk http://127.0.0.1 -private 
  • автологин пользователя
неактуально но пусть лежит
вариант firefox

требуются пакеты php lighttpd xdotool (xdotool можно заменить на разширение для файрфокса типа R-kiosk )
в автоматически запускаемые приложения добавляем 2 пункта

  • firefox
  • и скрипт который на окне огнелиса жмакнет F11
#!/bin/sh
sleep 20
export DISPLAY=':0.0'
WID=`xdotool search --name Mozilla | head -1`
xdotool windowactivate $WID
xdotool key F11

firefox настраиваем на страничку http://127.0.0.1
на локалхосте ставим след кусочек html

<meta http-equiv="refresh" content="36000">
<body bgcolor="black">
<TABLE border="0" style="width:100%; height:100%;" bgcolor="black">
        <TR>
                <TD><iframe style="width:100%; height:100%;" src="http://193.203.61.11:8080/Apelsin/embed.html?realtime=true"></iframe>></TD> 
                <TD><iframe style="width:100%; height:100%;" src="http://193.203.61.11:8080/opp_router/embed.html?realtime=true"></iframe>></TD> 

        </TR>
        <TR>
                <TD><iframe style="width:100%; height:100%;" src="http://193.203.61.11:8080/opp_agents/embed.html?realtime=true"></iframe>></TD> 
                <TD><iframe style="width:100%; height:100%;" src="http://193.203.61.11:8080/senko/embed.html?realtime=true"></iframe>></TD> 
        </TR>
</TABLE>
</body>

в /etc/lighttpd/lighttpd.conf дописываем строки

$HTTP["remoteip"] !~ "127.0.0.1|37.235.235.0|37.235.143.99" {
url.access-deny = ("")
}
вариант mplayer

требуются пакеты xdotool mplayer2

в кроне

*/1 *	* * *	root	/home/filalex/strdumper.sh
*/1 *	* * *	filalex	/home/filalex/4mpl.sh
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

4mpl.sh
#!/bin/bash
# тут указываем какие стримы будем вещать 
scriptname=4mpl.sh
str1=rtmp://10.190.255.215:1935/livemain
str2=rtmp://10.190.255.148:1935/livemain
str3=rtmp://10.80.1.132:1935/livemain
str4=rtmp://10.190.255.147:1935/livemain
# глядим что за экран у нас, вдруг сменили и пригодиться в положениях плеера
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 упал, перезапускаем плеер"
    mplayer -noborder -geometry "$wsize"$gpos1 $str1 &
fi
if  [ "$c" -gt "$a" ]
    then
    logger "$scriptname поток $str2 в норме, что то прилетелоработаем дальше "
    else
    logger "$scriptname поток $str2 упал, перезапускаем плеер"
    mplayer -noborder -geometry "$wsize"$gpos2 $str2 &
fi
if  [ "$d" -gt "$a" ]
    then
    logger "$scriptname поток $str3 в норме, что то прилетелоработаем дальше "
    else
    logger "$scriptname поток $str3 упал, перезапускаем плеер"
    mplayer -noborder -geometry "$wsize"$gpos3 $str3 &
fi
if  [ "$e" -gt "$a" ]
    then
    logger "$scriptname поток $str4 в норме, что то прилетелоработаем дальше "
    else
    logger "$scriptname поток $str4 упал, перезапускаем плеер"
    mplayer -noborder -geometry "$wsize"$gpos4 $str4 &
fi

x11vnc

 

УДАЛЕННЫЙ ДОСТУП НА УЖЕ ОТКРЫТУЮ Х-сессию!

Нужен рут-доступ по ssh на комп жертвы и пакет x11vnc, если его нет - ставим

Далее запускаем

x11vnc  -noxfixes -noxrecord -noxdamage  -display :0 -auth /var/run/lightdm/root/:0
если необходимо указать ip (в случае с VPN офисами)
Номер дисплея может отличаться, то что после -auth тоже, подглядеть можно с помощью ps wwwwaux | grep auth. Подробнее в man x11vnc

лениво

с уже рабочей тачки копируем ключ

cat /root/.ssh/authorized_keys | ssh root@192.168.11.11 'cat >> ~/.ssh/authorized_keys'

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

PingОвалОчка

 "от попингуя слышу", как говорится. просто пинговать и получать стату по ответам на icmp запросы уже не модно, ну точнее можно олдскульно но иногда душа требует красоты 

gping  https://github.com/orf/gping 


есть инстал на все системы, даже винду,  оставлю только любимый линукс 

echo 'deb [signed-by=/usr/share/keyrings/azlux.gpg] https://packages.azlux.fr/debian/ bookworm main' | sudo tee /etc/apt/sources.list.d/azlux.list
sudo apt install gpg
curl -s https://azlux.fr/repo.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/azlux.gpg > /dev/null
sudo apt update
sudo apt install gping

noping 

Пакет правда называется oping а команда noping странно, первый раз такое встречааю и каждый раз натыкаюсь когда вспоминаю про него и хочу поставить. 



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