- Videó stream letöltése
- Álláskeresés, interjú, önéletrajz
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- SkyShowtime
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Erőszakos tartalomba fut a gyerek, ha internetezik
- Aliexpress tapasztalatok
- YouTube
- Facebook és Messenger
Új hozzászólás Aktív témák
-
-
F34R
nagyúr
Hi
megint egy lama kerdes tudok olyat csinalni hogy egy adott mappa almappainak nevet egy txt-be listazzam ki ?
-
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!
[ Szerkesztve ]
Steve
-
válasz SteveBeard #1209 üzenetére
ha írsz egy set -x -et az elejére, látni fogod a debug infókat.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
válasz SteveBeard #1211 üzenetére
./scriptnev 2>error.log
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
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?
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
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)
"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
-
-
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?"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
-
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?Steve
-
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?
[ Szerkesztve ]
Jester
-
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.Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
-
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...
Steve
-
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
Jester
-
válasz SteveBeard #1226 üzenetére
sed -e 's/\.lan//'
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
-
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...
[ Szerkesztve ]
Steve
-
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 isJester
-
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.3Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
SteveBeard
senior tag
-
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ány vagy percet. Kinek kinek vérmérséklete szerintSteve
-
szoke12
őstag
válasz Jester01 #1220 üzenetére
Köszi!
OK, lefut, meg sikerült is megoldani vele, de lenne egy olyan gondom, hogy 2 sort kreál, miközben, csak egy különbözik. az első sor csak ennyi: 4a5.
A második sor pedig az, aminek kell lennie.
Hogy töröljem ki az első sort?"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
-
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)
[ Szerkesztve ]
Jester
-
-
válasz Jester01 #1242 üzenetére
alapértelmezésben nincs az openwrt-ben bash, elvileg le lehet hozzá tölteni és telepíteni, de annyi plusz helyet foglal, hogy ezt nagyon kevesen teszik meg.
majd megnézem, hogy melyik awk van az openwrt-ben és hogy az tud-e sub(string,string) függvényt.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
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[ Szerkesztve ]
Steve
-
válasz SteveBeard #1245 üzenetére
cut -d\ -f 5 | cut -d. -f 1
ez gyorsabb és csak két fork ugyanarra a programra.Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
-
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)[ Szerkesztve ]
Jester