[bash] Pomoč pri programiranju skript v linuxu

Mihaz Član
uredil/-a 25. May, 2010 v Programiranje
Živjo.

Na faksu se učimo linux in imamo za domačo nalogo nekaj kratkih nalog pa bi rabu malo pomoči :)
---------------------------------------------------------------
Napišite program v lupini, ki vsakih pet minut preveri, če se na sistemu pojavi nek proces in ga poskusa ubiti. Ime procesa podamo v ukazni vrstici.

Primer uporabe:

$ ubij firefox

bo na računalniku vsakih pet minut preveril, če teče kak proces z imenom firefox, ter ga bo poskušal ubiti. Navodilo: pri tem obvezno uporabite ukaz kill.

---------------------------------------------------------------------
Napišite program v lupini, ki pregleda datoteko /etc/passwd in izpiše število procesov za vsakega uporabnika.

Primer izpisa: procesi

root 45
peter 2
vaje 8

------------------------------------------------------------------
V lupini bash napišite program preveri_geslo, ki preveri veljavnost danega gesla glede na podane pogoje! Geslo naj je podano kot argument programa. Veljavna gesla morajo zadoščati naslednjim pogojem:

1) Minimalna dolžina naj je osem znakov;

2) Vsaj dva znaka morata biti numerična znaka; in

3) Vsebovati mora vsaj dva od naslednjih ne-alfanumeričnih znakov: @, #, $ ali %.

Komentarji

  • 1.Napišite program v lupini, ki pregleda datoteko /etc/passwd in izpiše vse lupine, ki jih uporabniki sistema uporabljajo, ter koliko uporabnikov uporablja posamezno lupino.

    cut -f 7 -d : /etc/passwd | sort -r | uniq -c >bla
    cut -c 1-5 bla > num
    cut -c 6- bla | grep "/" > shell
    echo brez lupine >>shell
    paste shell num
    rm num
    rm shell

    Napišite program v lupini, ki vsake pet minut preveri, če se na sistemu pojavi nek proces in ga poskusa ubiti. Ime procesa podamo v ukazni vrstici

    # uporaba : ubij ime_procesa
    while [1]
    do
    sleep 300
    if [`ps -ef | grep $1 | cut -c1-4`]
    killall $1
    fi
    done
  • ps -ef |grep $1 ..etc ni potrebno ker pid enostavno dobis z `pidof $ime_procesa`
  • sam fora je k nesmeš killall uporabt ampak morš prou KILL. k drgač je itak u izi napišeš sam killall $1 pa je :)
  • sam fora je v tem da ti je isti "crap".. kill -9 `pidof ime_procesa` :)
    ce je pa vec zagnanih procesov/pidov pa das v eno zanko zgornji ukaz pa je
  • aha hvala :)
  • za domačo mamo za napisat slednja 2 program, jih zna kdo razrešit, in obrazložit, kaj določeni deli pomenijo ?

    1.)V bash lupini napišite program izpisi.sh, ki v danem direktoriju in rekurzivno v vseh poddirektorijih izpiše imena vseh datotek, ki so daljše od dane dolžine. Prvi argument programa naj bo dolžina v bytih, drugi pa ime direktorija.

    2.) V bash lupini napišite program, ki vodi evidenco o gostoti uporabnikov na sistemu, Program naj vodi evidenco za vsakih 30 sekund in za ne več kot 2 dni nazaj. Evidenca naj bo shranjena v datotekah dnaes in včeraj v formatu :
    Cas: 11:50:10 Uporabnikov: 3
    Cas: 11:50:45 Uporabnikov: 5

    če jih kdo zna, naj jih razreši, hvala že vnaprej! wink
  • Tudi jaz bi prosil za pomoč pri eni nalogi:

    Napišite skripto, ki bo delala varnostne kopije podatkovne baze vsak dan ob v naprej določeni uri (parameter). Čas preberite 1x na minuto (uporaba ukaza sleep). Skipta se naj avtomatsko naloži ob zagonu računalnika (kot servis).
    Namen naloge je, da se seznanite z uporabo Init in RC.

    backup baze se naredi z mysqldump, jasno mi ni ostalo:)
    hvala za pomoč
  • Če smem vprašati, kaj je to za ena smer?
    Ker se sliši zelo zanimivo, vedno trdim da imamo na SŠ premalo programiranja (sploh pa OK same)
  • Živjo!

    Potreboval bi vašo pomoč. Rad bi rešil spodnjo nalogo:

    Napišite program v lupini, ki izpiše, kolikokrat ter koliko časa (skupno) so bili uporabniki v nekem času prijavljeni na sistemu. Čas podamo z dvema datumoma kot argumenta ukazne vrstice.

    Primer izpisa:

    $ prijava 15/10 20/10
    vaje 5x 1 dan 12:34
    demsared 11x 5 dni 1:12
    blazlena 1x 0 dni 0:01
    ...

    * pri reševanju preučite ukaz last

    Razmišljal sem, da bi izhod ukaza last preusmeril v tekstovno datoteko (prijave.txt) in iz nje izluščil uporabnike, ter seštel njihov skupni čas prijave ter število prijav. A se mi zatakne že pri branju iz datoteke. Nevem kako bi prebral določenega uporabnika iz datoteke ter seštel kolikokrat se je prijavil v določenem obdobju.

    Hvala za vašo pomoč.
  • Napišite skripto Bash, ki našteje sistemske uporabnike in pripadajoče skupine iz datotek '/etc/passwd' in '/etc/group'. Za vsakega uporabnika izpišite njgovo ime, uporabniško identifikacijo UID in vse skupine, v katerih je uporabnik član.

    Uporabiti moramo grep, awk,... Any idea ?
  • se mi zdi da sem ze nekje na forumu vido isto nalogo kot jo je galimx napisal.. :) sicer pa bi blo vrei ce se naucis uporabljat google :)
    --
    aja to je drugi clovek s skoraj istim vprasanjem na istem postu.. :)
  • galimx Član
    uredil/-a 7. March, 2011
    Imam eno vprašanje.
    "Napišite niz ukazov, ki poiščite vse pojavitve datoteke 'core' na sistemu. Izhod niza je datoteka '~/corefiles'. Izpise napak, ki se pojavijo pri izvajanju ukaznega niza, ignorirajte."

    naredil sem:
    find / -name core
    in potem mi izpiše . A je to pravilno? Kako pa naredim izhod niza.. ?
    probal sem
    find / -name core mkdir ~/corefiles
    pa ne deluje..

    EDIT: sem ze ugotovil
    find / -name core >corefiles ....

    A drugi primer zna kdo ?


    Potem pa še me zanima ta naloga, če bi mi lahko kdo pomagal:
    "Napišite niz ukazov, ki izpiše aktivne procese prijavljenega uporabnika na sistemu. Tudi v tem primeru izpišite vse procese, določite njihovo število in na koncu dodajte še statusno vrstico z naslednjim tekstom "Uporabnik u je aktiviral n procesov"

    hvala lepa
Za komentiranje se prijavite ali pa se vpišite.