a problémám a következő:
adott 1 feladat:
írjon egy shell-t, ami az első paraméterben megadott felhasználók (max 5 db) bejelentkezését figyeli a 2. paraméterben megadott időközönként.
Ha ez megtörténik levelet küld az administrator - nevű felhasználónak amelynek a tárgya: " Felhasznalo: XY be van jelentkezve: DATUM".
adott 1 megoldás:
HIBA=128
case $# in
0|1) echo -e "Használat: $0 felhasználó1 [felhasználó2..5] -fPP\n\tLegalább egy felhasználót meg kell adnod\n\t-f:hány percenként (PP=0-59) ellenőrizze a felhasználókat"
exit $HIBA
;;
esac
a="+administrator+"
u="+$(users)+"
if [ "$(echo \" ${u// /+ +}]\" | cut -f2- -d\ | tr ' ' '\n' | grep -n $a | cut -f1 -d: )" = "" ]
then
echo Nincs administrator nevű felhasználó a rendszerben
exit $HIBA
fi
if [ "$(echo $@ | grep -v '\-f')" != "" ]
then
echo Nem adtál meg frissítési időközt -fPP paraméter
exit $HIBA
fi
for arg in "$@"
do
if [ "${arg:0:2}" = -f ] && [ "${arg:2:1}" != _ ]
then
if [ "$(echo ${arg:2:2} | grep -v '[0-5][0-9]')" != "" ]
then
echo "A perceket nem megfelelően adtad meg!!!"
exit $HIBA
fi
prg=$0
if [ "${prg:0:2}" = ./ ]
then prg=${prg:2}
fi
perc="*/${arg:2:2}"
if [ "$perc" = */00 ]
then perc="*"
fi
tmp=$(echo "$*" | sed "s/$arg//")
cmd="$perc * * * * $(pwd)/$prg $tmp -f_"
echo "$cmd" > crntb
crontab crntb
rm -f crntb
exit 0
fi
done
usrs=$(echo "$*" | sed "s/-f_//")
for usr in $(users)
do
a="+$usr+"
c=$(echo " +${usrs// /+ +}" | cut -f2- -d\ | tr ' ' '\n' | grep -n $a | cut -f1 -d: )
if [ "$c" != "" ]
then
mail -s "Top Secret Agent" administrator <
A megfigyelt személy $usr be van jelentkezve !!!
EZEGYLEVEL
fi
done
exit 0
kérésem:
szeretnék egy konkrét elemzést a megoldásra
- pl mit csinál a case ciklus, hogyan működik a for, melyek a változók...
- melyik részét lehetne egyszerűbben...
- asszem a dátum a mail-ből kimaradt, hogyan lehetne beletenni...
sajnos, bár több programozási nyelvben általában elboldogulok a
megvalósítások megértésével, ez a része feladja a leckét
- 1619 megtekintés
Hozzászólások
Ránézésre akkora marhaságok (*) vannak benne, hogy a helyedben keresnék egy másik megoldást és azt akarnám beadás előtt megérteni.
Persze lehet, inkább megírni kéne magadnak.
(*) Hőzöngőknek:
pl. crontab fájl felülkefélése vakon isteni megoldás, de mi van, ha van userkémnek _fontos_ dolog a meglevő crontabjában
pl2. a mail küldése biztos nem így van az eredetiben; vagy csak elrontottad a c'n'p-et, vagy már eleve szarul van megírva.
(Jól sejtem, hogy megint itt a vizsgaidőszak és jönnek a beugrókat megoldatók? )
- A hozzászóláshoz be kell jelentkezni
+1
egyébként figyeltétek, hogy a feladat nem is szkript írása, hanem egyből írjon egy shell-t ? :P
- A hozzászóláshoz be kell jelentkezni
LOL :)
- A hozzászóláshoz be kell jelentkezni
több empátiát! Te is voltál vmikor felsőoktatásban..?
- A hozzászóláshoz be kell jelentkezni
nem is csináltattam meg mással semmit sem....(igaz én segítettem másoknak, de azér sört kaptam...öööö...sokat)
- A hozzászóláshoz be kell jelentkezni
hát akkor fel kell erre az alternatív gyógymódra hívni a feladó figyelmét. És még vizitdíjat se kell fizetni!
- A hozzászóláshoz be kell jelentkezni
"...ja de a csajok le is szoptak..." - idézet a Ford Fairlain kalandjai című filmből :)
- A hozzászóláshoz be kell jelentkezni
sajnos ismerem azt a borzalmat :)
- A hozzászóláshoz be kell jelentkezni
most a filmre mondtad, hogy borzalom ugye? :)
- A hozzászóláshoz be kell jelentkezni
sajnos igen ;)
- A hozzászóláshoz be kell jelentkezni
A Ford Fairlane borzalom?
"Kabbeafaszom!"
--
'Please, just tell people to use Windows.' - Linus Torvalds on KDE and GNOME
Registered M$funboy #006 (vigyázat: memetikai dágvány!!!11)
- A hozzászóláshoz be kell jelentkezni
eszem faszom megáll, hogy ezen összevesztek...húúúú :)
Elmosogatni ki fog?
- A hozzászóláshoz be kell jelentkezni
Stanley
- A hozzászóláshoz be kell jelentkezni
"nem is csináltattam meg mással semmit sem"
gondolom nem levelezőn nyomtad. mellette 3 műszak, lakásfelújítás, 1200 m2 kert + 600 barackfa
- A hozzászóláshoz be kell jelentkezni
"Ránézésre akkora marhaságok (*) vannak benne, hogy a helyedben keresnék egy másik megoldást és azt akarnám beadás előtt megérteni."
volt egy ilyen érzésem
"Persze lehet, inkább megírni kéne magadnak."
meg egy ilyen is
köszönet a segítségért
- A hozzászóláshoz be kell jelentkezni
"- pl mit csinál a case ciklus, hogyan működik a for, melyek a változók..." - a case ciklusra én is kiváncsi lennék..
-------------------
2.6.17-gentoo-r4
- A hozzászóláshoz be kell jelentkezni
:) jogos
- A hozzászóláshoz be kell jelentkezni
RTM: Brian W. Kernigham - Rob Pike: A Unix operációs rendszer (Mûszaki könyvkiadó) Az korábbi kiadások szürke, az azt követők narancsszinű borítóval jelentek meg.
A megoldásra egy ötlet:
#!/usr/bin/bash
if [ "$BASH_ARGC" -lt "2" ]
then
echo "Keves argumentum"
exit -1
fi
userek=$(($BASH_ARGC-1))
timestep=$(echo $@ | sed 's/\ /\|/g' | cut -d\| -f$BASH_ARGC)
greppar=$(echo $@ | sed 's/\ /\|/g' | cut -d\| -f1,$userek)
while :
do
lista=$(who | egrep "$greppar" )
if [ "$lista" ]
echo $lista | mail -s "Felhasznalo: be van jelentkezve: $(date)" administrator
fi
sleep $timestep
done
- A hozzászóláshoz be kell jelentkezni
Tőled azért elvártam volna egy kevéssé bash-specifikus megvalósítást :-(
$BASH_ARGC nagyon szép, de $# minden egyéb elterjedtnek nevezhető shell-ben megy. exit -1 tökéletes, de tekintve, hogy státusz kód, javasolnám a 0-255 (esetleg 0-127, régebbi rendszerekkel való kompatibilitás okán) tartományban beállítani, akkor nem lesz gond a program használatával egyéb UNIX(-like) rendszerek esetén sem. (Egy előjeltelen értéket előjelesen beállítani, no az okozhat kellemetlenséget.)
- A hozzászóláshoz be kell jelentkezni
Igazad van mester, de nézz az időpontra, hogy mikor írtam (tudom, nem mentség, de lassan, ahogy öregszem, egyre kevésbé vagyok éjszakai bagoly). A $# miatt szégyenlem is magam, az exit -1 -et meg szépen 255-tel honorálja a $? (ahol néztem), bár való igaz, hogy szebb/rugalmasabb az unsigned 7 bites érték.
- A hozzászóláshoz be kell jelentkezni
hálás köszönet a fáradozásért, de sajna a miértekkel nem boldogulok
majd aug-ban ráfekszek, ha lefut a barack.
- A hozzászóláshoz be kell jelentkezni
Ránézésre jónak tűnik, kíváncsi lennék rá hogy beadod-e riki2? (Megtudom, ha én is ugyanezt beadom :) )
- A hozzászóláshoz be kell jelentkezni
most csak nekem furcsanak a feladat?
mondjuk el tudom kepzelni, hogy ilyenre szuksege legyen valakinek, de ha hosszu tavon szeretnem figyelni a felhasznalokat, akkor a login.conf/.profile/pam-ot piszkalnam, mert egy event alapu megoldas megiscak jobb, mint egy endless loop :)
--
The Internet has evolved from smart people in front of dumb terminals to dumb people in front of smart terminals.
- A hozzászóláshoz be kell jelentkezni
A felsőoktatásban kiadott feladatok / házik csak nagyon ritkán szóltak értelmes dologról, v. olyasmiről aminek a megvalósításából konkrétan hasznos tapasztalatokat szűrhetsz le.
- A hozzászóláshoz be kell jelentkezni
sziasztok,
haverom épp most vizsgázik, és kért egy kis segítséget. scrip írásban nagyon nem vagyok jártas, ezért én tőletek kérnék segítséget.
a feladata, hogy készítsen egy scriptet, ami kiírja, hogy a következő 7-es busz mikor jön.
addig ok hogy wget-el vagy lynx-el lekapom a bkv oldaláról (http://www.bkv.hu/busz/7gyors.html), de az már nem tiszta, hogy hogy szedjem ki, hogy a következő mikor jön.
ha tudtok, légyszíves sos segítsetek, épp bent ül a vizsgán :D
- A hozzászóláshoz be kell jelentkezni
Gondolom outdated a dolog, de a date tud olyan kimenetet, ami az órát és percet tartalmazza egybeírva "óópp" formában. A menetrendi adatokat ugyanilyen formára alakítod, numerikusan megszortolod, aztán sorban megnézed a menetrendi adatokat, hogy melyik az első, amelyik nagyobb az aktiális "óópp" számnál.
- A hozzászóláshoz be kell jelentkezni
Persze, hogy nem érted. Irtó gány. Sztem keress más feladatot, amiből jobban tanulhatsz.
--
hup.user.js
- A hozzászóláshoz be kell jelentkezni