Advertisement
zefie

pidscan.sh for minisatip boxes

Feb 14th, 2024
1,224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.15 KB | None | 0 0
  1. #!/bin/bash
  2. OLDIFS="${IFS}"
  3. TIMEOUT=10
  4. HOST="192.168.11.77"
  5. SRC=1
  6. FREQ=12000
  7. POL="V"
  8. SYS="DVBS"
  9. RATE=20000
  10. DEFAULT_PIDS="1,16,17,18,20,21,8191"
  11.  
  12. if [ ! -z "${*}" ]; then
  13.     while [ "${1:0:1}" == "-" ]; do
  14.         case "${1}" in
  15.             "-t"|"--timeout")
  16.                 TIMEOUT="${2}"
  17.                 shift 2;
  18.                 ;;
  19.             "-h"|"--host")
  20.                 HOST="${2}"
  21.                 shift 2;
  22.                 ;;
  23.             "-s"|"--src"|"--source")
  24.                 SRC="${2}"
  25.                 shift 2;
  26.                 ;;
  27.             "-f"|"--freq"|"--frequency")
  28.                 FREQ="${2}"
  29.                 shift 2;
  30.                 ;;
  31.             "-p"|"--pol"|"--polarity")
  32.                 POL="${2}"
  33.                 shift 2;
  34.                 ;;
  35.             "-sys"|"--sys"|"--system")
  36.                 SYS="${2}"
  37.                 shift 2;
  38.                 ;;
  39.             "-sr"|"--symbol-rate")
  40.                 RATE="${2}"
  41.                 shift 2;
  42.                 ;;
  43.             *)
  44.                 echo "Help for ${0}:"
  45.                 echo ""
  46.                 echo "-t    --timeout       .. (int) Seconds to wait for data from a PID (Def: ${TIMEOUT})"
  47.                 echo "-s    --src, --source     .. (int) DiSEqC Source"
  48.                 echo "-f    --freq, --frequency     .. (int) Transponder Frequency"
  49.                 echo "-p    --pol, --polarity   .. [H,V,L,R] LNB Polarization"
  50.                 echo "-s    --sys, --system     .. [DVBS,DVBS2] DVB System Type"
  51.                 echo "-sr   --symbol-rate       .. (int) Transponder Symbol Rate"
  52.                 echo ""
  53.                 echo "By default, the tool will search for the following PIDS:"
  54.                 echo "${DEFAULT_PIDS}"
  55.                 echo "You can specify a set of PIDs like above, or a range"
  56.                 echo "such as 7400-7600. To scan a generated range of PIDs"
  57.                 echo "you can specify a PID with a + sign, eg +7500, and the tool"
  58.                 echo "will search for 7500-7530"
  59.                 exit 1;
  60.                 ;;
  61.         esac
  62.     done
  63. fi
  64.  
  65.  
  66.  
  67. FOUNDPIDS=();
  68.  
  69.  
  70. URL="http://${HOST}:8080/?src=1${SRC}&freq=${FREQ}&pol=${POL}&msys=${SYS}&sr=${RATE}&pids="
  71. TESTFILE="/mnt/d/test.ts"
  72.  
  73. scanpid() {
  74.     if [ -f "${TESTFILE}" ]; then
  75.         rm "${TESTFILE}"
  76.         touch "${TESTFILE}"
  77.     fi
  78.     echo "Scanning PID(s) on ${FREQ}${POL} @ ${RATE}sym/s (waiting up to ${TIMEOUT} seconds): ${1}... "
  79.     #curl --silent "${URL}${1}" --connect-timeout ${TIMEOUT} --max-time ${TIMEOUT} --max-filesize 1k -o "${TESTFILE}"
  80.     wget -q --show-progress --tries=1 --timeout ${TIMEOUT} -O - "${URL}${1}" | dd of=${TESTFILE} iflag=fullblock bs=512 count=1 2>/dev/null
  81.     RES=$?
  82.     return ${RES}
  83. }
  84.  
  85. runmain() {
  86.     scanpid "${1}"
  87.     local RES=$?
  88.     if [ ${RES} -eq 0 ]; then
  89.         local SIZE=$(stat --printf "%s" "${TESTFILE}");
  90.         if [ ${SIZE} -gt 0 ]; then
  91.             if [ $(echo "${1}" | grep -c "\,") -eq 0 ]; then
  92.                 FOUNDPIDS+=(${1})
  93.                 echo "Data detected on PID ${1}!"
  94.             else
  95.                 local PIDA=($(echo "${1}" | tr ',' ' '));
  96.                 local PIDC=${#PIDA[@]};
  97.                 local PIDL=$(echo ${PIDC} | awk '{print int($1/2)}')
  98.                 local PID1=""
  99.                 local PID2=""
  100.                 for f in $(seq 0 $((PIDL - 1))); do
  101.                     PID1+="${PIDA[${f}]},"
  102.                 done
  103.                 for f in $(seq ${PIDL} $((PIDC - 1))); do
  104.                     PID2+="${PIDA[${f}]},"
  105.                 done
  106.                 echo ""
  107.                 runmain "${PID1::-1}"
  108.                 runmain "${PID2::-1}"
  109. #               OLDIFS="${IFS}"
  110. #               IFS=$'\n'
  111. #               for f in $(echo "${PIDS}" | tr ',' '\n'); do
  112. #                   runmain "${f}";
  113. #               done
  114. #               IFS="${OLDIFS}"
  115.             fi
  116.         else
  117.             echo ""
  118.         fi
  119.     else
  120.         echo ""
  121.     fi
  122. }
  123.  
  124. if [ ! -z "${1}" ]; then
  125.     if [ $(echo "${1}" | grep "\," -c) -gt 0 ]; then
  126.         PIDS="${1}"
  127.     else
  128.         MINPID=${1}
  129.         if [ "${MINPID:0:1}" == "+" ]; then
  130.             PIDS=$(seq -s"," ${MINPID} $((MINPID+30)))
  131.         elif [ $(echo "${MINPID}" | grep -c "\-") -gt 0 ]; then
  132.             MAXPID=$(echo "${MINPID}" | cut -d'-' -f2)
  133.             MINPID=$(echo "${MINPID}" | cut -d'-' -f1)
  134.             RANGE="${MINPID} - ${MAXPID}"
  135.             echo "Scanning range: ${RANGE}"
  136.             MAX30PID=${MINPID}
  137.             while [ ${MINPID} -le ${MAXPID} ]; do
  138.                 MAX30PID=$((MINPID + 30))
  139.                 if [ ${MAX30PID} -gt ${MAXPID} ]; then
  140.                         MAX30PID=${MAXPID}
  141.                 fi
  142.                 PIDS=$(seq -s"," ${MINPID} ${MAX30PID})
  143.                 MINPID=$((MAX30PID + 1))
  144.                 runmain "${PIDS}"
  145.             done
  146.             unset PIDS
  147.         elif [ ${MINPID} -gt 0 ]; then
  148.             PIDS="$(echo "${MINPID}" | sed "s|+||")"
  149.         else
  150.             echo "Usage: ${0} [pid|pids]"
  151.             exit 1;
  152.         fi
  153.     fi
  154. else
  155.     PIDS="${DEFAULT_PIDS}"
  156. fi
  157.  
  158. if [ ! -z "${PIDS}" ]; then
  159.     runmain "${PIDS}"
  160. fi
  161.  
  162. if [ ${#FOUNDPIDS[@]} -gt 0 ]; then
  163.     echo "Found PIDS: ${FOUNDPIDS[*]}"
  164. else
  165.     if [ -z "${RANGE}" ]; then
  166.         echo "Did not find any PIDs (Searched: ${PIDS})"
  167.     else
  168.         echo "Did not find any PIDs (Searched PID range: ${RANGE})"
  169.     fi
  170. fi
  171.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement