Portál AbcLinuxu, 13. května 2025 23:14

Dotaz: Čtení dat z počítadel - zvláštní chování

9.2.2007 11:17 Zmije
Čtení dat z počítadel - zvláštní chování
Přečteno: 127×
Odpovědět | Admin
Dobrý den. Potřebuji přečíst data z počítadel přenesených dat, systém: debian sarge - czfree distribuce. Náčítám data označená v htb:
#! /bin/bash

InetDev="eth0"
LocalDev="eth1"

RATEa=2500
RATEb=250

tc qdisc del dev $LocalDev root
tc qdisc add dev $LocalDev root handle 1:0 htb

tc class add dev $LocalDev parent 1:0 classid 1:1 htb rate ${RATEa}kbit
tc class add dev $LocalDev parent 1:1 classid 1:11 htb rate ${RATEb}kbit ceil ${RATEa}kbit
tc class add dev $LocalDev parent 1:1 classid 1:12 htb rate ${RATEb}kbit ceil ${RATEa}kbit
.
.
tc qdisc add dev $LocalDev parent 1:11 handle 11:0 sfq perturb 10
tc qdisc add dev $LocalDev parent 1:12 handle 12:0 sfq perturb 10
.
.
iptables -t mangle -F FORWARD
iptables -t mangle -A FORWARD -i $InetDev -d 192.168.2.2 -j MARK --set-mark 1
iptables -t mangle -A FORWARD -i $InetDev -d 192.168.2.3 -j MARK --set-mark 2
.
.
tc filter add dev $LocalDev parent 1:0 protocol ip handle 1 fw flowid 1:11
tc filter add dev $LocalDev parent 1:0 protocol ip handle 2 fw flowid 1:12
.
.
pomocí skriptu:
#! /bin/bash
iptables -L FORWARD -t mangle -n -v -x |  
while read radek; do
 echo $radek >> /etc/network/pocitadlo2.txt
done
a dostanu tento výsledek:
Chain FORWARD (policy ACCEPT 10014869 packets, 6361905832 bytes)
pkts bytes target prot opt in out source destination
73611 69782794 MARK all -- eth0 1 20072 a cbq-3501.internet.ssh  cbq-4001.internet.marapo error.log install.sh interfac interfaces.old pocitadlo.txt roura swap.sh 0.0.0.0/0 192.168.2.2 MARK set 0x1
0 0 MARK all -- eth0 1 20072 a cbq-3501.internet.ssh  cbq-4001.internet.marapo error.log install.sh interfac interfaces.old pocitadlo.txt roura swap.sh 0.0.0.0/0 192.168.2.3 MARK set 0x2
0 0 MARK all -- eth0 1 20072 a cbq-3501.internet.ssh  cbq-4001.internet.marapo error.log install.sh interfac interfaces.old pocitadlo.txt roura swap.sh 0.0.0.0/0 192.168.2.4 MARK set 0x3
což je mi kničemu, pokud ale použiju při čtení jen:
iptables -L FORWARD -t mangle -v -x |
obdržím toco potřebuju kromě ip adres, ty bych raději v číselné podobě:
Chain FORWARD (policy ACCEPT 10024890 packets, 6366661171 bytes)
pkts bytes target prot opt in out source destination
74534 70105462 MARK all -- eth0 any anywhere komp1 MARK set 0x1
0 0 MARK all -- eth0 any anywhere komp2 MARK set 0x2
0 0 MARK all -- eth0 any anywhere komp3 MARK set 0x3
Jak je možné že na sebe roura při číselném výstupu nabalý další text? A hlavně jak dosáhnout kýženého výsledku. Pokud mi poradíte jak pro každý řádek získam zvlášť proměnnou s objemem dat a ip adresu budu plně spokojen, díky za odpověd.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.2.2007 12:05 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Čtení dat z počítadel - zvláštní chování
Odpovědět | | Sbalit | Link | Blokovat | Admin
Problém je v
echo $radek >> /etc/network/pocitadlo2.txt
(keď sa vypisuje riadok získaný aj s -n tak môže obsahovať aj znak "*" a ten sa pri výpise expanduje na zoznam súborov). Treba použiť
echo "$radek" >> /etc/network/pocitadlo2.txt
alebo dať na začiatok skriptu
set -f
(podla toho preferovaného výstupu [tento druhý spôsob totiž vymaže viacnásobné medzery])

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.