Szkriptek: Python, Perl, Bash, ...

Bash ötletelés

Sziasztok!

Lenne egy feladat, kicsit elakadtam benne:
adott 2 konyvtár legyen "A" és "B".
Egy script lement adatokat "A" konyvtarba naponta 2x, hasonlo nevvel: akarmi_10022211:11:11.tar.bz2, ahol dirnev_evhonapnapora:perc:mp.tar.bz2 alapjan nevezodnek el a dolgok.
Ezutan atmasolja "B" mappaba oket.

Amit elszeretnek erni: gyakorlatilag ne masolja hanem helyezze at, illetve csekkolja ossze a 2 konyvtarat, ha stimmelnel "B" mappaban a dolgok "A" mappaval, akkor torolje le.
Nyilvan mv-el meglehet konnyen oldani, de az talan nem a legbiztonsagosabb mod, ha vmi behal pont.
Diff-el lenne a legjobb az osszehasonlitast szerintetek?

En valahol itt jarok fejben:(syntax biztos nemjo:))

if
diff A B
then rm rf /A/*
else "nem jo valami"

illetve ott akadtam el, hogy a diff eredményét hogy kapjam el a torleshez.
(ha stimmel menjen a torles, ha nem akkor nem)

Ha valakinek van mas otlete, esetleg mukodo megoldasa, azt szivesen veszem. :)

PDF-ből JPG thumbnail készítése

Üdv

Készítettem egy scriptet, ami a mappában lévő összes pdf kiterjesztésű állomány első oldalából csinál egy thumbnailnek használható jpg file-t

Kellemes használatot

Íme a kód:

## a mappában lévő pdf fileok átalakítása, átméretezése <150x100-as jpg képekké
## jó thumbnailek gyártására
## a pdf-ek első oldaláról készít egy jpg fájlt. Annak oldalarányai megmaradnak, a maximális hosszúsága és magassága pedig 150x100 pixel lesz
for i in *.pdf;do
filename=$(basename $i);
extension=${filename##*.};
filename=${filename%.*};
convert -resize 150x100 $i[0] $filename.jpg;
done

bash tördelt kimenet

Ha meg akarom nézni ssh-val, hogy mennyi hely van egy gépen:
ssh -i /home/x/.ssh/id_dsa yKUKACz.hu 'df -t ext3'|grep -v Filesystem
akkor a kimenet szép:
/dev/sda9 2016016 234812 1678792 13% /
/dev/sda1 1004024 24136 928884 3% /boot
/dev/sda3 10080520 313284 9255168 4% /home
stb

Ha föl szeretném dolgozni soronként:

for x in `ssh -i /home/h/.ssh/id_dsa yKUKACz.hu 'df -t ext3'|grep -v Filesystem`; do echo "$x"; done

akkor a kimenet töredezett:

/dev/sda9
2016016
234812
1678792
13%
/
/dev/sda1
1004024
24136
928884
3%
/boot

és nem tudom soronként földolgozni.

Mi a teendő?

ctorrent túlságosan bőbeszédű

Adott egy NAS amin linux fut, és van rajta ctorrent is, meg mini-httpd. Írtam egy PHP oldalt, ahonnan el lehet indítani a torrenteket, viszont mivel daemon módban futtatom a ctorrentet, egy fájlba iratom a kimenetét, valahogy így:
ctorrent -d -e 72 -E 0,3 akarmi.torrent > logok/akarmi.txt
Ez így szép és jó, viszont ha kilépek az oldalról, a naplófájl hirtelen elkezd nőni, ~1Mb/s sebességgel, és valamiért vagy 50* ugyanazt a sort írja ki egymás után.
Ha ugyanezt a parancsot ssh-n keresztül futtatom, akkor minden működik, egyből daemonként indul el és a fájlba szépen írja másodpercenként a jelentést.
Próbáltam úgy is, hogy a fenti parancsot egy sh szkriptbe rakom és így indítom el PHP-ból: exec('sh valami.sh'); de az eredmény ugyanaz.

A kérdésem tehát az lenne, hogy hogyan lehetne ezt kiküszöbölni?

gondolom valami olyasmi a probléma, hogy a folyamat szülőfolyamata megszűnik és ez okoz valami problémát, de azt nem értem, ha egyszer daemon módban indítom, akkor ez miért baj?
(CTCS nem jó ötlet, mert belassítja az egészet, és nem is működik rendesen)

biztonságos path QUERY_STRING perl CGI szkriptben

Sziasztok,

adva van egy

https://domain.tld/cgi-bin/ls?sub1/sub2/..

perl CGI szkript, melynek célja, hogy a /var/www/public/
alatti hierarchiát listázza.

Ebbeb a CGI szkriptben gondoskodni kell egy megfelelő

path=s///; kifejezésről mely törli az esetlegesen kézzel bevitt nem-biztonságos karaktereket úgy, mint vezető / többszörös pontok és így tovább.

Nézegetem a CGI biztonsági doksikat, de még nem találtam meg egyértelműen a legjobb

parh =~ s///

kifejezést, help!, mi a legjobb? Előre is nagyon köszi!

Távolban futtatott ksh script kimenetének programozott lekérése ssh-n keresztül kliens gépre

Üdv!

Azt hiszem a cím kb. mindent elárul a problémámról:

Adott egy ksh/awk script, ami logokat pásztázva készít bizonyos kötött formátumú statisztikai jellegű outputot. A puszta szöveges adatok mellett szeretném vizualizálni (grafikonon pl.) is ezeket a teljesítmény információkat. Van-e valami bevett szokás/minta, ami alapján egy kliens oldali alkalmazás (C/C++ pl.) SSH-n keresztül a szerverre belépve, ott lefuttatja a scriptet és a kimenetét letölti további feldolgozás céljából? (Valami RPC-szerű dolog kellene, de jó lenne kerülni a szerver oldalon futtatott daemon-okat pl.)

postscript fájl utf8 kódolás?

Sziasztok!

Csináltam egy postscript dokumentumsablont amibe egy perl szkript dinamikusan tölti fel az adatokat (név, cím). A gond az, hogy az adatok utf8-ba vannak és a .ps meg nem támogatja az utf8-at amennyire sikerült kiderítenem. Van valami program ami átfordítja az utf8-at a ps megfelelőjükre?

Én sajnos nem találtam semmit.

[megoldva] delimiterig való törlés - fejtörő :)

a string:

./valami/ize/cucc.txt

a kívánt végeredmény:

./valami/ize/

Hogyan lehetne levágni a végét, ha a "./valami/ize/" mappa útvonala tetszőleges mélységű lehet?

Pl.:

$ echo "./valami/ize/cucc.txt" | rev
txt.ccuc/ezi/imalav/.

és akkor a rev után még valami, amivel levágjuk az első "/"-jel előtti filenevet [ami különböző név lehet, lényeg, hogy az elválasztó mindenképpen a "/"-jel], utána újra rev.

Szóval a

cut -d "/" -f 1

"ellentettje kéne", miszerint ne az első "oszlopot" hagyja meg, hanem az összes maradék részt.

bash script kérdés

Lehet-e valahogy bash scripttel ellenőrizni, hogy egy könyvárban van-e *.txt fájl (a csúnya, "No such file or directory" üzenetet elkerülendő).

Ez működik, de csak konkrét fájlnevekre, viszont esetemben a fájlnév eléggé random lehet és sajnos space-t is tartalmaz:

if [ -f /mnt/valami.txt ];then
....
fi

Ez pedig "[: too many arguments" üzenetet, produkál:

if [ -f /mnt/*.txt ];then
....
fi

mekkora fájljaid vannak?

és mekkora blokkméretet van a fájlrendszereden? (ezekről lehetne szavazás is).
egy ilyen szkript választ ad az első kérdésre.

szerk.: illetve ez a szkript ahhoz nyújtana segítséget, hogy milyen blokkmérettel rendelkező fájlrendszert használjunk.ad 1) lehet válaszolgatni a második kérdésre

- ez nálam az alapértelmezett, mert minden ömlesztve van ~ alatt. nem pakolom külön fájlrendszerre a kis és nagy fájlokat, nem tudom mikortól lenne érdemes.

ad 2) volt már róla szó, hogy kutyaütő szkriptelő, tehát hogyan lehet okosabban megírni a fenti szkriptet ?

- nálam kb 10 percig fut, gondoltam arra, hogy előbb lefuttatok egy ls -lR-t find helyett, aztán arra szűrni, illetve a kettő hatványait egy másik ciklussal léptetni, nyolcmillió if helyett.