Új hozzászólás Aktív témák
-
SteveBeard
senior tag
válasz
Jester01 #1299 üzenetére
Úgy nézett ki, hogy minden rendben, hibát sem dobott, de csak nem akarta figyelmen kívül hagyni a megadott MAC címet. Két MAC címről lett volna szó a 00-00... és egy a routerre csatlakoztatott PS2 címéről.
Egyelőre pihentetem a dolgot, azután pár nap után friss erővel nekifutok megint.
Már nem tudom Neked bemásolni, mert kitöröltem, de talán jobb is -
Jester01
veterán
válasz
SteveBeard #1298 üzenetére
Azért van a topik.
Melyik részével nem boldogultál? Csak egy string konstansba kellett volna felvenned a mac listát ahogy mutattam, aztán meg az az if kell és kész. -
Jester01
veterán
válasz
Jester01 #1295 üzenetére
busybox kompatibilis változat:
ignore="00-00-00-00-00-01,00-00-00-00-00-03,00-00-00-00-00-05,00-00-00-00-00-07"
i=1
while [ $i -le 8 ]
do
mac="00-00-00-00-00-0$i"
echo -n "$mac "
if [ "$ignore" == "${ignore/$mac/}" ]
then
echo "valid"
else
echo "ignored"
fi
i=$((i + 1))
done -
Jester01
veterán
válasz
SteveBeard #1294 üzenetére
Például belepakolod egy asszociatív tömbbe ami nem kell.
#! /bin/bash
declare -A ignore
ignore=(
["00-00-00-00-00-01"]=1,
["00-00-00-00-00-03"]=1,
["00-00-00-00-00-05"]=1,
["00-00-00-00-00-07"]=1
)
for ((i=1; i<8; i+=1))
do
mac="00-00-00-00-00-0$i"
echo -n "$mac "
if [[ ${#ignore[$mac]} = 0 ]]
then
echo "valid"
else
echo "ignored"
fi
done$ ./test.sh
00-00-00-00-00-01 ignored
00-00-00-00-00-02 valid
00-00-00-00-00-03 ignored
00-00-00-00-00-04 valid
00-00-00-00-00-05 ignored
00-00-00-00-00-06 valid
00-00-00-00-00-07 ignored(Ez viszont busybox-ban így nem megy)
-
SteveBeard
senior tag
Sziasztok!
Adott ez a rész egy scriptben:
for MAC in $(cat /etc/ethers |cut -f1) ; do
MAC_=$(echo $MAC | sed 's/:/-/g')
doneHogy tudnám elérni, hogy bizonyos MAC címeket ne vegyen figyelembe?
-
Jester01
veterán
válasz
SteveBeard #1291 üzenetére
$ date +%Y-%V
2013-02man date: %V ISO week number, with Monday as first day of week (01..53)
-
SteveBeard
senior tag
Nem teljesen ide, de hirtelen nem tudom hol kérdezzem meg. Ti hogy íratnátok ki a hetek számát?
Ha jól tudom már a 2. hét van, de eszerint:
date +%Y-%W
2013-01az első....
-
bambano
titán
válasz
SteveBeard #1287 üzenetére
emlékeim szerint az rm -f nem szól be.
-
SteveBeard
senior tag
válasz
SteveBeard #1287 üzenetére
Kiszaladtam a szerkesztési időből.
Arra közben rájöttem, hogy az nem tetszik neki, ha ugyanolyan kiterjesztésű fájlból többet talál.
Ha csak egy van belőle, akkor simán törli.... -
SteveBeard
senior tag
Sziasztok!
Szeretnék törölni több fájlt, mindegyikben szerepel a 00-00-00-00-00-00 és .traf .png .rrd lehet a kiterjesztése.
Az rm $IMAGEFILE/00-00-00-00-00-00*.png és persze a kiterjesztésnek megfelelően a többi parancs törli is a fájlokat, de ha nincs ilyen fájl, akkor hibaüzenetet ad.
Ezt szerettem volna kikerülni és a korábbi hozzászólásokat bogarászva próbáltam megoldani, de kevés sikerrel.
Ez lett volna, amit kitaláltam:
[[ -f "$IMAGEFILE/00-00-00-00-00-00*.png" ]] && rm "$IMAGEFILE/00-00-00-00-00-00*.png"
[[ -f "$IMAGEFILE/00-00-00-00-00-00*.traf" ]] && rm "$IMAGEFILE/00-00-00-00-00-00*.traf"
[[ -f "$IMAGEFILE/00-00-00-00-00-00*.rrd" ]] && rm "$IMAGEFILE/00-00-00-00-00-00*.rrd"vagy ez:
if [ -f $IMAGEFILE/00-00-00-00-00-00*.png ] ; then
rm "$IMAGEFILE/00-00-00-00-00-00*.png"
fi
De mind a két változatra ez a hibaüzenet:
+ [[ -f /opt/www_traff/stat_images/00-00-00-00-00-00_2013-01-10.png /opt/www_traff/stat_images/00-00-00-00-00-00_week_2013-01.png ]]
sh: /opt/www_traff/stat_images/00-00-00-00-00-00_week_2013-01.png: unknown operand
+ [[ -f /opt/www_traff/stat_images/00-00-00-00-00-00*.traf ]]
+ [[ -f /opt/www_traff/stat_images/00-00-00-00-00-00*.rrd ]]A sima törlés megy, ahogy látom a fájlokat is megtalálja, nem tudom hol rontom el
(#1284) bambano
Ha sikerül kijavítanom azokat a hibákat, amiket mondtatok, természetesen kiteszem, de ha érdekel elküldhetem Neked pü-ben. Egész szépen dolgozik, még egy html oldalt kell neki készítenem, hogy kereshető is legyen, mert egyelőre csak az aktuális kapcsolatokat és azok grafikonjait jeleníti meg. Az sem lesz kis feladat, mivel még soha nem csináltam. -
szoke12
őstag
Sziasztok!
Olyan kérdésem lenne, hogy hogyan tudnám azt elérni, hogy egy script futtatása közben read parancs beiktatása mellett hogy tudnám rossz válaszkor viszzaugratni pár sorral a scriptet?
Tehát hogy egy bizonyos ponttól fusson újra. -
bambano
titán
válasz
SteveBeard #1283 üzenetére
a múltkori cuccot, amit faragtál, kitehetnéd publikus helyre (pl. logout blog), hátha mást is érdekel.
-
Jester01
veterán
válasz
SteveBeard #1281 üzenetére
Kiírja a syslog-ba a megadott szöveget a megadott "tag" megjelöléssel:
Hogy honnan tudom? Hát innen:$ logger --help
BusyBox v1.17.1 (Debian 1:1.17.1-8) multi-call binary.
Usage: logger [OPTIONS] [MESSAGE]
Write MESSAGE (or stdin) to syslog
Options:
-s Log to stderr as well as the system log
-t TAG Log using the specified tag (defaults to user name)
-p PRIO Priority (numeric or facility.level pair) -
SteveBeard
senior tag
Sziasztok!
Nem nagyon van mozgás, ezért fel merem tenni a kérdésem...Egy scriptben ennek a sornak mi a feladata?
logger -t makepng_load "Imgfile:$IMGFILE Start:$2"
-
Jester01
veterán
válasz
SteveBeard #1278 üzenetére
Értem én. A tagadást gondoltam a környezet függvényében már megoldod.
Például if [ ! -f "$png" ] ... -
Jester01
veterán
válasz
SteveBeard #1275 üzenetére
Tedd a fájlnevet egy változóba (pl. $png) aztán ellenőrizd, hogy létezik-e: if [ -f "$png" ]
A hét számának előállítása igen kreatív.
-
bambano
titán
válasz
SteveBeard #1275 üzenetére
az echo 1 | awk '{}' helyett awk 'BEGIN {..}' elegánsabb.
-
SteveBeard
senior tag
Ahogy mondtam korábban, hogy napi, heti, és havi bontásban készülnek el a képek.
Azt sikerült elérni, hogy csak hétfőn készítse el az előző heti képet.
Azt meg lehet oldani, ha már elkészítette a képet, akkor többször már csinálja meg?
A script ide vonatkozó része:
if [ -z $1 ] && [ $WEEKDAY -eq 1 ]
then
WEEK=`echo 1 | awk '{print strftime("%Y-%W", systime()-86400)}'`
STATDATE=week_$WEEK
START=7d
CreateGraph "/opt/www_traff/rrd/${MAC_}_${STATDATE}.png" $START /opt/www_traff/rrd/${MAC_}.rrd "IP: $IP MAC: $MAC_ Host: $NAME $SUMMB MB"
fi -
bambano
titán
válasz
SteveBeard #1269 üzenetére
azt ugye tudod, hogy a routeredben a flash nagyon nem fogja csípni, ha 5 percenként teleírod grafikákkal? ezt külsőleg csatlakoztatott pendrive-on érdemes.
-
dabadab
titán
válasz
szoke12 #1270 üzenetére
Az ==, amit hasznalsz, az igazan stringek osszehasonlitasara van, neked meg szamokat kell osszehasonlitanod, arra mas operatorok vannak, az egyenloseg:
if [ $NUM -eq 10 ] ; then
A komplett sor: -lt, -le, -eq, -ge, -gt (kisebb, kisebbegyenlo, egyenlo, nagyobbegyenlo, nagyobb)
vagyis ami neked kell az az, hogy
if [ $NUM -le 10 ] ; then -
szoke12
őstag
Sziasztok!
Ma sokat olvastam a témában, egy dolgot viszont nem találtam.
if [ "$SNUM" == "10" ] ;Hogy tudom azt megadni, hogy ne csak akkor legyen igaz, ha az értéke 10, hanem akkor is, ha 9, 8, 7, 6... stb?
-
SteveBeard
senior tag
-
Jester01
veterán
-
bambano
titán
válasz
dabadab #1264 üzenetére
egy 1043nd-ben futó openwrt van most kéznél, amit nézhetek. 32 M ram, 266MHz proc. De ez a risc proc nem az a cisc proc, mint egy 40-50MHz-es 486DX volt anno, ez a több, mint százmillió soros kernel nem az a kernel, ami volt anno, elég csak a tar.gz-k méretét megnézni, a libc sem ugyanakkora, stb.
lehet, hogy összességében egy régi gép hatékonyabb volt, mint ez a router.
-
dabadab
titán
válasz
bambano #1258 üzenetére
"majd feladod ezt az elvedet, ha pár mega ramos, márszáz MHz-es procival szerelt routerbe pakolod a programot."
Annak idejen, amikor shellt programozni tanultam, baromira orultem volna egy olyan eros, sok memorival szerelt gepnek, mint egy mai router
(helyette volt 40 MHz meg 4 MB)
Az az egy szal cat nem oszt, nem szoroz, egy nagyon gyenge rendszeren meg ugyis busyboxot hasznal az ember, ott meg plane nem. -
bambano
titán
válasz
SteveBeard #1260 üzenetére
még annyit lehetne optimalizálni az egészen, hogy amikor az iptables logját mented az ideiglenes fájlba, akkor csinálsz egy kis előfeldolgozást, hogy a későbbi adatbányászathoz egyszerűbb formátumban teszed le az adatokat.
-
bambano
titán
válasz
SteveBeard #1260 üzenetére
két awk-nak egymás után, amik csak kiírnak, nincs értelme.
akkor már elég lenne a két awk helyett egy awk '{print $2}'
ezt még lehetne azzal rövidíteni, hogyha print helyett printf-et használsz, és nem írsz bele soremelést a végére, akkor nem írja ki, tehát a tr-t is le lehet hagyni a végéről.
az egész kb. ennyi lenne:IN=$(grep $IP /opt/test/sum/traffic.tmp | awk '{printf "%d",$2 }' )"
viszont ez a két irányt össze fogja keverni, a bemeneti és a kimeneti irányra is ki fogja írni a forgalmat. tehát kell még bele egy feltétel.
-
SteveBeard
senior tag
válasz
bambano #1255 üzenetére
Természetesen igen, érzem, ezért is írtam, amit írtam, hogy kérdezhetek-e.
Az openwrt wiki-n találtam, az egészet, jól hangzott, kipróbáltam, nem működött és addig-addig alakítgattam,a míg sikerült belőle grafikonokat gyártani.
Ezen a részen nem alakítottam semmit ez teljesen ugyanaz, mint a leírásban
És van még benne több ilyen is
Most, hogy már működik és felvilágosítottatok arról, hogy egyébként úgy sz.r, ahogy van gondoltam valahogy egy kicsit rendbe kéne rakni és én is tanulok belőle valamit... talán, hisz' tele csuporba már nehéz tölteni -
bambano
titán
válasz
SteveBeard #1254 üzenetére
"IN=$(cat /opt/test/sum/traffic.tmp | awk '{print $2 " " $7}' | grep $IP | awk '{print $1}' | tr -d '\n' )"
bajok:
- ha a grep $IP-t másodiknak rakod, akkor az első awknak fel kell dolgoznia minden sort, amiben nincs benne az ip, azt is, feleslegesen. tehát ha tudod szűrni, csökkenteni azt az adatmennyiséget, amit az awknak betolsz, azt jobb minél előbb, mert az awk egyébként interpreter nyelv, tehát lassú
- tehát nem cat /opt...| awk | grep $IP, hanem grep $IP /opt/test/sum/traffic.tmp
- ebben az esetben szerintem a két awk összevonható egybe
- például így: awk '{ if ($7==$IP) print $2' }" szintaxist most nem teszteltem terminálban.
- ha a végén úgyis letörlöd a soremelést, akkor egyszerűbb az awk-kal ki sem iratni, megint megspóroltál egy forkot.elvileg az awk-nak lehet kívülről változónak értéket adni, valahogy így a doksi szerint: awk -v IP=192...
és akkor erre tudsz a programon belül hivatkozni. -
bambano
titán
válasz
SteveBeard #1254 üzenetére
azt ugye érzed, hogyha azt írod, hogy:
cat filenev | awk
ahelyett, hogy
awk '{...}' filenev
akkor itten téged virtuálisan keresztre feszítenek? -
SteveBeard
senior tag
válasz
Jester01 #1253 üzenetére
Köszönöm!
Eu a parancs írja egy fájlba a forgalmat
iptables -L traffic -vnxZ -t filter > /opt/test/sum/traffic.tmpami így néz ki:
Chain traffic (1 references)
pkts bytes target prot opt in out source destination
15 3046 all -- * * 192.168.1.150 0.0.0.0/0
16 1238 all -- * * 0.0.0.0/0 192.168.1.150
184 23170 all -- * * 192.168.1.135 0.0.0.0/0
133 16470 all -- * * 0.0.0.0/0 192.168.1.135
0 0 all -- * * 192.168.1.190 0.0.0.0/0
0 0 all -- * * 0.0.0.0/0 192.168.1.190
0 0 all -- * * 192.168.10.5 0.0.0.0/0
0 0 all -- * * 0.0.0.0/0 192.168.10.5
0 0 all -- * * 192.168.10.152 0.0.0.0/0ez folytatódik hosszú sorokon keresztül, majd így fejeződik be:
0 0 all -- * * 0.0.0.0/0 192.168.2.150
0 0 all -- * * 192.168.1.10 0.0.0.0/0
0 0 all -- * * 0.0.0.0/0 192.168.1.10
5962 4181681 all -- * * 192.168.1.100 0.0.0.0/0
3893 419831 all -- * * 0.0.0.0/0 192.168.1.100
0 0 all -- * * 192.168.10.106 0.0.0.0/0
0 0 all -- * * 0.0.0.0/0 192.168.10.106
0 0 all -- * * 192.168.10.188 0.0.0.0/0
0 0 all -- * * 0.0.0.0/0 192.168.10.188
0 0 all -- * * 192.168.10.100 0.0.0.0/0
0 0 all -- * * 0.0.0.0/0 192.168.10.100
0 0 all -- * * 192.168.10.115 0.0.0.0/0
0 0 all -- * * 0.0.0.0/0 192.168.10.115
Zeroing chain `traffic'Azt nem tudom, hogy miért kerülnek bele a 192.168.10.XXX ip címek, de most ez talán lényegtelen. A modem címe egyébként a 192.168.10.1
Majd ebből a bejövő forgalmat ezzel szedi ki.
IN=$(cat /opt/test/sum/traffic.tmp | awk '{print $2 " " $7}' | grep $IP | awk '{print $1}' | tr -d '\n' )
IN=$(($IN+0))A kimenő forgalom ugyanez, csak a $7 helyett $8 szerepel
-
Jester01
veterán
válasz
SteveBeard #1251 üzenetére
Persze, bármit megjavítunk, hadd pörögjön a topik
-
SteveBeard
senior tag
válasz
Jester01 #1250 üzenetére
Szia!
Ez is rendben van, tökéletesen megy nálam is.
A söröket hova küldjem?
Gondolom ezt lenne célszerű használni.
De alapból a host parncsot nem ismerte, mert arra a következő választ kaptam.
-ash: host: not foundJobb ötlet híján telepítettem ezt
bind-host 9.9.1-P3-1 bind simple DNS client
és innentől kezdve ez is ment.Mondtad, hogy láttad az eredeti scriptet és elszörnyülködtél rajta. Ettől függetlenül lehet még azzal kapcsolatban kérdésem, vagy ne hergeljelek vele tovább?
Mert van benne még egy ilyen grep | awk | grep sor , (kettő, de szinte ugyanaz) amit ha rendbe lehetne hozni nem is zaklatnálak tovább.
Ráadásul úgy vettem észre, hogy néha ki is akasztja a scriptet.
Ami azt jelenti, hogy váratlanul leáll syntax error hibával, de kétszer- háromszor újraindítva lefut rendesen.Ez az egész egy routeren fut. Van benne egy csomó monitorozó lehetőség, de olyan nagy az erőforrásigénye azoknak, hogy nem érdemes használni. Az rrdtool-t, ami gyűjti az adatokat és rajzolja a grafikonokat, meg észre sem venni, hogy megy a háttérben.
-
Jester01
veterán
válasz
bambano #1249 üzenetére
Abban alapból működnek a bash stringmanipulációs cuccai hacsak valaki ki nem kapcsolta:
compile time option ("ASH_BASH_COMPAT", active per default) for several bash compatibility features: option pipefail, substring and replacement parameter expansion
name=$(host $IP)
name=${name##* }
name=${name%.lan.}Ezzel próbáltam:
BusyBox v1.17.1 (Debian 1:1.17.1-8) built-in shell (ash) -
bambano
titán
válasz
SteveBeard #1245 üzenetére
cut -d\ -f 5 | cut -d. -f 1
ez gyorsabb és csak két fork ugyanarra a programra. -
SteveBeard
senior tag
válasz
Jester01 #1244 üzenetére
Sziasztok!
Mind a két megoldás jó lett, mivel nálam mindig van, legalábbis eddig mindig volt .lan a végén.
Köszönöm!
Közben már a host parancs is működik..root@OpenWrt:~# host 192.168.1.100
100.1.168.192.in-addr.arpa domain name pointer Pistii-LAPTOP.lan.
root@OpenWrt:~# host 192.168.1.100 | awk '{print $5}'
Pistii-LAPTOP.lan.
root@OpenWrt:~# host 192.168.1.100 | awk '{print $5}' | sed -e 's/\.lan.//'
Pistii-LAPTOP -
-
Jester01
veterán
válasz
SteveBeard #1238 üzenetére
Feltéve, hogy az első Name: kezdetű sor után következik amit ki akarunk szedni akkor például:
name=$(nslookup $IP | awk '/^Name:/ { getline; print $4; exit }')
name=${name%.lan}(bash esetén legalábbis)
-
SteveBeard
senior tag
válasz
bambano #1223 üzenetére
Köszönöm a tanácsot,
tényleg elrontottam, javítottam.
Ez sed -e 's/\.lan//' működik, amíg nincs jobb, ez marad.
Ezt is köszönöm!
Mivel saját magamnak készül, és nem azt szeretném, hogy a leckét valaki más csinálja meg helyettem, ezért csak én nevetek majd magamon és nektek szerzek néhányvagy
percet. Kinek kinek vérmérséklete szerint
-
bambano
titán
válasz
Jester01 #1231 üzenetére
nyilván egy lehetetlen küldetés beírni nálad, hogy apt-get install dnsutils
# nslookup 217.20.130.97
Server: 127.0.0.1
Address: 127.0.0.1#53Non-authoritative answer:
97.130.20.217.in-addr.arpa name = sportgeza.hu.Authoritative answers can be found from:
130.20.217.in-addr.arpa nameserver = ns.index.hu.
130.20.217.in-addr.arpa nameserver = fns.index.hu.
130.20.217.in-addr.arpa nameserver = ns.inventra.hu.
fns.index.hu internet address = 217.20.130.3 -
Jester01
veterán
válasz
SteveBeard #1232 üzenetére
De én az nslookup kimenetét szeretném, nem azt ami már átment a csövön
Szép az a forrás is -
SteveBeard
senior tag
válasz
Jester01 #1227 üzenetére
root@OpenWrt:~# nslookup 192.168.1.100 127.0.0.1 | grep "Name:" | awk '{print $2
}'
192.168.1.100
root@OpenWrt:~# nslookup 192.168.1.100 | grep Address | grep -v localhost | awk
{'print $4}'
Pistii-LAPTOP.lan
root@OpenWrt:~#Az első az eredeti, arra az ip címet dobta vissza, a második, amit én hoztam össze, azt sem egyedül.
Utánaolvasok és megpróbálom szabályosan megcsinálni, de csak egy éve foglalkozom "komolyabban" Linuxszal és 50 évesen nem egyszerű...Tényleg bocs a láma kérdésekért, ráadásul nem is otthon vagyok, távoli eléréssel próbálkozom...
-
bambano
titán
válasz
SteveBeard #1226 üzenetére
sed -e 's/\.lan//'
-
Jester01
veterán
válasz
SteveBeard #1226 üzenetére
Semmi probléma, de még mindig nem muttattad meg mi jön ki az nslookup-ból
-
SteveBeard
senior tag
válasz
Jester01 #1222 üzenetére
Bocsánat én tényleg nem értek hozzá, de amit szeretnék azt készen nem találtam meg a neten, ezért megpróbálom megoldani magam. Mindent a neten szedtem össze különböző helyekről nem én találom ki.Ez is így szerepelt
Egyébként grafikonok készülnek MAC vagy IP alapján szűrve a hálózati forgalomról és a grafikonok felső sorába íratnám ki a gépek nevét. A dolog működik, csak felesleges nekem a .lan
És még egyszer bocs...
-
bambano
titán
válasz
SteveBeard #1221 üzenetére
nem ártana helyes sorrendbe rakni az aposztrófokat és a kapcsos zárójeleket.
a kapcsos zárójelek közé írt szöveg az awk paramétere, amit a shelltől védeni kell, tehát a helyes sorrend
aposztróf-kapcsos zárójel-awk program-kapcsos zárójel-aposztróf. -
Jester01
veterán
válasz
SteveBeard #1221 üzenetére
Ezt már megint nem értem, biztos velem van a baj.
Nem tudnád megmutatni mit köp ki az nslookup amit át akarsz alakítani?Egyébként a grep | grep | awk -ért kapsz egy jó nagy pofont
MOD: egyébként van host program is, az nem jobb?
-
SteveBeard
senior tag
Sziasztok!
Egy scriptben így íratom ki a csatlakoztatott gép(ek) nevét.
nslookup $IP | grep Address | grep -v localhost | awk {'print $4}'Ezzel semmi gond, de a gép neve mellé még hozzáfűzi a .lan -t is. a lan előtt van pont is
Ezt ki lehetne valahogy szedni? -
szoke12
őstag
Helló!
Két fájl összehasonlításakor szeretném kiíratni a különbségüket, ami tudom, hogy egy bizonyos sor. Hogy tudom megoldani? -
szoke12
őstag
Sziasztok!
Linux shell scriptet próbálnék írni.
A script adb-n keresztül ad utasítást a telefonnak.
Mi lehet a baj a következő résszel?./adblinux -s $SERIALNO shell 'flash_image recovery /data/local/tmp/recovery.img' &
sleep 10
echo -n "done"Egyszerűen nem akarja kiírni a "done"-t.
Vagy meg lehetne oldani, hogy valahogy kilőjem a futó programot (a "flash_image"-t) olyan 10 mp után?
előre is köszi!(a script részt most fejből írtam, de emlékeim szerint pontosan ez volt)
-
bambano
titán
lehet, nem ide kellene, de 11111
ti hogy csinálnátok?van egy pgsql adatbázistábla, abba elvileg sorban kerülnek be rekordok. van egy id mező, ami bigserial és hagyom a default értéket. vagyis elvileg teljesen sorfolytonos az id mező. de néha mégsem. hogy miért, azt most hagyjuk. a kérdés az, hogy hogy találsz meg egész számokat, amiknek szerepelniük kellene az id mezőben, de mégse?
Jester01?
-
bambano
titán
válasz
SteveBeard #1211 üzenetére
./scriptnev 2>error.log
-
bambano
titán
válasz
SteveBeard #1209 üzenetére
ha írsz egy set -x -et az elejére, látni fogod a debug infókat.
-
SteveBeard
senior tag
Sziasztok!
A következőben kérném a segítségeteket!
Nem igazán értek a scriptek készítéséhez, de sikerült összeraknom különböző forrásokból egy működő scriptet. Cronból időzítettem, a mai napig jól is működött. Ma mikor hazaértem látom, hogy pár órája nem működik. Megpróbáltam futtatni, de ezzel a hibaüzenettel leáll: line 114: arithmetic syntax errorSemmit nem módosítottam, itthon sem voltam.
a 114. sorban egy done van és nem igazán értem miért nem megy az, ami eddig teljesen jól működött.
A scriptet folyamatosan javítgatom, mert menet közben, ahogy olvasom a leírásokat jövök rá hibákra. Tudom közel sem tökéletes, de azért eddig működött.
A script idevonatkozó része:
for MAC in $(cat /proc/net/arp | grep -v address | awk '{print $4}') ; do
MAC_=$(echo $MAC | sed 's/:/-/g')
IP=$(cat /proc/net/arp | grep $MAC | awk '{print $1}')
# This assumes that a local dns server (like dnsmasq) is running
NAME=$(nslookup $IP | grep Address | grep -v localhost | awk {'print $4}')
# echo "mac: $MAC ip: $IP_ name: $NAME"
UP=$(cat /opt/www_traff/traffic.tmp | awk '{print $2 " " $7}' | grep $IP | awk '{print $1}' | tr -d '\n' )
ALL_UP=`ifconfig eth0.2 | grep bytes | awk -F ":" '{print $3}' | awk '{print $1}'`
DOWN=$(cat /opt/www_traff/traffic.tmp | awk '{print $2 " " $8}' | grep $IP | awk '{print $1}' | tr -d '\n' )
ALL_DOWN=`ifconfig eth0.2 | grep bytes | awk -F ":" '{print $2}' | awk '{print $1}'`
if [ ! -e /opt/www_traff/rrd/$NAME.sum.traf ]; then
echo 0 > /opt/www_traff/rrd/$NAME.sum.traf
fi
PREVSUM=`cat /opt/www_traff/rrd/$NAME.sum.traf`
NOWSUM=$(($UP+$DOWN))
SUM=$(($PREVSUM+$NOWSUM))
echo $SUM >/opt/www_traff/rrd/$NAME.sum.traf
COUNTIP=$(iptables -vnL traffic | grep $IP | wc -l | awk '{print $1}')
if [ "$COUNTIP" -eq 0 ] ; then
iptables -A traffic -s $IP
iptables -A traffic -d $IP
fi
# create db if not exists
if [ ! -e /opt/www_traff/rrd/${MAC_}.rrd ] ; then
# echo creating /opt/www_traff/rrd/${MAC_}.rrd
rrdtool create /opt/www_traff/rrd/${MAC_}.rrd -s 300 \
DS:up:ABSOLUTE:600:0:U \
DS:down:ABSOLUTE:600:0:U \
RRA:AVERAGE:0.5:1:576 \
RRA:AVERAGE:0.5:3:672 \
RRA:AVERAGE:0.5:12:732
fi
#echo "up: $UP down: $DOWN"
ED=`date +%s`
STATDATE=`date +%Y-%m-%d`
START=`expr $ED % 86400`
logger -t traff_graph "Statdate:$STATDATE Start:$START"
rrdtool update /opt/www_traff/rrd/${MAC_}.rrd N:$UP:$DOWN
CreateGraph "/opt/www_traff/rrd/${MAC_}_${STATDATE}.png" $START /opt/www_traff/rrd/${MAC_}.rrd "IP: $IP MAC: $MAC_ Host: $NAME"
INDEX=$INDEX"<img src='${MAC_}_${STATDATE}.png'><br>"
SUMMB=$(($SUM/1048576))
SUMTRAFTAG=$SUMTRAFTAG"<a> $NAME: $SUMMB MB</a><br>"
WEEK=`echo 1 | awk '{print strftime("%Y-%W", systime()-86400)}'`
STATDATE=week_$WEEK
START=7d
CreateGraph "/opt/www_traff/rrd/${MAC_}_${STATDATE}.png" $START /opt/www_traff/rrd/${MAC_}.rrd "IP: $IP MAC: $MAC_ Host: $NAME"
INDEX=$INDEX"<img src='${MAC_}_${STATDATE}.png'><br>"
MONTH=`echo 1 | awk '{print strftime("%Y-%m", systime()-86400)}'`
STATDATE=month_$MONTH
START=`echo 1 | awk '{print strftime("%d", systime()-86400)}'`d
CreateGraph "/opt/www_traff/rrd/${MAC_}_${STATDATE}.png" $START /opt/www_traff/rrd/${MAC_}.rrd "IP: $IP MAC: $MAC_ Host: $NAME"
INDEX=$INDEX"<img src='${MAC_}_${STATDATE}.png'><br>"
doneElőre is köszi a segítséget!
-
F34R
nagyúr
Hi
megint egy lama kerdes tudok olyat csinalni hogy egy adott mappa almappainak nevet egy txt-be listazzam ki ?
Új hozzászólás Aktív témák
- Elstartolt az AMD munkaállomásokhoz szánt platformja
- Autós topik
- Milyen légkondit a lakásba?
- Fejhallgató erősítő és DAC topik
- EA Sports WRC '23
- Kettő együtt: Radeon RX 9070 és 9070 XT tesztje
- E-roller topik
- The First Berserker: Khazan
- Xbox Series X|S
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- További aktív témák...
- Apple iPhone 14 Pro Max 128GB, Kártyafüggetlen, 1 Év Garanciával
- Lejárt a gyártói garancia? Mi tovább támogatjuk az IT infrádat!
- Realme 7i 64GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! Apple MacBook Pro 14 M4 16GB RAM 512GB SSD garanciával hibátlan működéssel
- BESZÁMÍTÁS! MSI X470 R7 5800X 32GB DDR4 512GB SSD ROG STRIX RTX 2080 Super 8GB Rampage SHIVA 650W
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged