Dydaktyka:
FeedbackTe zadania można rozwiązać na wiele sposobów. Do części zadań jest podany więcej niż jeden sposób rozwiązania.
Zadanie 1
Wyświetl na ekranie prędkości taktowania procesorów używając pliku /proc/cpuinfo
.
grep MHz /proc/cpuinfo | cut -f2 -d ':' | tr -d ' ' grep MHz /proc/cpuinfo | cut -b 12- grep MHz /proc/cpuinfo | tr -s ': ' '\n' | grep '\.' awk '/MHz/ {print $NF}' /proc/cpuinfo
Zadanie 2
Kombinacje praw dostępu w katalogu /etc/
.
ls -l | tail -n +2 | cut -b 2-10 | sort | uniq -c vdir | tail -n +2 | cut -b 2-10 | sort | uniq -c stat /etc/* | grep '(' | cut -d '(' -f 2 | cut -d '/' -f 1 | sort | uniq -c stat /etc/* | grep '(' | cut -d '(' -f 2 | cut -b 7-15 | sort | uniq -c
Zadanie 3
Ośmioznakowe słowa kończące się na less
.
cut -f1 -d\/ /usr/share/myspell/en_GB.dic | grep '^....less$' cut -f1 -d\/ /usr/share/myspell/en_GB.dic | grep -P '^\w{4}less$' grep less /usr/share/myspell/en_GB.dic | tr '/' '\t' | cut -f1 | grep '^....less$' sed -n 's|^\(....less\)\(/.*\)*$|\1|p;' /usr/share/myspell/en_GB.dic perl -pe 'print "$1\n" if /^(....less)\W/; undef $_' /usr/share/myspell/en_GB.dic
Zadanie 4
Słowa kończące się na more
i zaczynające się z małej litery.
cut -f1 -d\/ /usr/share/myspell/en_GB.dic | grep 'more$' | grep '^[a-z]'
Zadanie 5
Losowa 32-cyfrowa liczba szesnastkowa z /dev/urandom
.
cat /dev/urandom | tr -dc '0-9a-f' | head -c 32 cat /dev/urandom | head -c 16 | od -x | cut -s -f 2- -d ' '| tr -d ' '
Zadanie 6
Lista 10 haseł o długości 8 znaków (małe litery i podkreślnik) z /dev/urandom
.
cat /dev/urandom | tr -dc 'a-z_' | fold -w 8 | head cat /dev/urandom | tr -dc 'a-z_' | head -c 80 | fold -w 8
Zadanie 7
Ile jest uruchomionych procesów bash
.
pidof bash | wc -w pgrep '^bash$' | wc -l ps -e | grep '\bbash\b' | wc -l pgrep bash | wc -l # te polecenia policzą też procesy które ps -e | grep bash | wc -l # mają w nazwie bash, ale nie są bashem
Zadanie 8 5 najczęściej się powtarzających poleceń z historii powłoki (z argumentami).
sort ~/.bash_history | uniq -c | sort -n | tail -n5 history | cut -b 8- | uniq -c | sort -n | tail -n5
Zadanie 9
5 najczęściej się powtarzających nazw programów z historii poleceń powłoki,
uwzględniając że w potoku uruchomionych jest kilka programów oddzielonych przez
|
.
cat ~/.bash_history | tr '|' '\n' | sed 's/^\s*//' | cut -f1 -d ' ' | uniq -c | sort -n | tail -n5 cat ~/.bash_history | tr '|' '\n' | awk '{print $0}' | uniq -c | sort -n | tail -n5
Uwaga: te rozwiązania nie traktują właściwie znaku |
będącego częścią
zamkniętego w cudzysłowy tekstu, również nie biorą pod uwagę command / process
substitution. Pełne rozwiązanie wymagałoby napisania własnego leksera i parsera.
Zadanie 10
5 najpopularniejszych rozszerzeń (wszystko po pierwszej kropce) w /var/log/
.
ls -d /var/log/*.* | cut -d . -f 2- | sort | uniq -c | sort -rn | head -n5 ls /var/log | cut -s -d . -f 2- | sort | uniq -c | sort -rn | head -n5 ls /var/log | grep '\.' | cut -d . -f 2- | sort | uniq -c | sort -rn | head -n5
Zadanie 11
5 najpopularniejszych rozszerzeń (wszystko po ostatniej kropce) w /var/log/
.
ls -d /var/log/*.* | rev | cut -d . -f 1 | rev | sort | uniq -c | sort -rn | head -n5 ls /var/log | rev | cut -s -d . -f 1 | rev | sort | uniq -c | sort -rn | head -n5 ls /var/log | grep '\.' | rev | cut -d . -f 1 | rev | sort | uniq -c | sort -rn | head -n5
Zadanie 12 Trzech użytkowników (poza rootem) z największą liczbą procesów.
ps --no-headers -e -o user | grep -v root | sort | uniq -c | sort -rn | head -n3 ps -e -o user | tail -n+2 | grep -v root | sort | uniq -c | sort -rn | head -n3 ps -ef | cut -f1 -d ' ' | tail -n+2 | grep -v root | sort | uniq -c | sort -rn | head -n3
Zadanie 13
Plik nagłówkowy w /usr/include/
w którym jest deklaracja funkcji SHA512_Init
.
grep -lr SHA512_Init /usr/include/ grep -r SHA512_Init /usr/include/ | cut -f 1 -d ':'
Zadanie 14
Ile znaków #
jest w pliku /usr/include/openssl/sha.h
.
cat /usr/include/openssl/sha.h | tr -dc '#' | wc -c
Zadanie 15
Wyświetl /usr/include/openssl/sha.h
pomijając linie zaczynające się od #
.
grep -v '^#' /usr/include/openssl/sha.h
Zadanie 16
Protokoły które mają nazwane porty w /etc/services
.
cat /etc/services | tr -s '\t ' '\t' | cut -f 2 | grep '^[0-9][0-9]*/' | cut -f 2 -d '/' | sort | uniq awk '$2 ~ /[0-9]+\// {print $2}' /etc/services | cut -f 2 -d '/' | sort | uniq awk '$2 ~ /[0-9]+\// {sub(/[0-9]+\//, "", $2); print $2}' /etc/services | sort | uniq cat /etc/services | grep -v '^#' | tr -s '\t ' '\t' | cut -sf2 | cut -sf2 -d / | sort | uniq
Zadanie 17 Liczba ukrytych plików i katalogów w katalogu domowym.
ls -d ~/.* | wc -l ls -A ~ | grep '^\.' | wc -l
Zadanie 18
Ilość wysłanych i odebranych bajtów z wyników polecenia ip --statistics link show br0
.
ip --statistics link show br0 | tail -n3 | grep -v bytes | tr -s ' ' '\t' | cut -f 2 ip --statistics link show br0 | tail -n3 | grep -v bytes | awk '{print $1}' ip --statistics link show br0 | grep bytes -A1 | grep -v bytes | awk '{print $1}'
Zadanie 19 Pięć identyfikatorów procesów w systemie które mają największą ilość procesów potomnych.
ps -el | tail -n +2 | tr -s ' ' '\t' | cut -f 5 | sort | uniq -c | sort -nr | head -n5 | cut -b9- ps --no-headers -eo ppid | sort | uniq -c | sort -nr | head -n5 | cut -b9-
Zadanie 20 Znając identyfikator PID wyświetl nazwę programu z argumentami.
ps -ef | tr -s ' ' | cut -f 2,8- -d ' ' | grep '^//PID//' | cut -f2- -d' ' ps --no-headers -o cmd -p //PID//
Zadanie 21
Liczba użytkowników w /etc/passwd
z powłoką ustawioną na bash
.
grep '/bin/bash$' /etc/passwd | wc -l
Zadanie 22
Lista plików nagłówkowych wymaganych przez wszystko w /usr/include/infiniband/
.
grep -r '^[[:space:]]*#include ' /usr/include/infiniband/ | tr '<>"' '"' | cut -f 2 -d '"' | sort | uniq cat /usr/include/infiniband/* | grep '^[[:space:]]*#include ' | tr '<>"' '"' | cut -f 2 -d '"' | sort | uniq
Zadanie 23
Same czasy odpowiedzi z wyników ping -i 0.5 -c 10 put.poznan.pl
.
ping -i 0.5 -c 10 put.poznan.pl | grep from | cut -d '=' -f 4 | cut -d' ' -f 1 # uruchomienie komendy ze zmieniony buforowaniem biblioteki standardowej C wypisuje wyniki na bieżąco stdbuf -oL bash -c "ping -i 0.5 -c 10 put.poznan.pl | grep from | cut -d '=' -f 4 | cut -d' ' -f 1"