Cislovani je (asi) stejne jako na cviceni. (1) Rozjezdovka - zdvojte vsechny radky na vstupu (co nejkratsim prikazem). (2) Na vstupu dostanete na samostatnych radcich jmena uzivatelu. Na tomto zaklade vygenerujte radky ve formatu, ktery pouziva /etc/passwd (se standardnim home adresarem /home/username, login shellem /bin/bash a prazdnym realname). UID uzivatelum pridelujte automaticky (napriklad sekvencne od nejake rozumne hodnoty). (3) Upravte ulohu (2) tak, aby na vstupu dostala pouze seznam uzivatelu a pomoci prikazu finger (finger user@host) si ziskala veskere dalsi informace ze serveru kam.mff.cuni.cz (provedte nejvyse jeden finger za sekundu, jinak server zafloodujete a ten se s Vami prestane bavit). Seznam uzivatelskych jmen najdete na http://kam.mff.cuni.cz/~pasky/users ----------------------------------------------------------------------- ----------------------------------------------------------------------- Reseni: (1) Umi to nekdo kratseji nez timto sedem? sed p (2) Neni na tom nic zvlastniho. Co treba: #!/bin/sh uid=1000 while read username; do echo "$username:x:$uid:100::/home/$username:/bin/bash" uid=$(($uid+1)) done (3) Tohle je uz alespon malinko zajimavejsi. Ve vystupu fingeru nas zajima prakticky jen tato radka: Username: pasky In real life: Petr Baudis Tedy: #!/bin/sh uid=1000 while read username; do sleep 1 realname=`finger $username@kam.mff.cuni.cz | \ sed -n 's/^.*In real life: //p'` echo "$username:x:$uid:100:$realname:/home/$username:/bin/bash" uid=$(($uid+1)) done sed -n nam zahodi defaultne vsechny radky, pro radek, na kterem uspeje substituce, se vsak provede prikaz 'p', ktery ho vytiskne. Substituci pak zahodime vse krome jmena, ktere je to, co nas zajima.