Linux / vágólap automatikus törlése

Biztonsági okokból szerettem volna a vágólap tartalmát töröltetni időnként, nehogy rajt hagyjak egy jelszót vagy egyéb infót a szükségesnél jóval hosszabb ideig.

su -c "yum install xsel"
sudo apt-get install xsel

crontab -e

* * * * * (/usr/bin/xsel --display :0 -bc; /usr/bin/xsel --display :0 -pc; /usr/bin/xsel --display :0 -sc)

Szerk.: javítottam a Ruby scriptemen, elérhető:
https://github.com/log69/myscripts/blob/master/clipboard_auto_clear.rb

Hozzászólások

Ezzel az a gond, hogy ha 59 másodperckor valamit rámásolsz a vágólapra, beilleszteni máshova nem fogod tudni (pl. szövegszerkesztés, táblázatkezelés). A ctrl-x-es művelet még izgalmasabb (jó, van undo, de első pillanatban biztos megijednék).

Ennél mondok egyszerűbbet. Ha a clipboard RAM disk-en van, mint például nálam, a gép kikapcsolását követően minden elvész, a következő boot és login után üres a vágólap.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nem. File-ban tárolja. Persze attól is függ, mit használunk clipboard gyanánt. Az X szerver dolgáról beszélünk, vagy egy clipboard managerről, amelyből van egy pár? Én használom ez utóbbiak egyikét, az file-ban tárol, persze nem kötelezően, hanem beállítható módon.

A cliboard manager előnye, hogy nem csak az utoljára vágólapra másolt dolgot tudod beilleszteni, hanem valamelyik korábbit is akár. Lényegében lesz egy clipboard history-d, ami nagyon kényelmesen használható.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Rögtön az első hozzászólásban írta uzsolt a problémát. Az a gond, hogy a cron aszinkron attól, mikor került az anyag a vágólapra. Ennek úgy kellene működnie, hogy a vágólapra másolást követően kellene indítani a timert. Így, aszinkron módon lehet, hogy azonnal törlődik a vágólap tartalma, ami kiszámíthatatlanná teszi az egészet: néha működik a copy-paste a gépeden, néha pedig nem. Ennél bosszantóbb dolgot nehezen tudok elképzelni. Esetleg ezt:

while sleep 0.1; do kill $((RANDOM+1)); done

:)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Egyrészt mivel percesre állítottam be, egyelőre nem fog érdekelni.

Másrészt mondjuk lehetne akkor már a tartalmát figyelni a vágólapnak, csak az meg polling-gal feleslegesen sok erőforrást visz el. Ha túl ritka a polling, akkor nem sok értelme lesz (pontatlan), ha túl sűrű, akkor meg "sok" CPU erőforrásba kerül.

Mérlegre téve az eredeti igényemet a kimenetel minőségével és általam ismert lehetőségekkel (idő befektetés / eredmény), nekem jelenleg ez megfelel.

mivel percesre állítottam be, egyelőre nem fog érdekelni

Szerintem fog, mert ha épp közvetlenül a cron script futása előtt nyomtad a Ctrl-C-t, akkor azonnal törlődik az anyag a vágólapról és a Ctrl-V nem fog semmit sem csinálni. Pont olyan, mint az orosz rulett. Teljesen aszinkron a dolog, lehet, hogy van időd a beillesztésre, lehet, hogy nincs. Semmi összefüggés nincs a vágólapra másolás és a törlést végző script futása között.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Épp ez az, hogy ha azt akarom, hogy ne álljon fel a többiek által említett probléma, miszerint pont akkor törli a tartalmat, mikor be akarom illeszteni, így sokkal sűrűbben kellene pollozni - legalábbis én nem akarom percekig a vágólapon hagyni. Amit szeretnék, ahhoz 1-2 másodpercenként kell, az meg azért sokat elvisz. Egyszerűen kipróbálható. Script-nél lejjebb meg nem megyek ezért.

Esemény vezérelt megoldás lenne jó.

A legjobb megoldás tényleg az eseményvezérlés lenne, kérdés hogy van-e erre mód. Gugli nem segített, igaz nem is mélyedtem bele.

Viszont nincs szükséged másodpercenkénti pollozásra egyáltalán ahhoz, hogy a probléma orvosolható legyen. Elég mondjuk percenként.

Tegyük fel azt mondod, hogy maximum 2 percig lehet akármi a vágólapon, két percen belül el kell tűnnie. Pollozz percenként. A poll eredményét tárold el, vesd össze az előzőleg eltárolttal az aktuálisat. Ha megegyezik, akkor mivel legalább egy perce ugyanaz a tartalom, megérett a törlésre. Ha különbözik, akkor a változás friss (egy percen belül) tehát még nem kell piszkálni.

Ha ennél sűrűbb kell az is megoldható. Két fázissal kell számolni, tehát a max élettartam a pollozás időközének a kétszerese. A trükk csupán annyi, hogy tudnod kell futtatni cron-t 1 percnél sűrűbben.

Így van. De amúgy nem rossz manfreed ötlete, egy login-kor induló scriptet tudok elképzelni, amely memóriában tárolja a vágólap tartalmát - dupla időnél azt is lehet törölni.

Itt egy ruby verzió. Még egyszerűbb logika. Betettem a login-nál induló cuccokhoz.

http://paste.ubuntu.com/13943441/

Működik jól. Talán még a display portot lehetne venni a $DISPLAY változóból. Valószínűsítem hogy a DE startup scriptjeinek elérhető ez a változó.

7 MB-ot eszik a ruby (v 2.2.3 x64), 4-et enne egy bash alapból. Így elfér.

Szerk.: tovább fejlesztettem a Ruby scriptet. A topic tetején található a github link.

> nehogy rajt hagyjak egy jelszót vagy egyéb infót a szükségesnél jóval hosszabb ideig.

Inkább arra kell rászokni, hogy reflexszerűen zárolod a gépeket, amikor felállsz előle, imho többet segít. :)

Nálam is automatikusan zárolódik hamar, illetve nálam is kopik a Ctrl+Alt L key.

A védelem nekem azért kell, hogy más programok, akár webes, ne tudják másolni a vágólapot - legalábbis csökkenteni akarom az esélyét - a rizikó ablakát annak, hogy általam ott hagyott jelszót lekopizzanak. Mert sokszor kell másolnom ilyen infót.

Persze amúgy is hozzáférhetnének az X clipboard-jához. Itt most arról van szó, hogy végzek egy műveletet. Ha befejeztem és elkezdek nyitni idegen weboldalakat, akkor ott már kicsi legyen az esély hogy érzékeny infó elérhető a vágólapon.

Mintha a keepassx pont megcsinálná, azaz csak korlátozott ideig tartja a felhasználónevet/jelszót a vágólapon (persze abban az esetben, amikor oda másoltatod vele) - legalábbis mintha már jártam volna úgy, hogy "lekéstem" a beillesztést.