Jump to content

Литвинов Сергей

Forum Members
  • Posts

    16
  • Joined

  • Last visited

Posts posted by Литвинов Сергей

  1. Добрый день!

    У меня есть скрипт, который по запросу от любого устройства (TV, телефон, планшет и прочее) на порт 32400 ( медиасервер PLEX) посылает WOL пакет на ПК, на котором развернут PLEX сервер. Скрипт базируется на утилите etherwake и анализе логов утилитой logread.

    Как выяснилось позднее в keenetic нет logread.

     

    Буду благодарен если поможете его модицифровать скрипт для работы на роутере giga.

     

    #!/bin/sh
    
    PINGS_CNT=1
    SRV_IP=192.168.0.86
    SRV_MAC=C8:60:00:99:0A:97
    SRV_PORT=32400
    #BC_IP=192.168.0.255
    WOL=/usr/bin/etherwake
    LOG=/var/log/wol
    
    logger -p user.info -t PLEX "[`date -Iseconds`] PLEX Wake on LAN serevice was started."
    iptables -D FORWARD -p tcp --dport 32400 -m state --state NEW -j LOG --log-prefix "PLEX Connection "
    iptables -I FORWARD -p tcp --dport 32400 -m state --state NEW -j LOG --log-prefix "PLEX Connection "
    #echo "Log was truncated at [`date -Iseconds`]" > $LOG # Truncate log
    logread -f | while read LOG_LINE; do
        DST=`echo $LOG_LINE | grep -Fo "DST=$SRV_IP"`
        DPT=`echo $LOG_LINE | grep -Fo "DPT=$SRV_PORT"`
        if [ "$DST" == "" -o "$DPT" == "" ]; then
            continue
        fi
        #SRC_IP=`echo $LOG_LINE | grep -Fo "SRC=" | sed -e "s/SRC=//g"`
        SRC_IP=`echo $LOG_LINE | grep -Fo "SRC="`
        if [ "$SRC_IP" != "" ]; then
            # Found a matching line. Try to ping the server
            PING_RSLT=`ping -c $PINGS_CNT -W 1 $SRV_IP 2> /dev/null | awk '/packets received/ {print $4}'`
            if [ "$PING_RSLT" != "$PINGS_CNT" ]; then
            # Guess it's sleeping. Send WoL.
                #echo "[`date -Iseconds`] $SRC_IP causes PLEX SRV WoL."  >> $LOG
                #logger -p user.info -t PLEX "[`date -Iseconds`] $SRC_IP causes PLEX SRV Wake on LAN."
                logger -p user.info -t PLEX "[`date -Iseconds`] PLEX SRV Wake on LAN was triggered."
                $WOL $SRV_MAC #>> $LOG
            #else
                #echo "[`date -Iseconds`] PLEX SRV $SRV_IP was accessed by $SRC_IP and is alive." >> $LOG
                #logger -p user.info -t PLEX "[`date -Iseconds`] SRV is alive"
            fi
        fi
    done
  2. Добрый день!

    У меня есть скрипт, который по запросу от любого устройства (TV, телефон, планшет и прочее) на порт 32400 ( медиасервер PLEX) посылает WOL пакет на ПК, на котором развернут PLEX сервер. Скрипт базируется на утилите etherwake и анализе логов утилитой logread.

    Как выяснилось позднее в keenetic нет logread.

     

    Помогите пожалуйста модицифровать скрипт для работы на роутере giga.

    #!/bin/sh
    
    PINGS_CNT=1
    SRV_IP=192.168.0.86
    SRV_MAC=C8:60:00:99:0A:97
    SRV_PORT=32400
    #BC_IP=192.168.0.255
    WOL=/usr/bin/etherwake
    LOG=/var/log/wol
    
    logger -p user.info -t PLEX "[`date -Iseconds`] PLEX Wake on LAN serevice was started."
    iptables -D FORWARD -p tcp --dport 32400 -m state --state NEW -j LOG --log-prefix "PLEX Connection "
    iptables -I FORWARD -p tcp --dport 32400 -m state --state NEW -j LOG --log-prefix "PLEX Connection "
    #echo "Log was truncated at [`date -Iseconds`]" > $LOG # Truncate log
    logread -f | while read LOG_LINE; do
        DST=`echo $LOG_LINE | grep -Fo "DST=$SRV_IP"`
        DPT=`echo $LOG_LINE | grep -Fo "DPT=$SRV_PORT"`
        if [ "$DST" == "" -o "$DPT" == "" ]; then
            continue
        fi
        #SRC_IP=`echo $LOG_LINE | grep -Fo "SRC=" | sed -e "s/SRC=//g"`
        SRC_IP=`echo $LOG_LINE | grep -Fo "SRC="`
        if [ "$SRC_IP" != "" ]; then
            # Found a matching line. Try to ping the server
            PING_RSLT=`ping -c $PINGS_CNT -W 1 $SRV_IP 2> /dev/null | awk '/packets received/ {print $4}'`
            if [ "$PING_RSLT" != "$PINGS_CNT" ]; then
            # Guess it's sleeping. Send WoL.
                #echo "[`date -Iseconds`] $SRC_IP causes PLEX SRV WoL."  >> $LOG
                #logger -p user.info -t PLEX "[`date -Iseconds`] $SRC_IP causes PLEX SRV Wake on LAN."
                logger -p user.info -t PLEX "[`date -Iseconds`] PLEX SRV Wake on LAN was triggered."
                $WOL $SRV_MAC #>> $LOG
            #else
                #echo "[`date -Iseconds`] PLEX SRV $SRV_IP was accessed by $SRC_IP and is alive." >> $LOG
                #logger -p user.info -t PLEX "[`date -Iseconds`] SRV is alive"
            fi
        fi
    done

     

     

     

     

×
×
  • Create New...