Sziasztok,
A problémám az lenne, hogy adott egy script, aminek van pár feladata, de, ha úgy hívják meg, hogy
cat file | script.pl > eredmeny
A Scriptből szeretném megtudni, hogy mi az "eredmeny" file _neve_, lehetőleg teljes útvonallal.
Linuxon, procfs -en keresztül megy, tudom, de ez most Solaris 5.9 -en kell :)
köszi
- 995 megtekintés
Hozzászólások
rossz a script, nyisd meg az argumentumkent megadott fajlnevet es ugy ird oda
ps.: script.pl < file > eredmeny is eleg lett volna,
cat abuse mar allatkinzasnak szamit :)
--
When in doubt, use brute force.
- A hozzászóláshoz be kell jelentkezni
kiraly :)
A feladat: a script ellnorizze, hogy abba a fileba, ahol van / az argumentum van "szabad -e" kitomoriteni az adott usernek.
Ezert a script.pl -re symlink a gzip / gunzip, eddig semmi gond, ha a user
gzip -d file.gz / gunzip file -t hasznal, megy szepen.
De ugye erre is fel kell keszulni...
egyebkent a pfiles $$ lett a megoldas, kiirja szepen a parent altal nyitott fileokat, koztuk a > utanit is.
Koszonom a jo tanacsot egyebkent, en magam teljesen uj vagyok a unix vilagban, nem tudtam, hogy a cat 'abuse' az ilyen durva.
- A hozzászóláshoz be kell jelentkezni
Alapvetően Replaced-del értek egyet, de ez sajnos mindig egy sokszereplős játék. A feladat kitalálója nyilvánvalóan nem tudja, hogy miről beszél. Az, hogy ez a személy egybeesik-e a feladat végrehajtójával, már igazából csak személyeskedéshez vezetne, úgyhogy inkább koncentráljunk magára a problémára.
1. Ha van rá lehetőség, azt a gondolatot, hogy egy processzből (teljesen mindegy, hogy szkript) ellenőrzöd, hogy a stdout-ját hova irányították, és az "helyes"-e _felejtsd el_. Ez teljesen ellentétes azzal UNIX-os filozófiával, hogy az átirányítás a shell dolga, és a processz erről nem kell, hogy tudjon. Csak egy példa: ha fájlrendszerszintű jogosultságok ebben nem akadályozzák meg a felhasználót, egy közönséges átirányítással fájlokat hozhat létre; ez akkor is így van, ha mellesleg elindítja a processzedet és akkor is ha nem. Továbbá, ha elindítja, és olyanra irányít, ami alkalmazáslogika alapján "helytelen", akkor is létrejön egy üres fájl - ezt akkor le fogod törölni? Mindenképp zűrös lesz ez a hack. Ha egy módod van rá, módosítsd úgy a szkriptet, hogy parancssori paraméterként várja azt a fájlnevet, ahova írnia kell.
2. Ha nincs a fentiekre lehetőség, vagy nem sikerült meggyőznöm Téged arról, hogy ez egy nagy marhaság, akkor itt a megoldás:
http://pastebin.com/m2166fabd
Szerk: és amúgy ez a megoldás pontosan azon okokból vérzik több sebből is, amiért a feladatnak nincs értelme.
- A hozzászóláshoz be kell jelentkezni
Hali,
Nost, kihivas :)
A teljes tortenet az, hogy egy uzemelteto csoporttol kaptunk olyan kerest, hogy a fejlesztoiket kordaba kellene tartani, mert mindig kicsomagolnak egy konyvtarba nagy fileokat, maiket aztan nem torolnek le. A levelezes szerint _honapok ota_ sirnak nekik, hogy NE csinaljak, de megis....
Erre jott az otletuk, hogy ok, akkor a kitomoritesnel ellnorizni kell, hogy vajon szabad -e az adott konyvtarba kitomoriteni. A UNIX filozofia, meg persze, igy van, a shell tudja, hogy az stdout -jat a scriptnek hova iranyitja. Ez egy dolog. Az ugyfel <-> megrendelo viszony pedig egy masik :)
Alapvetoen ugye ez lenne a problema gyokere. Ha a fejleszto csapat elinditja a gunizp / gzip paros valamelyiket, akkor alapbol ellnorzi, hogy nem -e ez a konyvtar a cel, ha ez, akkor hibauzenet es el sem inditja a gzip/gunzip -et.
Az stdin -pedig jol latod, letorlom a file -t es hibauzenetet adok.
A linket nagyon koszonom!
- A hozzászóláshoz be kell jelentkezni
disk quota?
--
When in doubt, use brute force.
- A hozzászóláshoz be kell jelentkezni
> Erre jott az otletuk, hogy ok, akkor
Ezután jönnek a fejlesztők, akiknek az az ötletük támad, hogy ...
Némi "fegyverkezési verseny" fog így kialakulni, aminek ez a gzip könyvtár ellenőrzés nem a megoldása, hanem csak az "azzal kezdődött hogy visszaütött" típusú kezdete.
Szerintem.
- A hozzászóláshoz be kell jelentkezni
Erre szerintem akkor sem az a megoldás, hogy wrappeled a gzip-et. Ha fejlesztőkről van szó, annyi agyuk csak van, hogy fordítanak egyet a célgépen, és azt használják a Te wrappered helyett.
A disk quota jó ötlet lehet, vagy ha ennél specifikusabb megoldás kell, még mindig nyerőbb egy cronból ütemezett tisztítószkript, mert az legalább biztos, hogy lefut. Ráadásul egy ilyen szkript készíthet statisztikát is, amivel nyugodtan lehet riogatni a kedves fejlesztőt vagy annak menedzserét.
- A hozzászóláshoz be kell jelentkezni