niedziela, 19 października 2008

Jeden za wszystkich: Multixterm

Zarządzanie systemem linuksowym, z którego korzysta bardzo wielu użytkowników może być wymagające. Dodatkowo gdy uwzględnimy fakt, że takich systemów mamy kilkadziesiąt, to bez wprowadzenia dodatkowych narzędzi, zarządzanie tym wszystkim może być uciążliwe.

Jako przykład weźmy pod uwagę sale komputerowe na Uczelni. Zakładając, że mamy jedno konto, z którego korzystają wszyscy studenci, wystarczy przed każdymi zajęciami skasować i ponownie utworzyć konto student. Możemy to zrobić za pomocą poleceń:

sudo deluser studentsudo adduser student

Bardzo pomocne w tym celu może okazać się połączenie przez SSH, które pozwoli nam na wykonanie tych operacji z jednego komputera, po kolei na wszystkich maszynach. Wcześniej jednak musimy zainstalować serwer SSH, na każdym komputerze z osobna, co niestety będzie wymagało zalogowania się na konto z uprawnieniami administratora i wpisania następującego polecenia w okienku terminala:

sudo apt-get install ssh openssh-server

Pomimo tego, że mamy już skonfigurowany SSH i możemy podłączyć się do każdego komputera nie ruszając się z miejsca, to problem ciągle istnieje. Musimy powtórzyć te same operacje, dla każdej maszyny osobno.

Rozwiązaniem tego problemu może być skrypt Multixterm, będący częścią pakietu Expect. Instalację przeprowadzamy wpisując w terminalu:

sudo apt-get install expect expect-dev expectk

Następnie przygotowujemy skrypt Multixterm, który po domyślnej instalacji w Ubuntu 8.04 z niewiadomych przyczyn znajduje się w archiwum (w Ubuntu 6.10 było wszystko OK).

sudo gunzip /usr/share/doc/expect-dev/examples/multixterm.gz
sudo chmod +x /usr/share/doc/expect-dev/examples/multixterm
sudo ln -s /usr/share/doc/expect-dev/examples/multixterm /bin/multixterm

W tym momencie możemy przetestować jego działanie wpisując następujące polecenie:

multixterm -xc "ssh administrator@%n" adres_ip_1 adres_ip_2 adres_ip_n

Użytkownika administrator zmieniamy na innego, który ma możliwość zarządzania komputerem.

Polecenie to otwiera otwiera nam tyle okenek terminala ile podaliśmy adresów IP. Dodatkowo pojawia się jedno okienko główne do wpisywania poleceń.


Jest już całkiem nieźle. Mamy to o co nam chodziło od samego początku - zarządzamy wszystkimi komputerami tak, jakbyśmy pracowali na jednym. Jest jeszcze jeden mały problem. Podczas zakładania użytkownika, program adduser odpytuje nas o informacje o użytkowniku, takie jak login, hasło, i inne. Najlepiej jakby udało się to w jakiś sposób ominąć i wpisać wszystko w linii komend. Takie możliwości ma inny skrypt do zakładania użytkowników: useradd. Jego użycie znacznie ułatwi nam przygotowanie automatycznego skryptu do czyszczenia konta studenta. Gotowy skrypt może wyglądać np. tak:

#!/bin/bash

echo "Kasowanie uzytkownika student"
sudo rm -r /home/student/
sudo deluser student
sudo delgroup student

echo "Dodawanie uzytkownika student"
sudo useradd -m -d /home/student -s /bin/bash -c "student" student
(echo "student:haslo")|sudo chpasswd
sudo rm /home/student/Desktop/*
sudo rm /home/student/Pulpit/*

Taki skrypt możemy zapisać na każdym komputerze w katalogu domowym użytkownika z uprawnieniami administratora i po zalogowaniu za pomocą Multixterm wystarczy go uruchomić.

Na koniec warto skonfigurować połączenie SSH w taki sposób, aby łączyć się z poszczególnymi komputerami bez podawania hasła. Więcej można o tym przeczytać na polskim forum Ubuntu w howto "ssh tips".

Prawdopodobnie cały ten proces da się jeszcze bardziej usprawnić. Jeśli macie jakieś pomysły to proszę o podpowiedź w komentarzu.

2 komentarze:

Marcin Kubala pisze...

Muszę przyznać, że wcześniej nie znałem multixterm'a o jego istnieniu dowiaduje się dopiero od Pana. To narzędzie ma potencjał. Z początku wydawało mi się że możnaby zastąpić ssh odpowiednimi wpisami do ~/.bashrc i ~/.bash_logout, jednak to powodowałoby czyszczenie katalogu użytkownika za kazdym razem gdy zamkniemy konsolę. Zaprzęgnięcie menedżera zadań okresowych i zsynchronizowanie go z podziałem godzin jest mało elastyczne, bo: plan może ulec zmianie, ktos może 'wypożyczyć' pracownie, lub studenci będa musieli zostać dłużej i nagle w połowie pracy nieszczęście. Jeśli wpadnie mi jakiś alternatywny pomysł na zrealizowanie zadania bez ingerencji ssh napisze o tym.

Zapraszam również na http://hwastu.blogspot.com/ Od czasu do czasu zamierzam umieszczać tam informacje nt. ciekawszych zagadnień, którymi aktualnie sie zajmuję.

Pozdrawiam

Rafał Petryniak pisze...

Oczywiście najlepszym rozwiązaniem byłoby założenie dla wszystkich studentów imiennych kont na serwerze, a następnie umożliwienie zalogowania się na dowolnym komputerze na sali. Dzięki temu zachowywane byłyby ustawienia i pliki pomiędzy zajęciami. Jest to sensowne, gdy mamy mniejszą liczbę studentów. Natomiast na salach, o których piszę, tych studentów pracuje kilkaset w semestrze. Jak do tego podejść technicznie na razie nie wiem.

Co do Multixterm, to ma on jeszcze jedną zaletę, o której zapomniałem wspomnieć we wpisie. Komendy możemy wydawać nie tylko globalnie za pomocą okienka głównego, ale również osobno, w każdym otwartym okienku terminala.

Prześlij komentarz