Ubuntu 12.04 gépeket kéne leállítanom, ha senki nincs bejelentkezve.
Bash scripttel viszonylag sok módon megállapítható a dolog, a baj az, hogy sok-sok esetben épp akkor áll le a gép, amikor valaki a jelszavát pötyögi.
Ennek kizárásara mi a mód?
Meg tudom-e állapítani valahogy az utolsó billentyűnyomás idejét, vagy van-e valakinek más ötlete?
- 3302 megtekintés
Hozzászólások
üdv
nem vagyok ubuntu expert, de idle time detection mint ötlet?
ezt dobta gugli első oldalon....
cat>/tmp/idletime.c<
#include
#include
#include
#include
#include
#include
int GetIdleTime () {
time_t idle_time;
static XScreenSaverInfo *mit_info;
Display *display;
int screen;
mit_info = XScreenSaverAllocInfo();
if((display=XOpenDisplay(NULL)) == NULL) { return(-1); }
screen = DefaultScreen(display);
XScreenSaverQueryInfo(display, RootWindow(display,screen), mit_info);
idle_time = (mit_info->idle) / 1000;
XFree(mit_info);
XCloseDisplay(display);
return idle_time;
}
int main() {
printf("%d\n", GetIdleTime());
}
EOF
gcc -o /tmp/idletime -L/usr/X11R6/lib/ -lX11 -lXext -lXss /tmp/idletime.c
DISPLAY=:0 /tmp/idletime
Balooo
------------------------
Nincs a világon se jó, se rossz. A gondolkodás teszi azzá... (W. Shakespeare)
- A hozzászóláshoz be kell jelentkezni
Na, én meg C expert nem vagyok:)
- A hozzászóláshoz be kell jelentkezni
Legkozelebb escapeld ki a kacsacsoroket, vagy pastebin... Egyebkent meg ehhez a GDM/KDM/XDM-mel egyszerre kell indulni, kulonben nulla displayt kapsz vissza.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Hagyj ra laufot. Ha mondjuk egy oran keresztul nincs belepve senki, akkor lezar. Es mielott leallitod, allitsd le a GUI-t. Ekkor nincs eselye jelszot pottyenteni.
Egyebkent, ha egyutt indulsz a DM-mel, akkor van, mert akkor tudsz X esemenyeket figyelni. De ha csak egy kulon scriptkent futsz, akkor nem, mert nem lesz DISPLAY valtozod (meg kapcsolatod az X-szel)
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
A lauffal az a baj, hogy soxor láttam, hogy már két órája nem ült ott senki, és mikor valaki végül odaült, az orra előtt kapcsolt ki. Nem kicsit idegesítő:)
Nem megy át valahol az a billentyű, mielőtt eléri az X-et?
- A hozzászóláshoz be kell jelentkezni
De, a kernelen atmegy. Kernelmodult akarsz irni?
Egyebkent ezt nem fogod tudni elkerulni. Ha nem igy, akkor ugy fog leallni, hogy epp ratette a kezet a billzetre. Es a leallitas sem ket pillanat, szoval lehet, hogy mar elindult a leallitas, csak az X miatt meg nem latszik.
Miert nem altatod le a gepet? Akkor pillaantok alatt felall.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
"Kernelmodult akarsz irni?"
Egyébként igen, csak butuska vagyok hozzá:)
"Miert nem altatod le a gepet? Akkor pillaantok alatt felall."
Hmmmm. Nagyon meggondolandó.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Köszönöm, láttam, sajna itt a gond:
"Unfortunatly, USB keyboards and mices are not supported yet"
- A hozzászóláshoz be kell jelentkezni
Két sorral fölötte meg azt írja, hogy de :)
- A hozzászóláshoz be kell jelentkezni
Még a végén csak ki kell próbálnom:) A fene...:)
- A hozzászóláshoz be kell jelentkezni
Közben megnéztem a fenti meg ezt https://coderrr.wordpress.com/2008/04/20/getting-idle-time-in-unix/ a c-kódot is (megnéztem=lefordítottam) és kipróbáltam az xprintidle parancsot is. Mindegyik 5 vagy 5 ms-ot ad vissza, akármennyi is telik el.
No de miért?
Közben találtam ilyet is: http://stackoverflow.com/questions/3512333/how-to-find-out-that-a-runni…
Miért fél a csákó ezt rootként futtani? És bash-ból hogy veszem észre, ha ez a "file" tartalma megváltozott? Azaz billentyűt nyomtak?
- A hozzászóláshoz be kell jelentkezni
A fenti kérdésre lehetséges, hogy a DPMS bekapcsolt állapota adja meg a választ? Próbáld ki az xprintidle-plust, lehet, hogy az segíteni fog.
- A hozzászóláshoz be kell jelentkezni
Okosat szóltál, ezzel már jók az idők. A baj, hogy az eredeti probléma megoldásához nem visz közelebb, tekintve, hogy Ctrl+C-ig fut.
- A hozzászóláshoz be kell jelentkezni
touch /etc/nologin
shutdown -h -P -t 5 now
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
- A hozzászóláshoz be kell jelentkezni
Kar, hogy nem ez a problema.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Az igazi probléma magával a problémával van. Szerintem nem létezik kompromisszummentes megoldás. Tehát próbálj meg készíteni egy folyamatábrát a leállítás folyamatára. Ha az algoritmus elemi eseményeket tartalmaz, akkor ehhez már szükséged lesz kompromisszumokra. Utána már sokkal egyszerűbb lesz a feladat megoldása.
Például egy probléma: Leülök a gép elé, emelem a kezemet, hogy beírjam a felhasználóim nevemet, de a kezem emelése közben leáll a gép. Ez számomra ugyanannyira lenne idegesítő, mintha a jelszó beírása közben állna lenne.
Ha erre is megoldást akarnék, akkor abba az irányba indulnék el, hogy a kilépés opciót választva a kiléptetés helyett leállítást hajtson végre a gép. Esetleg hibernálást.
Ezzel is lesz egy kis gond, mert ha azért lépek ki, hogy átadjam a helyemet másnak, akkor a helyemre ülőnek ki kell várni a ki- és bekapcsolás idejét. Ehhez kellene a kilépés lehetősége mellett egy felhasználó váltás opció is. Nem az ami az Ubuntuban jelenleg van, hanem olyan, ami ténylegesen kiléptetné a régi felhasználót. Esetleg egy időzítéssel, miszerint ha a kijelentkezés után két percig nem lép be senki, akkor leállítja a gépet. De ezzel megint visszajutottunk az eredeti problémához.
Mazochista megoldás: :-) Beállítani egy webkamerás gépet, ami a leállítandó gépet és annak környezetét figyeli. A leállító script lekérdezi a webkamerás gépet, hogy van-e valaki a közelben, és csak akkor kezdi meg a leállítást, ha nincs senki a gép előtt. Esetleg a leállítás megkezdése előtt egy nagy piros lámpa is villogni kezd, ezzel figyelmeztetve a géphez közeledő személyt. De az is idegesítő lesz, hogy amikor a gép felé közeledve, már csak 3 méterre vagyok, akkor kezdi a megállítást. Mondjuk 15-20 méteres távolságból már kevésbé lenne idegesítő. Ehhez biztosítani kell, hogy a gépek között megfelelő távolság legyen. Egy 20 gépes terem esetén egy sportcsarnok méretű helyiség éppen megfelelő lesz. :-)
Lényeg: Próbáld meg pontosan megfogalmazni, hogy mit akarsz, és akkor már ki fog derülni, hogy milyen kompromisszumokkal tudod megoldani a feladatot. Még egyszer hangsúlyozom, hogy a hangsúly a probléma sokkal pontosabb megfogalmazásán van.
-----
A kockás zakók és a mellészabások tekintetében kérdezze meg úri szabóját.
- A hozzászóláshoz be kell jelentkezni
Igazad vagyon, de "Szerintem nem létezik kompromisszummentes megoldás". A kompromisszum olyasmi lesz, hogy "ha az elmúlt percben nem értek a billentyűkhöz, akkor lezárok, mint a csatornafedő." És igen, lesz aki így is megszívja, de legyenek minél kevesebben.
- A hozzászóláshoz be kell jelentkezni