- Á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)
- Videó stream letöltése
- 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
-
válasz anorche1 #2299 üzenetére
"mert a terminalablakban nem lehet az elejére tekerni.": miért ne lehetne? shift+page up/page down. a terminálnak állítható a history mérete.
lapozó van minden unixon, én a |more-t javaslom, mert az van mindenhol, less meg nem biztos.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
Headless
őstag
Sziasztok!
Egy curl/wget kérdésem lenne.
Bővítés miatt curl-al is kompatibilissé szeretném tenni a scriptemet.
A lényeg egy login form amivel post requestel küldök információt majd egyátirányítás után megkapom a sütit az oldaltól egy fájlba.
A gond ott jön hogy curl esetében csak az átirányítás előtti cookie-t menti el, míg wget-nél rendesen az átirányítás után beállított cookie-t is.
Ez azt eredményezi, hogy első betöltéskor amikor elküldöm a requestet átirányít beléptet, viszont a cookie-t nem menti el (a headerben látom a set-cookie paramétereket amik hiányoznak), vagyis a következő oldalbetöltés már nyilván nem megy.
WGET-el nincs problémám eddig is tökéletesen működött, most is megy.
a próbált parancs:
curl -L -k -X POST -d "user=data1&pwd=data2" -b /tmp/cookie.txt "$URL"
WGET megfelelő
wget-ssl -q --no-check-certificate -O /dev/null --keep-session-cookies --save-cookies /tmp/cookie.txt --post-data="$post_data" "$URL"
Remélem nem írtam el semmit
de ebből jön ki.
case "$binary" in
"curl")
q="-s"
cert="-kL"
post="-X POST -d "
h="-H "
ConE=""
std=""
cload="-c "
csave="-b "
out="-o "
;;
"wget-ssl")
q="-q"
cert="--no-check-certificate"
post="--post-data="
h="--header="
ConE="--content-on-error"
std="-O -"
cload="--load-cookies "
csave="--keep-session-cookies --save-cookies "
out="-O "
;;
esac
$binary $cert $out/dev/null $q $csave$cookie $post"$login_data" "$login_url"LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/
-
Fecogame
veterán
Logikailag hogyan lehet felépíteni egy olyan parancsot, ami rekurzívan az összes almappában keres, és amelyikben csak egy fájl létezik ( aminek kiterjesztése .srt ), azok útvonalait listázza ki?
Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak
-
-
-
Fecogame
veterán
válasz Fecogame #2306 üzenetére
Megoldottam.
Először kilistázom a kisméretű mappákat egy fájlba.
Majd kilistázom azokat a mappákat, amik feliratokat tartalmaznak.Majd a kettőt összevetem comm paranccsal és a végén kiíratom a végeredményt
Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak
-
Fecogame
veterán
Ma nekiültem optimalizálni a scriptjeimet sebesség szempontjából.
Az alábbiakat alkalmaztam:
cut gyorsabb, mint az awk vagy a sed
cat file | grep kulcsszo
helyettgrep "kulcsszo" /file/eleresi/ut
#!/bin/bash
helyett#!/bin/sh
Az eredmény:
Az egy scriptemnél 2,9s helyett 1,2s
A másiknál pedig 4,6s helyett 1,5s lett a lefutási idő
Úgy érzem megérte
Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak
-
válasz Fecogame #2312 üzenetére
jaja, most nyertél 3 másodpercet azon, hogy a jól specifikált bash helyett a lokális rendszer saját shelljét használod, amiről nem tudod, hogy micsoda, így majd belefuthatsz olyan problémákba, amit pár nap alatt ki is tudsz bogozni
"cut gyorsabb, mint az awk vagy a sed": de legalább nem kompatibilis vele... az awk-val is az a baj, hogy melyik gépen mi van felrakva awk néven... gawk? mawk? van egy pár lehetőség.
"cat file | grep kulcsszo": a forkbombáért régebben is szóltunk
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
-
Fecogame
veterán
válasz bambano #2315 üzenetére
Valóban Ezért hazsnáltam csak az első oszlop szűrésére.
Más:
Csináltam egy kis tesztet:
cat file | grep "string" | wc -l
0,054sgrep "string" file | wc -l
0,044sgrep -c "string" file
0.020sgrep -c 'string' file
0.018sLassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak
-
dabadab
titán
válasz Fecogame #2316 üzenetére
Ebből leginkább az látszik, hogy kicsi a file és egyszerű a regexp
Ciklusmagon belül tényleg érdemes vigyázni arra, hogy az ember minél kevesebb processt indítson, mert ott számít, ha ezerszer meg kell csinálni, de egyébként (ahogy a számok is mutatják) tökmindegy.
DRM is theft
-
-
dabadab
titán
válasz Fecogame #2318 üzenetére
"Az első és az utolsó command között 300%-os különbség van, az azért nem mindegy."
...egészen addig, amíg rá nem nézel, hogy ez 0,036 másodpercet jelent, ami kifejezetten a "mindegy" kategóriába tartozik
"Gyanítom, hogy nagyobb fájlnál is hasonló a sebesség különbség"
Igen, ott is 0,036 másodperc Ami drága, az a processz indítás és a file nagyságától függetlenül mindenképpen két plusz process van, amik ugyanannyi idő alatt indulnak el. A pipe-on keresztüli kommunikáció valamennyi időbe tellik, de az se vészes, maga a grep sokkal időigényesebb.
DRM is theft
-
Fecogame
veterán
válasz dabadab #2319 üzenetére
Rendben, nézzük meg Most leteszteltem egy 4.4GB-os log fájllal.
cat file | grep "string" | wc -l
2m 3sgrep "string" file | wc -l
1m 24sgrep -c "string" file
1m 30sgrep -c 'string' file
1m 29sfgrep -c 'string' file
1m 13s[ Szerkesztve ]
Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak
-
CPT.Pirk
Jómunkásember
Összeszedtem minden tudásomat (ami nem sok van ) és tegnap írtam egy shell scriptet, ami a samba ilyen, elég bőséges logjaiból:
...
[2018/06/22 14:42:18.106095, 2] smbd/close.c:696(close_normal_file)
CsLev closed file fileserver/__MUNKAK/CSL/21_KM Mech/KM_ID/HELL/HP/KM MAM 2016.xlsx (numopen=6) NT_STATUS_OK
[2018/06/22 14:42:18.110089, 2] smbd/open.c:746(open_file)
CsLev opened file fileserver/__MUNKAK/CSL/21_KM Mech/KM_ID/HELL/HP/KM MAM 2017 egész év.xlsx read=No write=No (numopen=7)
[2018/06/22 14:42:18.114096, 2] smbd/close.c:696(close_normal_file)
CsLev closed file fileserver/__MUNKAK/CSL/21_KM Mech/KM_ID/HELL/HP/KM MAM 2017 egész év.xlsx (numopen=6) NT_STATUS_OK
...csinál ilyen, táblázatkezelőbe is betölthető fájlokat:
2018/06/22 14:42:17.770334 CsLev opened file fileserver/__MUNKAK/CSL/21_KM Mech/KM_ID/HELL/HP/KM MAM 2017 egész év.xlsx
2018/06/22 14:42:17.824866 CsLev opened file fileserver/__MUNKAK/CSL/21_KM Mech/KM_ID/HELL/HP/Palyazati_Felhivas-18.pdf
2018/06/22 14:42:17.870417 CsLev opened file fileserver/__MUNKAK/CSL/21_KM Mech/KM_ID/HELL/HP/IA_GAZD_99-1.pdfEzzel a csodával:
#!/bin/bash
files=/var/log/samba/*
tempfile=tmp.log
tempfile2=tmp2.log
fact=activity.log
grepcmd1='-B1'
grepcmd2='read=Yes|write=Yes'
grepcmd3='file'
for f in $files
do
if [[ $f = *"log."* ]]; then
#bizonyos fájlokat eleve nem nézünk meg
if [[ $f != *".gz"* ]] && [[ $f != *".nmbd"* ]] && [[ $f != *".smbd"* ]]; then
echo "Processing $f..."
egrep "$grepcmd1" "$grepcmd2" "$f" > $tempfile2 #kiszedjük a read vagy write soroka$
awk '!/--/' $tempfile2 > $tempfile #kiszedjük az egrep blokk határoló sorokat
sed 's/smbd.*e)//' $tempfile > $tempfile2 #a nem releváns szövegrészek törlése
sed 's/read.*)//' $tempfile2 > $tempfile
sed 's/, .* //' $tempfile > $tempfile2 #[ , rész törlése
sed 's/^.//' $tempfile2 > $tempfile #kezdő karakter eltávolítása
perl -ne 'print unless $seen{$_}++' $tempfile > $tempfile2 #duplikált sorok eltávol$
egrep "$grepcmd1" "$grepcmd3" "$tempfile2" > $tempfile #a maradékot újra leszűrjük
awk '!/--/' $tempfile > $tempfile2 #blokkhatár
paste -d ' ' - - < $tempfile2 > $tempfile #minden második (elsővel kezdve) sor végé$
cat $tempfile > ${f##*/}.txt #megfelelő névvel elmentjük a végleges szöveget
else
echo "Excludeing $f..."
fi
else
echo "Exludeing $f..."
fi
done
rm $tempfile
rm $tempfile2Amit csináltam, az kissé ronda. Oda-vissza írogat két tempfile-t, azokon dolgozom. Lehet, hogy lehetne ezeket memóriában csinálni, arra nem jöttem rá.
Így is lefut elég hamar a dolog, de biztos van szebb megoldás rá.[ Szerkesztve ]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
f_sanyee
senior tag
válasz CPT.Pirk #2321 üzenetére
Szia,
ezt egy awk vagy sed scripttel meg tudnad oldani. Ezt a konyvet ajanlom: sed & awk, 2nd Edition
-
válasz CPT.Pirk #2321 üzenetére
szóval a legfőbb gond, hogy így windowson programoznak.
a unixok legnagyobb előnye, hogy minden fájl, és karakteresen mindent lehet olvasni, írni.
ezért az első, amit javítani kellene, hogy nincs tempfile1 meg tempfile2, hanem egy menetben átmegy minden a parancsokon. ennek a unixos megoldás a csővezeték, pipeline.
tehát: az első parancs olvas egy fájlt, az összes többi nem, az utolsó pedig leteszi egy fájlba az eredményt:egrep ... logfile | sed .... | awk ... | sed >kimenet
a második, hogy a sednek több programot is meg lehet adni egyszerre (a sed programnak hívja a s/... kezdetű paraméterét)
tehát nem sed program1 | sed program2 hanem
sed program1 program2 program3a harmadik, hogy az awk és a sed is tudja, amit az egrep. érdemes lenne minél kevesebb programot használni, mert annál bonyolultabb minden.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
CPT.Pirk
Jómunkásember
Igazából volt mindössze fél órám, hogy gyorsan csináljak valamit különösebb bash előképzettség nélkül, ez lett a végeredménye.
Holnap ránézek és megpróbálom megfaragni kicsit.
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
CPT.Pirk
Jómunkásember
válasz CPT.Pirk #2321 üzenetére
Ez a pipe dolog tényleg hasznos.
Most itt tartok:
for f in $files
do
if [[ $f = *"log."* ]]; then
#bizonyos fájlokat eleve nem nézünk meg
if [[ $f != *".gz"* ]] && [[ $f != *".nmbd"* ]] && [[ $f != *".smbd"* ]]; then
echo "Processing $f..."
egrep "$grepcmd1" "$grepcmd2" "$f" | awk '!/--/' | \
sed -e 's/smbd.*e)//' -e 's/read.*)//' -e 's/, .* //' -e 's/, .* //' -e 's/^.//' | \
perl -ne 'print unless $seen{$_}++' | \
egrep "$grepcmd1" "$grepcmd3" | \
awk '!/--/' > $tempfile
paste -d ' ' - - < $tempfile > $tempfile2 #minden második (elsővel kezdve) sor végéről törli az újsor karaktert, hogy az idő a névvel egy sorba ker$
cat $tempfile2 > ${f##*/}.txt
else
echo "Excludeing $f..."
fi
else
echo "Exludeing $f..."
fi
done
rm $tempfile
rm $tempfile2Jelentősen gyorsabb, de arra még nem jöttem rá, hogy a paste-es sort hogyan kellene beépíteni a pipe folyamatba.
Ennek mintájára próbáltam:
kill $(ps aux | grep 'ython csp_build.py' | awk '{print $2}')
ahol a $-os részre ment az, amit összepipeoltam, de valami nem sikerült és megállt a szkript.Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
válasz CPT.Pirk #2327 üzenetére
javaslom az mktemp manualjának olvasgatását
következő lépésként javasolt, hogy specifikus awk-ot használj, mert az awk-k tapasztalat szerint nem egyformák.ha így írtad a paste-t, akkor szerintem az előtte levő awk-kal és az utána levő cat-tal is össze lehet vonni:
awk ... | paste -d ' ' - - >${...}.txtannak nem látom értelmét, hogy a paste-vel kitolod egy temfile-ba, majd azt simán átmásolod a véglegesbe. akkor már mehet rögtön a véglegesbe.
szerk: ha olyan problémád van, hogy a paste-nél megáll a szkript, az egy olyan eset, ami máskor is előfordulhat. más esetekben lehet olyan gond, hogy az előző programnak nincs kimenete, ezért a következő bemenet megakad. ilyenkor érdemes közé tenni egy cat - /dev/null-t.
tehát azt írni, hogy:
awk | cat - /dev/null | paste -d ' ' - - >${...}.txt
de ez nem biztos, hogy erre a konkrét esetre is kell, most nem fogom a konzolon kipróbálni
szerk2: rendszergazdaként futtatott szkriptekben az rm $tempfile annyira nem frankó, csak ha megnézted, hogy pontosan mi is az a file
[ Szerkesztve ]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
addikt
Tavoli hoston szeretnek scriptet futtatni. A script utolso 2 sora "race condition"-szeruen fut es nem szepen, egymas utan:
...
python -m SimpleHTTPServer 1985 &
sudo service service-neve restartFontos lenne, hogy a service-neve kesobb induljon, mint a python webszerver, mert a service a webszerverrol probal fajlokat letolteni, mikor elindul.
Barmit csinalok, a service elobb restardolodik, mint hogy a python server elinduljon.
Ha sleep-et rakok a ketto koze, akkor eloszor sleep-el, utana restartolja a service-t es csak utana jut el a python-os sorhoz.Probaltam egybol futtatni a local scriptet:
ssh -oStrictHostKeyChecking=no -i key user@host 'bash -s' < script.sh
es igy is, eloszor felescepezni, majd onnan futtatni:scp -oStrictHostKeyChecking=no -i key script.sh user@host:~
ssh -oStrictHostKeyChecking=no -i key user@host "/home/user/script.sh"Ha a remote hoston "bessh-zva" kezzel inditom el a scriptet, akkor mukodik, mert eppen egymas utan indul a ketto, de igy is rossz sorrendben:
Restarting service-neve (via systemctl): Serving HTTP on 0.0.0.0 port 1985 ...
[ OK ]
... majd utana latszik, hogy jon a request a python serverhez.Kozben azt talaltam, hogy nohup-pal kellene inditani. Azt meg nem tudom, hogy az egesz scriptet vagy csak a python sort, mert nohupot meg nem hasznaltam. Ezt mar csak holnap fogom kiprobalni.
Ha barkinek van konkret otlete, akkor ne tartsa magaban. -
válasz 0xmilan #2329 üzenetére
a nohup arra való, hogy elkapja a hup szignált és lenyeli.
magyarul ha nohuppal indítasz el bármit, akkor azt nem tudja a shell kilőni, mikor a shellből kilépsz, tehát háttérben fog futni a folyamat.a wait erre nem jó neked, amit akarsz? mert egyébként nagyon zagyva, hogy pontosan mit is szeretnél...
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
dabadab
titán
válasz 0xmilan #2329 üzenetére
Ha jól látom, akkor pythonnal, kézzel akarsz indítani egy service-t, amin egy másik rendszerszervíz dependel.
A legegyszerűbb és legkorrektebb megoldás az lenne, hogy akkor a pythonos webservert is berakod rendes szervíznek, itt van hozzá egy egyszerű guide: [link]. Ha szépen akarod megcsinálni, akkor a service-neve-nel beállítod azt is, hogy a pythonos szervízre dependeljen és akkor az előbbi magától elindítja az utóbbit is, ha az még nem fut.[ Szerkesztve ]
DRM is theft
-
addikt
Utolag atgondolva valoszinuleg az a problema, hogy a 'SimpleHTTPServer' egybol meghalt, miutan bezarult az ssh kapcsolat / terminal session. A service ettol fuggetlenul ujraindult, ezert ugy tunt mintha az elobb futott volna le, mint a python-os http server inditasa.
nohup python -m SimpleHTTPServer 1985 &>/dev/null &
remelhetoleg meg fogja oldani.@bambano A wait ide nem jo, mert nem a SimpleHTTPServer process vegere varok, hanem a hatterbe szeretnem kuldeni.
@dabadab Nincs dependencia a webserver es a service-neve kozott. Utobbi akkor is elindul es mukodik, ha az 1985-on nem listenel semmi. Viszont ha fut ott webserver, akkor leker adott fileokat.
A webservernek eleg csak par percig futnia, amig a service-neve hasznalja, utana ki lehet loni kezzel vagy automatikusan.[ Szerkesztve ]
-
addikt
A & a hatterbe rakja, de ettol meg a process a terminal-hoz van kotve. Amint meghal a terminal (bezarul az SSH kapcsolat), megoli a gyerek process-t is, hogy szegeny ne maradjon arva.
Ezert kell a nohup, ami szeparalja a process-t a terminaltol (ne tudja megolni a gyereket, mielott meghal).
Ez az stdout-ot es az stderr-t is nohup.out-ba irna, de mivel ezek nem erdekelnek - csak az kell hogy fusson a webserver -, ezert mindkettot a devnullba iranyitom.Itt az top valasz nagyon jol osszefoglalja.
A sleep itt teljesen irrelevans, az csak az n+1. probalkozasom volt, mikor mar nem tudtam mit csinaljak.
-
Geripapa
aktív tag
üdv.
van egy könyvtáram amibe van 303 könyvtár sorszámozva. (001,002,003,...,302,303)
mindegyik könyvtárban van html file (a neve megegyezik a könyvtár nevével: 303.html)Ebben a html file-ben a <title> között van egy szöveg.
Ezt a szöveget szeretném betenni a könyvtár nevébe.
Tehát ha lefuttatom a makrót.
a könyvtáraknak igy kellene kinézniük: 001_Bélabá, 002_Zsófi
Viszont fogalmam sincs hogy állak neki. Tudnátok segíteni?
Segítségkéréshez: NSA320+FFP; Raspberry Pi2 Openelec/Kodi ;
-
-
KrAt
veterán
válasz Geripapa #2335 üzenetére
Kicsit csúnya, de csak gyorsan összedobtam..
Bár teszteltem, de előtte legyen biztonsági mentésed
#!/bin/bash
for ((i=1; i<=303; i++))
do
NUMBERS=$(echo $i | wc -c)
if [[ $NUMBERS -eq 2 ]]; then
ACTNR=00$i
elif [[ $NUMBERS -eq 3 ]]; then
ACTNR=0$i
elif [[ $NUMBERS -eq 4 ]]; then
ACTNR=$i
else
echo "Valami baj van, inkább kilépek..."
exit 1
fi
TAG=$(cat $ACTNR/$ACTNR.html | grep title | cut -d \> -f2 | cut -d \< -f1)
NEWDIR=$(echo $ACTNR"_"$TAG)
cp -r $ACTNR $NEWDIR #ha nem másolni szeretnéd, akkor a "cp -r" parancsot cseréld ki "mv"-re.
done[ Szerkesztve ]
-
-
-
dabadab
titán
-
addikt
válasz 0xmilan #2346 üzenetére
Btw mi van, ha nincsenek szepen tordelve a headerek?
lsd reddit:mgfx:temp milangfx$ wc -l test.html
1 test.html
mgfx:temp milangfx$ wc -c test.html
31526 test.html31 ezer karakter csak az elso sor. Itt a grep utan cutolhatsz ezerrel
Kell a
grep -o
(Prints only the matching part of the lines.)#!/bin/bash
for dir in */
do
dir=${dir%?}
mv $dir $dir"_"$(grep -o -m 1 '<title>.*</title>' $dir/$dir.html | cut -d \> -f2 | cut -d \< -f1)
done -
-
Geripapa
aktív tag
Köszönöm a hozzászlásokat.
Már csak az kérdés hogy a grep mért működik egyik filenál a másiknál meg mért nem?
Belenéztem a html fileba és mindkettőben ugyan ott van a tittle sor...$ cat ./001/01.html | grep title
<title>A bagdadi tolvaj</title>
$ cat ./020/20.html | grep title
(szabványos bemenet) bináris fájl illeszkedikAzért nem működik mert ékezetes betűk vannak a title-ben.
Ezt hogy lehetne ékezetmentesíteni?
[ Szerkesztve ]
Segítségkéréshez: NSA320+FFP; Raspberry Pi2 Openelec/Kodi ;
Új hozzászólás Aktív témák
- Robot fűnyírók
- Samsung Galaxy Fit 3 - keveset, de jól
- Wise (ex-TransferWise)
- Nvidia GPU-k jövője - amit tudni vélünk
- Honor Magic6 Pro - kör közepén számok
- Poco F3 - a mindenes, de nem mindenkinek
- Álláskeresés, interjú, önéletrajz
- Blu-ray lemez tapasztalatok
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Horgász topik
- További aktív témák...
- Bitdefender Total Security 3év/3eszköz! - "Tökéletes védelem most kedvező áron..."
- Eladó Steam kulcsok kedvező áron!
- Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Windows 10 Home COA fizikai licencek kiárusítás ingyenes szállítással
- Cégeknek Vírusirtó SZOFTVEREK / SZÁMLÁVAL,GARANCIÁVAL! Árak frissülnek majd!