S využitím utility netcat (nc) napište skript fungující jako jednoduchý síťový server
poslouchající na TCP portu 2505 a jeho klient.
Po připojení na port 2505 pošle server klientu řádek netslay/1.0 ready a bude čekat na příkaz (text ukončený
novou řádkou). Server podporuje čtyři příkazy:
quit — Po uzavření aktuálního TCP spojení se server ukončí (není-li tento příkaz použit, po
ukončení spojení server čeká na další).list cmd — Server vrátí klientu 200 List follows a seznam PIDů a celou příkazovou
řádku procesů v systému, které se jmenují cmd (oba sloupce jsou odděleny tabulátorem, nemají žádnou hlavičku).
Nevypisují se procesy, které běži pod uživatelem root.term PID — Procesu s daným PID pošle server signál TERM. Pokud v systému
žádný takový proces neexistuje, vrátí server klientu 400 No process. Pokud
proces beží pod uživatelem root, vrátí 400 Process owned by root. Pokud se poslání signálu nepodařilo,
vrátí 500 Unable to terminate, v pozitivním případě 200 Process terminated.kill PID — Analogicky jako v předchozím případě, jen posílá signál KILL
(odpovědi serveru se podle toho také přizpůsobí).Klient bude mít jako první parametr název stroje, na který se má připojit a jako druhý a třetí parametr příkaz odpovídající
příkazům a parametrům serveru (quit, list, term, kill). Po připojení na server
nejprve ověří identifikační řetězec (netslay/1.0 ready), pošle příkaz a čeká na odpověď. Stavovou odpověď serveru
(200, 400 apod.) vypíše na chybový výstup (je-li kód jiný než 200, nastaví také nenulovou návratovou
hodnotu), samotnou informační odpověď serveru vypíše na standardní výstup.
Kromě toho bude ještě klient sám implementovat příkaz softkill cmd, který nejprve pošle všem procesům
cmd na serveru signál TERM a pokud některý z nich po 15 sekundách bude stále ještě běžet, tak také signál KILL.
Podaří-li se všechny takové procesy zabít, bude návratová hodnota klienta 0, jinak jiná hodnota.
Termín odevzdání: 17. 5. 2006 19:00 CEST