|
[+] 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.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|