[megoldva]bash: a ping nem eszi meg a változómat

Sziasztok!

Az előbb töröltem egy kérdést mert rájöttem a megoldásra, de most kiderült, hogy mégsem :)
a kódom:

#!/bin/bash
i=1
for line in `cat alhalozatok.txt`; #kiolvasom sorról sorra a txtből az alhálózatokat
do
ADDR=$line$i # két stringből összerakom az ipcímet
if `ping -c 1 $ADDR` > /dev/null 2>&1; then # tesztelem, hogy ping-e?
echo ping: $ADDR
else
echo nemping: $ADDR

fi

done
exit 0

cat alhalozatok.txt
10.0.1.
10.0.2.
10.100.1.
10.101.1.

a történet annyi, hogy egy alhálózatokat tartalmazó txtből kiolvasnám az alhálózatokat és pingelném az alhálózatok első címét(később majd a többit is)
az echo szépen kiírja a két stringből összerakott ip címet, de a ping -c 1 nem eszi meg :(.
Segítségeteket kérném, mert ne mértem mi a baja.

A fő cél az lenne hogy az alhálózatokból kiszedjem azokat az ipcímeket, amelyek figyelnek a 80 porton, ezek 99%-ban nyomtatók és összeszedjem a számláló állásukat.

Hozzászólások

szerintem nem jo helyen van a ` a $ADDR utan. nekem a kovetkezo mukodik:


for i in `cat test.i`; do
   ping -c 1 $i -> /dev/null 2>&1;
   if [ $? -eq 0 ]; then
      echo ping $i;
   else
      echo nemping $i;
   fi
done;

Működik ez...

Más kérdés, hogy nem

if `ping ...`

hanem

if ping ...

Neked ui. nem a ping lefutásával gyártott sztringgel van dolgod, hanem a ping által visszaadott exitkóddal.

Amit fentebb csinálsz, egyébként azt műveli, hogy a ping által gyártott sztringnek megfelelő nevű parancsot futtatná le - ami valószínűtlen, hogy volna - és a kísérlet hibakódját kapja az if, annak alapján dönt arról, hogyan tovább.

Ezt a viselkedését pont eldugod a parancs mindennemű kimenetének semmibe irányításával.
Az ilyen átirányításokra ráérsz akkor, amikor már biztos vagy a dolgodban.

Hali!
Ez tök jó. De csak az utókor miatt. Ennyit kellett volna csinálni:
nmap -iL alhalozatok.txt -p80 -oG - |grep open
Meg widecard-okat hozzáadni állományhoz. pl:
10.0.1.*
10.100-101.1.*

ez nagyon jó, nem is értem miért nem keresetem portscan progit, nekem nem volt telepítve, az itthoni ubuntun, de megérte felrakni, így legalább nem nekem kell párhuzamosítani az nc -zv -w2 $ADDR 80 parancsot. Mondjuk a párhuzamosítást nem fogom megúszni, mert nem egyenként akarok dolgozni a nyomtatókkal.