Új hozzászólás Aktív témák
-
Keef_Lee
senior tag
Sziasztok!
A kezdő topicból, a haladón keresztül jövök, mert script problémám van...
Meglévő fájl dátumát kellene összehasonlítani a mai dátummal.
Ennél a sornál elszáll:
mod_date=${mod_time:0:10}
Előtte kiiratva így néz ki a mod_time:
2018-12-06 13:14:01.344671194 +0100
A today, amivel összekellene hasonlítani:
2018-12-06Szívesen veszem az észrevételeket. Köszönöm.
#!/bin/bash -
bambano
titán
válasz
Victor Súgó #2396 üzenetére
"1) find ...paraméterek | xargs | ls": ezen még dolgoznod kellene.
-
Victor Súgó
tag
Tudni kell, hogy mit akarsz:
1) a find kimenetét átadni
2) a find által megtalált fájlt átadni1) find ...paraméterek | xargs | ls
Ez a find teljes kimenetét átadja paraméterek listájaként az ls-nek. Bővebben nézd meg az xargs manualt!2) find ...paraméterek... -exec ls {} \;
Ezzel a find által megtalált fájlokon végzi el egyesével az ls műveletet, a sor végén a \; nem légypiszok!
Ilyenkor amennyire emlékszem, amint megtalálja a fájlt, végrehajtja az ls-t, míg az 1) előbb futtatja a find-ot és ha vége, akkor jön a többi (remélem, jól emlékszem)A két variáció közt elég nagy különbségek vannak, ebben a példában ha az xargs kap egy -n1 paramétert, akkor közelítőleg ekvivalens megoldásnak számítanak, de ahogy már írták, ls-t nincs sok értelme így használni.
-
I02S3F
addikt
válasz
bambano #2393 üzenetére
Most sikerült megvizsgálnom az esetet. Valóban nem adja át a
find
a kimenetét azls
-nek. Ha odajutok természetesen lecsekkolom azls
kapcsolóját afind
-nek.
Hirtelen annyira megörültem a kimenetnek, hogy azt hittem az jó és nem szenteltem neki elég figyelmet, hogy le is teszteljem. Nem tudom miért, vagy fáradt voltam, vagy simán figyelmetlen. -
bambano
titán
-
I02S3F
addikt
Sziasztok! Tanulgatok. Szeretném a find kimenetét átadni az ls-nek. Hogyan tehetem meg ezt?
Próbáltam így:
find ~ -mmin 5 | ls -al
find ~ -mmin 5 < ls -al
find ~ -mmin 5 > ls -al
- itt azt írja nincs 'ls' könyvtár. Gondolom még find parancshoz veszi, amit mellé írtam.A baj, hogy a find nem a találatokat adja kimenetként? Vagy, hogy nem tudom rendesen hogyan kell átadatni a kimenetet egy másik parancsnak? Vagy egész egyszerűen ezt nem lehet? Nem így működik?
Ui.: ha csak olvasnivalót dobtok a témában azt megköszönöm. Azt se tudom hogyan keressek rá!
-
KrAt
veterán
válasz
Ron Swanson #2380 üzenetére
Ha hamarabb tudjuk, akkor szerintem simán megoldottuk volna, nem volt nehéz
-
-
sonar
addikt
válasz
Ron Swanson #2380 üzenetére
Fel kellett volna dobni némi sört, hogy legyen motiváció...
Legalábbis annó fősulis koromban ez így ment. Ha vki lusta volt tanulni akkor az fizetett -
válasz
Ron Swanson #2379 üzenetére
rip
az első kettőt tudtam csak
-
Sziasztok!
10 perc múlva fog kezdődni az egyetemen a zh-m, amit shell scriptből írunk. Valaki tudna segíteni majd? Mindjárt beírom a feladatot. -
-
I02S3F
addikt
Uraim! Újabb kérdés!
Tapasztalatotokból fakadóan van valami tanácsotok kezdőknek?
Én arra gondoltam, hogy végig megyek a leggyakrabban használt parancsok man page-én, kipróbálom a kapcsolókat, majd megpróbálok feladatokat megoldani. Ami úgy nézne ki, hogy az első script kevés dolgot csinálna, sokáig írnám és akkor haladnék a több feladatok megold, rövidebb idő alatt megírom cél felé.
Mi a véleményetek?
-
I02S3F
addikt
(#2370) dabadab,
(#2371) doc
(#2372) milangfxSziasztok! Köszönöm a válaszokat! Baromi jó játék!
-
dabadab
titán
Konkrétan kelleni ritkán fog, de a saját tapasztalatom fejlesztőként az, hogy az mindig hasznos, ha az ember össze tud dobni egy kis bash sciptet, mindig elő szoktak kerülni olyan dolgok, amiket pár sor seddel v awkval pillanatok alatt meg lehet oldani, vagy ha olyan a projekt, akkor kis indítószkripteket írni, ilyenek.
-
I02S3F
addikt
Sziasztok! A Bash és Perl scriptek csak üzemeltetőknek jön jól? Fejlesztői állásoknál szokott ez kelleni?
-
Jester01
veterán
válasz
jani-wan #2362 üzenetére
Mivel senki nem mutatta eddig meg, itt van a batch programozás topik.
-
jani-wan
tag
válasz
bambano #2364 üzenetére
Meg lett nézve!
"Akkor koltozzunk at ide a linuxos topikbol..."
Ez nekem nem mondja azt hogy a egyik Shell Script az nem ugyanaz mint a másik shell script mert azt így is hívják meg úgy is!
És senkinek sem aki még sosem foglalkozott ezzel!
És ezt egy értelmes embernek nem kell elmagyarázni. -
jani-wan
tag
válasz
bambano #2359 üzenetére
Én először olyasmire gondoltam amivel már tudnék Windows-hoz írni gyermeteg .bat scripteket, amivel hasznos de alapdolgokat el lehetne végeztetni.
És ehhez gondoltam valami gyorstalpalót ahol megvannak az alapok, és el van magyarázva hogy miért rakok pl. "() $ ilyesmiket bele. Nem olyat ahol meg kell tanulnom egy teljes programozási nyelvet
Komplett Unix tanuláshoz nincs energiám most hogy végre befejeztem a CCNA tanulást (fogjuk rá). -
jani-wan
tag
Üdv
Valaki tudna segíteni hol találni az alapoktól való Shell scripting megtanulásához anyagot?
Jelen pillanatban egy betűt nem értek belőle annyit se, szóval szájba rágós alapszint ahol minden részletesen el van magyarázva.
KösziJ
-
bambano
titán
válasz
Geripapa #2353 üzenetére
"Ez lett a végeredmény": azt te csak hiszed
szóval ez a másfél méter if-elseif csak az én szemem bántja?
szóval egy case-t nem lehetne helyette, ha már a printf-et nem ismerjük?másrészt még mindig nem grep '<title>' -re keresel.
harmadrészt sed után tr-t, az forkbomba. -
Geripapa
aktív tag
Köszönöm a segitséget!
Ez lett a végeredmény, ami megcsinálta amit szerettem volna:
#!/bin/bash
for ((i=1; i<=303; i++))
do
NUMBERS=$(echo $i | wc -c)
if [[ $NUMBERS -eq 2 ]]; then
ACTNR=00$i
HTML=0$i
elif [[ $NUMBERS -eq 3 ]]; then
ACTNR=0$i
HTML=$i
if [[ $HTML -gt 70 ]]; then
HTML=0$i
fi
elif [[ $NUMBERS -eq 4 ]]; then
ACTNR=$i
HTML=$i
else
echo "Valami baj van, inkább kilépek..."
exit 1
fi
TAG=$(cat $ACTNR/$HTML.html | iconv -f iso8859-1 -t utf8 | grep -m 1 title | cut -d \> -f2 | cut -d \< -f1 | sed 's/[[:blank:]]*$//' | tr ' ,' "_" )
NEWDIR=$(echo $ACTNR"_"$TAG)
echo $NEWDIR
mv $ACTNR "${NEWDIR}" #ha nem másolni szeretnéd, akkor a "cp -r" parancsot cseréld ki "mv"-re.
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?
-
0xmilan
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 -
-
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 -
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?
-
0xmilan
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.
-
0xmilan
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. -
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. -
bambano
titán
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...
-
0xmilan
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. -
bambano
titán
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
-
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. -
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.
-
bambano
titán
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.
-
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
-
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á. -
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.
-
dabadab
titán
-
bambano
titán
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
-
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
-
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?
-
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"
Új hozzászólás Aktív témák
- Videó stream letöltése
- Xiaomi 14T - nem baj, hogy nem Pro
- Vivo X200 Pro - a kétszázát!
- Linux kezdőknek
- EA Sports WRC '23
- iPhone topik
- Kerékpárosok, bringások ide!
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Az AMD-vel tervezi a következő generációs Xboxokat a Microsoft
- VR topik
- További aktív témák...
- Antivírus szoftverek, VPN
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest