Skript eduroam-ping

Skritp je určen k udržování aktivního IPsec spojení. Více informací naleznete v dokumentu Udržování aktivního IPsec spojení.

#!/bin/bash
#Version: 2006.05.25
 
/usr/sbin/setkey -DP |grep ^[0-9] |tr " " "\n"  |grep -v ^any| grep -v 0\.0\.0\.| sed "s/\[any\]//" | sort -u |\
while read IP
do
  if /sbin/ifconfig | grep "inet addr:$IP ">/dev/null 2>&1 ; then
    # Tohle je nase IPcko "X";
    false
  else
 
  TMPF=`mktemp /tmp/eduRoam-ping-$IP-XXXXXX`
 
  echo "#!/bin/bash" >>$TMPF
 
  # Smazat sam sebe
  echo "rm $TMPF" >>$TMPF
 
  # Chvilicku pockat at vsechny pingy neodchazi v jeden okamzik, to by
  # mozna mohlo zahltit linku
  echo "sleep `perl -e 'print(rand(3));'`" >>$TMPF
 
  # Mrknout jesli tenhle host nahodou jeste neni opingavan jinym
  # procesem.  Bude se to poustet pomerne casto a opravdu nestojim o
  # to mit spustenych milion pingu najednou ;)
  echo "if [ -f /var/lock/eduRoam-ping-$IP ]
then
  PID=\`cat /var/lock/eduRoam-ping-$IP 2>/dev/null\`
  if [ -e /proc/\$PID ]
  then
    # Proces ktery si vytvoril zamek bezi - tak to zabalime my
    exit 0;
  fi
fi
echo \$\$ > /var/lock/eduRoam-ping-$IP" >>$TMPF
 
  # Pingnout na protejsek
  echo "DATE=\`date +'%s'\`;" >>$TMPF
  echo "PING=\`ping -s 512 -c 3 -q $IP 2>/dev/null |grep transmitted\`">>$TMPF
 
  # Zapsat co jsme zjistili
  echo "logger -p local5.info -t eduRoamPing[\$\$] \"\$DATE: $IP: \$PING\"" >>$TMPF
 
  # Uklidit svuj zamek
  echo "rm /var/lock/eduRoam-ping-$IP" >>$TMPF
 
  chmod +x $TMPF && $TMPF &
fi
done

Jan Tomášek 11.09.2006 12:16 dokument převeden z www.eduroam.cz