ďťż
 
 
   [+] Prasujemy zmienną $DONOS za pomocą polecenia cut
 
 

Tematy

 
    
 

 

 

 

[+] Prasujemy zmienną $DONOS za pomocą polecenia cut





urocz - 25-03-2010 12:04
Idzie wiosna a z nią sprzątanie i prasowanie. Mam mały problem, napisałem skrypt do wyciągania mac adresów i ip z ARP.

I to co się dzieje: CUT="/bin/cut"
DONOS="/sbin/arp -n"
ips=`echo $DONOS | $CUT -c 1-16 ` tu cos nie fika
arps=`$echo $DONOS  | $CUT -c34-50`# tu cos nie fika
i3=0
        for WORD in `echo ${ips}` ; do
                tab_ips[$i3]=`echo $WORD |  $CUT -c 1-16 `
                echo "${tab_ips[$i3]}"
                        ((i3=1+i3))
        done
.... I powyższe rozwiązanie nie działa, chodzi tu o wycięcie kolumny za pomocą polecenia ,,cut''.
ips=`echo $DONOS | $CUT -c 1-16 ` Natomiast działa tylko wtedy gdy zrobię: ips=`/sbin/arp -n | $CUT -c 1-16 ` Jednak to ma wadę bo za każdym razem pobiera nowe wartości i mogą się różnic, a mnie zależy by były te same, by zmienna ips pobierała dane z $DONOS, a nie za każdym razem wywoływała arp.



lessmian2 - 25-03-2010 13:54
Nie: ips=`echo $DONOS | $CUT -c 1-16 ` a: ips=`$DONOS | $CUT -c 1-16 `



urocz - 25-03-2010 18:43
Też prasuje całkowicie inaczej niż przy bezpośrednim pobieraniu danych z arp.

Prasuje ładnie gdy zrobię: ips=`/sbin/arp -n | $CUT -c 1-16 ` Wycina pierwszą kolumnę ale ma wadę, bo za każdym odwołaniem się pobiera nowe dane, które muszą się różnic a muszę do jednej tabeli wyciąć lite ip z ,,arp -n'' a do drugiej listę mac adresów.
Zatem wpadłem na pomysł, że zawartość arp przypisze do zmiennej $DONOS jednak nie mogę z niej ładnie wydobyć dwóch kolumn.

To cała funkcja:
http://wklejto.pl/61638
function donosiciel
{
#funkcja przypisuje mac do ip

DONOS=`/sbin/arp -n`
ips=`echo $DONOS |  $CUT -c1-16 `
arps=`echo $DONOS  |  $CUT -c34-50`
echo "$ips"
echo "$arps"
i3=0
        for WORD in `echo ${ips}` ; do
                tab_ips[$i3]=$WORD
                echo "${tab_ips[$i3]}"
                        ((i3=1+i3))
        done
       
i4=0       
        for WORD in `echo ${arps}` ; do
        tab_arps[$i4]=$WORD
                echo "${tab_arps[$i4]}"
                ((i4=1+i4))
        done
       
ILE_SPY=${#tab_spy[*]}
i4=0
i5=0
        for (( i4=0; i4<$ILE_SPY;i4++ )); do
       
                for (( i5=0;i5<$ILOSC_ARP;i5++ )); do
                               
                                S_Q=${tab_spy[${i4}]}
                                A_Q=${tab_arp[${i5}]}
                               
                if [ "`echo $S_Q`" =  "`echo $A_Q`" ]; then
                tab_donos[i4]="echo $S_Q - ${tab_ips[i4]}"
                ((i4=1+i4))
                i5=0
               
                fi
                done       
        done       
} Temat rozwiązany, dziękuję za wsparcie.

Okazało się, że wystarczy zrobić: ips="`$DONOS | CUT -c 1-16`"
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis