토렌트를 시작/중지하기 위해 공용 IP를 모니터링하여 Bash 서비스를 개선합니다.

토렌트를 시작/중지하기 위해 공용 IP를 모니터링하여 Bash 서비스를 개선합니다.

토렌트용 공용 IP를 모니터링하는 솔루션에 대한 피드백을 찾고 있습니다.

icanhazip에 대해 공용 IP를 확인합니다. VPN이 활성화되지 않으면 모든 토렌트가 일시 중지됩니다. VPN이 활성화된 경우 다운로드 중인 모든 토렌트가 확인됩니다. 하나 이상의 토렌트가 다운로드 중이면 모든 토렌트가 시작/대기됩니다. 그렇지 않으면 모든 토렌트가 일시 중지되므로 아무 작업도 수행되지 않습니다.

#!/bin/bash

#Torrent/VPN Watch Service

while :
do
ip=$(curl -s icanhazip.com)
pchk=$(transmission-remote -tall -i | grep -a State | grep -ao Down | head -1)
if [ "$ip" = xxx.xxx.xxx.xxx ] ; then
    date
        echo "WARNING! The Current IP is: $ip"
        echo "Torrents are being stopped!"
    echo "Openvpn is being restarted!"
        echo
    sleep 5
        /usr/bin/transmission-remote -tall --stop > /dev/null 2>&1
        pkill -9 screen
    screen -wipe > /dev/null 2>&1
        pkill -9 openvpn
    screen -dmS openvpn /usr/sbin/openvpn /usr/local/sbin/tvw/file.ovpn
fi
if [ "$pchk" = "Down" ] ; then
    date
    echo "The Current IP is: $ip"
    echo "Torrents are active!"
    echo
    sleep 5
    /usr/bin/transmission-remote -tall --start > /dev/null 2>&1
else
    date
        echo "Current IP: $ip"
    echo "All torrents are paused."
    echo
    sleep 5
fi
done
exit

답변1

MacOS에서만 테스트되었습니다.

실제로 수행하려는 작업은 VPN IP가 실행 중인지 확인하고, VPN IP가 Transmission의 BindAddressIPv4에 정의된 IP와 동일한지 확인하는 것입니다. 그렇지 않은 경우에는 BindAddressIPv4에 IP를 설정하십시오. 올바른 IP를 설정하고 전송을 다시 시작하세요.

다음 줄은 VPN UTU 인터페이스와 IP를 가져옵니다.

read -r vpninterface vpnip < <(/sbin/ifconfig -a | awk '/^[a-zA-Z]/{sub(/:/,""); x=$1}/inet /{print x, $2}' | awk '/utun/')

ifconfig + 첫 번째 awk는 "인터페이스 이름"과 "ip"를 표시하는 인터페이스당 한 줄을 제공합니다. 두 번째 awk는 utun 정보를 얻습니다. BindAddressIPv4 ip를 사용하여 utun ip를 확인하는 검사는 특정 간격으로 실행되어야 합니다(광산은 15분마다 실행됨).

관련 정보