daily pastebin goal
12%
SHARE
TWEET

up ppp tunnel & show progressbar

tolikpunkoff Mar 8th, 2016 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2.  
  3. #Script, proveryaushii, podnyalos li soedinenie
  4. WTIMEOUT=120 #Maksimalnoe vremya ojhidania 's
  5. PEERFILE="/etc/ppp/peers/" #imya peer-file
  6. ADDR="" #adres dlya ping
  7. PING=0
  8.  
  9. #Proveryaem parametry
  10. if [ -z "$1" ]; then
  11.     echo "USE myconn <peer file> [-p] [address]";
  12.     echo "Options:";
  13.     echo "<peer file> - file in /etc/ppp/peers";
  14.     echo "[-p] - use ping check";
  15.     echo "[address] - address to ping, default use gateway address";
  16.     exit 2;
  17. fi
  18.  
  19. echo "Connecting to "$1;
  20.  
  21. if [ "$2" = "-p" ]; then #esli vtoroi parametr skripta="-p"
  22.     #budem pingovat
  23.     PING=1; #ustanavlivaem flag vkluchajushii proverku
  24.     echo -n "Ping test address..."
  25.     if [ -n "$3" ]; then #proveryaem zadan li adres
  26.     ADDR=$3; #esli da, sohranyaem v peremennuju
  27.     echo $ADDR;
  28.     else #inache budet ispolzovan adres shluza
  29.     echo "Gateway address.";
  30.     fi
  31. else
  32.     echo "No ping test"
  33. fi
  34.  
  35.  
  36. PEERFILE="$PEERFILE""$1";
  37. #Proveryaem, est li file
  38. if [ ! -e "$PEERFILE" ]; then
  39.     echo "File "$PEERFILE" not found";
  40.     exit 1;
  41. fi
  42.  
  43. #Proveryaem, ne soedineno li uzhe
  44. #(v spiske processov d.b. 2 stroki pppd call NNN, esli soedineno)
  45. TMPGREP=`ps ax|grep "pppd call $1" -c`
  46. if [ $TMPGREP -gt 1 ]; then
  47.     echo "ERROR: $1 already connected"
  48.     exit 2;
  49. fi
  50.  
  51.  
  52. #Ishem pervyi svobodnyi nomer ppp soedinenia (eto nado dalshe)
  53. FIRSTFREE=0;
  54. ifconfig ppp$FIRSTFREE >/dev/null 2>/dev/null
  55. while [ $? -eq 0 ]; do
  56.     let "FIRSTFREE = FIRSTFREE+1";
  57.     ifconfig ppp$FIRSTFREE >/dev/null 2>/dev/null
  58. done
  59.  
  60.  
  61. #ishem parameter unit i udalyaem lishnee
  62. PPPUNIT=`grep "unit" $PEERFILE`;
  63. PPPUNIT=${PPPUNIT//unit/}
  64. PPPUNIT=${PPPUNIT// /}
  65.  
  66. if [ ! -n "$PPPUNIT" ]; then   
  67.     #Esli parametr unit ne ukazan, sistema ispolzuet pervy svobodny
  68.     #pri podnyatii soedinenia
  69.    
  70.     echo "Parameter 'unit' not found, system use first free ($FIRSTFREE)";
  71.     PPPUNIT=FIRSTFREE;
  72. else
  73.     #Esli ukazan, to nado proverit' ne zanyat li on
  74.     ifconfig ppp$PPPUNIT >/dev/null 2>/dev/null
  75.     if [ $? -eq 0 ]; then       #zanyat
  76.     echo "WARNING! Unit #$PPPUNIT is already in use, system use
  77.     first free ($FIRSTFREE)";
  78.     PPPUNIT=FIRSTFREE;
  79.     else            #svoboden
  80.     echo "Unit $PPPUNIT is free. OK."
  81.     fi
  82. fi
  83.  
  84. #ustanavlivaem soedinenie
  85. pppd call $1
  86.  
  87. CONNECTED=0 #flag, podnyalos li soedinenie
  88.  
  89. echo -n "Wait ("$WTIMEOUT" secounds): "
  90. while [ $WTIMEOUT -ge 0 ]; do
  91.      echo -n ".";
  92.      sleep 1
  93.     #***************************************************
  94.     TMPGREP=`ifconfig ppp$PPPUNIT 2>/dev/null|grep "destination"` #pytaemsa poluchit strochku s ip shluza
  95.     if [ -n "$TMPGREP" ]; then #esli strochka est'
  96.     TMPGREP=`echo $TMPGREP|awk ' {print $6} '` #izvlekaem awk IP shluza
  97.     if [ -n "$TMPGREP" ];then #esli adres poluchen
  98.         if [ $PING -eq 1 ]; then #esli nado pingovat'
  99.         if [ -z "$ADDR" ]; then #adres ne zadan, ispolzuem shluz
  100.                 ADDR=$TMPGREP
  101.             fi
  102.  
  103.         ping -c 1 -I ppp$PPPUNIT $ADDR >/dev/null 2>/dev/null #pytaemsya propingovat shluz
  104.             if [ $? -eq 0 ]; then # esli poluchilos
  105.                 CONNECTED=1 #ustanavlivaem flag soedinenija
  106.                 break #i preryvaem cykl. Ura!!
  107.             fi
  108.             else #esli pingovat' ne nado
  109.             CONNECTED=1 #ustanavlivaem flag soedinenija
  110.             break #i preryvaem cykl. Ura!!
  111.             fi
  112.         fi
  113.     fi
  114.     #***************************************************
  115.      let "WTIMEOUT=WTIMEOUT-1";
  116. done
  117.  
  118. # chtob sledujushee soobshenie pechatalos so sledujushei stroki
  119. echo
  120.  
  121. # Proveryaem, soedinilis ili net i sootvetstvenno soobshaem
  122. if [ $CONNECTED -eq 0 ]
  123. then
  124.      echo "Connection timeout over :("
  125. else
  126.      echo "Connected sucsesseful!"
  127. fi
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top