Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 KB | None | 0 0
  1. #! /bin/csh
  2. #
  3. # Meno: Beno David, kr. 2
  4. # Kruzok: 02
  5. # Datum: pripravne_csh (id: 6)
  6. # Zadanie: zadanie23
  7. #
  8. # Text zadania:
  9. #
  10. # Zistite, ktori pouzivatelia sa hlasia na osu v noci (teda cas prihlasenia je
  11. # od 22:00 do 05:00). Do uvahy berte len ukoncene spojenia za poslednu dobu
  12. # (odkedy system zaznamenava tieto informacie).
  13. # Ak bude skript spusteny s parametrom -n <pocet>, zistite, ktori pouzivatelia
  14. # sa na osu prihlasili v noci viac ako <pocet> krat.
  15. # Dodrzte format vystupu uvedeny v priklade.
  16. # Pomocka: pouzite prikaz last
  17. #
  18. # Syntax:
  19. # zadanie1.csh [-h] [-n <pocet>]
  20. #
  21. # Format vypisu bude nasledovny:
  22. # Output: '<meno pouzivatela> <pocet nocnych prihlaseni> <datum a cas posledneho
  23. nocneho prihlasenia>'
  24. #
  25. # Priklad vystupu:
  26. # Output: 'sedlacek 5 03-23 23:12'
  27. # Output: 'tubel 2 03-23 22:55'
  28. # Output: 'kubikm 4 03-23 02:31'
  29. #
  30. #
  31. # Program musi osetrovat pocet a spravnost argumentov. Program musi mat help,
  32. # ktory sa vypise pri zadani argumentu -h a ma tvar:
  33. # Meno programu (C) meno autora
  34. #
  35. # Usage: <meno_programu> <arg1> <arg2> ...
  36. # <arg1>: xxxxxx
  37. # <arg2>: yyyyy
  38. #
  39. # Parametre uvedene v <> treba nahradit skutocnymi hodnotami.
  40. # Ked ma skript prehladavat adresare, tak vzdy treba prehladat vsetky zadane
  41. # adresare a vsetky ich podadresare do hlbky.
  42. # Pri hladani maxim alebo minim treba vzdy najst maximum (minimum) vo vsetkych
  43. # zadanych adresaroch (suboroch) spolu. Ked viacero suborov (adresarov, ...)
  44. # splna maximum (minimum), treba vypisat vsetky.
  45. #
  46. # Korektny vystup programu musi ist na standardny vystup (stdout).
  47. # Chybovy vystup programu by mal ist na chybovy vystup (stderr).
  48. # Chybovy vystup musi mat tvar (vratane apostrofov):
  49. # Error: 'adresar, subor, ... pri ktorom nastala chyba': popis chyby ...
  50. # Ak program pouziva nejake pomocne vypisy, musia mat tvar:
  51. # Debug: vypis ...
  52. #
  53. # Poznamky: (sem vlozte pripadne poznamky k vypracovanemu zadaniu)
  54. #
  55. # Riesenie:
  56.  
  57.  
  58. @ n = 0
  59. while($#argv>0)
  60.  
  61. if(("$argv[1]" != "-h") && ("$argv[1]" != "-n")) then
  62. echo "Error: 'zly prepinac'" > /dev/stderr
  63. exit 1
  64. endif
  65.  
  66. if($argv[1] == '-h') then
  67. echo "Zadanie (C) Beno David"
  68. echo ""
  69. echo "Usage: test <-h> <-n> <pocet>"
  70. echo " <-h>: help"
  71. echo " <-n>: pocet prihlaseni"
  72. exit 0
  73. endif
  74.  
  75. if($argv[1] == '-n') then
  76. shift argv
  77. if($#argv == 0) then
  78. echo "Error: 'Za n musi byt cislo'" > /dev/stderr
  79. exit 1
  80. endif
  81. expr "$argv[1]" + 1 >& /dev/null
  82. if($status != 0) then
  83. echo "Error: 'Za n musi byt cislo'" > /dev/stderr
  84. exit 1
  85. endif
  86. set n=$argv[1]
  87. endif
  88.  
  89.  
  90. shift argv
  91. end
  92.  
  93. if($n < 0) then
  94. echo "Error: '-n': zaporna hodnota" > /dev/stderr
  95. exit 1
  96. endif
  97.  
  98. foreach meno(`last | cut -d " " -f1 | sort | uniq | grep -v "shutdown" | grep -v ^$ | grep -v "wtmp"`)
  99. set pocet=`last | tr -s " " | grep -v "still logged in" | grep "^$meno " | rev | cut -d " " -f4,5,6 | rev | grep '2[23]:..\|0[01234]:..' | wc -l`
  100.  
  101. if($pocet > $n) then
  102.  
  103. set posl = `last | tr -s " " | grep -v "still logged in" | grep "^$meno " | rev | cut -d " " -f4,5,6 | rev | grep '2[23]:..\|0[01234]:..' | head -1`
  104. set mesiac = $posl[1]
  105.  
  106.  
  107. if($mesiac == "Jan") then
  108. set mesiac = "01"
  109. else if($mesiac == "Feb") then
  110. set mesiac = "02"
  111. else if($mesiac == "Mar") then
  112. set mesiac = "03"
  113. else if($mesiac == "Apr") then
  114. set mesiac = "04"
  115. else if($mesiac == "May") then
  116. set mesiac = "05"
  117. else if($mesiac == "Jun") then
  118. set mesiac = "06"
  119. else if($mesiac == "Jul") then
  120. set mesiac = "07"
  121. else if($mesiac == "Aug") then
  122. set mesiac = "08"
  123. else if($mesiac == "Sep") then
  124. set mesiac = "09"
  125. else if($mesiac == "Oct") then
  126. set mesiac = "10"
  127. else if($mesiac == "Nov") then
  128. set mesiac = "11"
  129. else if($mesiac == "Dec") then
  130. set mesiac = "12"
  131. endif
  132.  
  133.  
  134. set den = $posl[2]
  135.  
  136. if($den == "1") then
  137. set den = "01"
  138. else if($den == "2") then
  139. set den = "02"
  140. else if($den == "3") then
  141. set den = "03"
  142. else if($den == "4") then
  143. set den = "04"
  144. else if($den == "5") then
  145. set den = "05"
  146. else if($den == "6") then
  147. set den = "06"
  148. else if($den == "7") then
  149. set den = "07"
  150. else if($den == "8") then
  151. set den = "08"
  152. else if($den == "9") then
  153. set den = "09"
  154. endif
  155. set cas=$posl[3]
  156. echo "Output: '$meno $pocet $mesiac-$den $cas'"
  157. endif
  158. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement