Как узнать, смотрит ли кто-то plex media в поисках моего сценария bash

Привет, у меня (по крайней мере для меня) довольно сложный вопрос.

На моем сервере Ubuntu установлен медиасервер plex. Я пишу сценарий, который будет автоматически проверять, есть ли обновление для сервера plex каждые 12 часов, и когда оно есть, оно автоматически загружает его. Он написан на bash, так как это единственный язык, который я знаю.

#! /bin/bash

ogpath=$(pwd)
path=$(locate -br '^12hpmscheck.sh$' | xargs dirname)

cd "$path"
#step 1
oldlink="https://downloads.plex.tv/plex-media-server-new/1.21.1.3830-6c22540d5/debian/plexmediaserver_1.21.1.3830-6c22540d5_amd64.deb"
newlink=$(sudo wget https://plex.tv/pms/downloads/5.json && sudo chmod 777 "$path/5.json" && sudo chmod a+rwx "$path/5.json" && grep -o 'Ubuntu (16.04+) / Debian (8+) - Intel/AMD 64-bit","build":"linux-x86_64","distro":"debian","url":"https://downloads.plex.tv/plex-media-server-new/.*/debian/plexmediaserver_.*_amd64.deb","checksum":".*"},{"label":"Ubuntu (16.04+) / Debian (8+) - ARMv8' "$path/5.json" | grep -o 'https://.*.deb')

if [[ "$oldlink" == "$newlink" ]]
then
        echo "no new version"
        rm "$path/5.json"
        cd "$ogpath"
        sleep 12h
        $path/12hpmscheck.sh
else
        echo "new version"

        #step 3
        wget "$newlink"
        echo "downloaded new version"
        sed -i "s|$oldlink|$newlink|" "$path/12hpmscheck.sh"
        echo "updated old link"

        #step 4
        sudo systemctl stop plexmediaserver.service
        echo "stopped plexmediaserver.service"

        #step 5
        sudo dpkg -i plexmediaserver*.deb
        echo  "installed new version"

        #step 6
        sudo systemctl start plexmediaserver.service
        echo "started plexmediaserver.service"

        #step 7
        rm 5.json
        rm plexmediaserver*.deb
        cd "$ogpath"
        sleep 12h
        $path/12hpmscheck.sh
fi

Пояснение: Сначала он проверяет путь к сценарию и путь, из которого он был запущен (vars ogpath и path). Эти переменные необходимы для некоторых команд.

Затем у нас есть var oldlink. Эта ссылка является самой новой, если не найдена новая. Этот не изменится, если не будет новой версии.

Затем у нас есть var newlink. Эта переменная будет обновляться каждые 12 часов. Короче говоря, он загружает веб-сайт plex для загрузки сервера и находит ссылку для Ubuntu 64bit. Результат будет выглядеть так же, как oldlink, за исключением номеров версий, если есть обновление.

часть if-then-else: если oldlink и newlink одинаковы (то есть новой версии нет), он спит 12 часов и снова запускается после этого. Если они не совпадают (иначе говоря, есть новая версия), он загружает новую ссылку, останавливает pms, обновляет pms, запускает pms, обновляет старую ссылку, чтобы она стала новой версией, а затем снова спит 12 часов.

Теперь вы могли заметить # шаг 1,3,4,5,6,7. Это потому, что я сделал себе заметку перед тем, как писать сценарий. Я сделал шаги и что на этих шагах должно произойти. Это дает мне понять, что мне нужно делать. Но шага 2 нет. Это потому, что шаг 2 был следующим: если кто-то прямо сейчас смотрит plex (два других человека имеют доступ к серверу и могут смотреть контент), подождите 20 минут и снова запустите скрипт. Если никто не наблюдает, продолжайте.

Я планировал проверить это, получив ссылку на plex-dashboard (где вы можете увидеть, наблюдает ли кто-то) и с помощью grep найти строку, которая есть только тогда, когда кто-то наблюдает. В коде этой страницы, когда кто-то наблюдает, можно найти следующую строку (ее нельзя найти, когда никто не смотрит): NowPlaying-nowPlayingList. Я хотел бы выполнить эту строку с помощью grep, и когда результат соответствует «NowPlaying-nowPlayingList», тогда кто-то наблюдает и ждет 20 минут. Когда вывод пуст, он продолжается.

Проблема в том, что я не могу получить эту страницу панели инструментов, так как на ней #, и люди сказали мне, что это означает, что это "динамическая java" страница. Я не могу этого понять. Итак, я стал искать другие способы проверки и пришел к мысли, что могу извлечь эту строку из локального кода. Pms установлен на моем сервере, поэтому на машине должен быть код для него. Если я найду код, связанный с этой панелью управления, я смогу найти там строку.

Проблема в том, что я не могу найти никакого кода в целом, который связан с чистой функциональностью pms, не говоря уже о код для приборной панели. Где я могу найти код или есть другой способ проверить это, о котором я не думал. Я предпочитаю использовать bash, но если понадобится, я могу перейти на другой язык. Хотя мне придется переписать весь сценарий.

И если есть способ написать другие части кода лучше / быстрее, эти предложения также приветствуются!

Надеюсь, вы сможете помочь. Спасибо!

2
задан 21 December 2020 в 18:39

0 ответов

Другие вопросы по тегам:

Похожие вопросы: