- •Отчет по учебной практике по операционной системе Unix
- •1 Основные понятия unix
- •1.1 Интерфейс пользователя ос unix
- •1.2 Файловая система
- •1.3 Текстовый редактор
- •1.4 Основные утилиты ос unix
- •1.5 Установка конфигураций сети
- •1.6 Настройка с помощью network manager'а
- •1.7 Сетевые инструменты
- •1.8 Администрирование сети компьютеров
- •1.9 Получение сообщений от net send
1.9 Получение сообщений от net send
Не секрет, что во многих организациях, использующих Linux наравне с Windows, есть небольшая проблема. Проблема заключается в том, что сообщения, отправляемые привычной для администраторов Windows командой net send, не принимаются компьютерами, на которых установлен Linux. В этом HOWTO описан простой способ создания системы приема сообщений net send на Linux-декстопе под управлением Ubuntu. Принимаемые сообщения будут появляться в небольшом автоматически появляющемся окне. Способ проверен на Ubuntu 7.04 и на Ubuntu 7.10, и успешно работает. Так же, без каких либо переделок, он должен подойти и для более поздних версий.
1. Убедиться, что установлены пакеты samba, samba-common, smbclient, zenity. Это можно сделать через Synaptic. Если какой-либо пакет не установлен, установить.
Пакет samba устанавливает samba-сервер, который как раз и отслеживает поступление netsend сообщений. Программа smbclient помимо поддержки работы в Windows-сетях позволяет отправлять с Linux-компьютера netsend сообщения. Как это делать будет написано ниже. Пакет samba-common устанавливает необходимые библиотеки для работы сервера samba и программы smbclient. Пакет zenity содержит программу zenity, которая умеет показывать на экране простые графические интерфейсы. Мы будем ее использовать для того, чтобы вывести красивое окошко с пришедшим сообщением.
2. Под правами рута открыть на редактирование файл /etc/samba/smb.conf, и в начало секции [ global ] добавить строки
dos charset = 866
unix charset = UTF8
display charset = UTF8
message command = /bin/sh -c '/usr/bin/getnetsend.sh %s'
Данное действие справедливо для свежеустановленного пакета samba. Если пакет samba уже был установлен и подвергался настройке, необходимо убедиться, что каждая из приведенных опций не встречается в тексте файла /etc/samba/smb.conf где-нибудь ещё.
В момент прихода сообщения netsend, сервер samba кладет в каталог /tmp файл с текстом сообщения. Затем выполняет команду, прописанную в опции message command. При вызове данной командной строки, вместо символов %s, будет подставлено имя файла с текстом сообщения.
3. Под правами рута открыть на редактирование файл /etc/profile, и в конец файла дописать строку
xhost +local:
Данная команда обязательно должна выполниться после запуска X-сервера. По умолчанию, X-сервер настроен так, что соединяться с ним и открывать окна могут только программы от пользователя, зарегистрированного в данный момент в системе. Сервер samba работает под системным пользователем nobody (так же как и, например программа cron). Поэтому любые попытки запустить X-приложение из samba будут отвергаться X-сервером.
Команда xhost +local:, запущенная от текущего пользователя, настраивает X-сервер так, что он начинает принимать локальные (в пределах компьютера) соединения от любого пользователя. Таким образом, X-программа zenity, которая вызывается из скрипта /usr/bin/getnetsend.sh из-под пользователя nobody, сможет нормально работать.
Для систем Ubuntu и Debian, размещать команду xhost +local: нужно именно в файле /etc/profile. Команды из этого файла выполняются после того, как произошел логин пользователя в оконную систему (справедливо для KDE, GNOME, на других DE не проверялось). По неизвестным причинам, файл /etc/X11/xinit/xinitrc, который специально предназначенн для выполнения команд в момент входа в DE, в системах Ubuntu и Debian не работает.
4. Создать под правами рута в каталоге /usr/bin файл getnetsend.sh следующего содержания
#!/bin/sh
# getnetsend.sh v.1.04
# Получаем номера активных дисплеев.
# Это нужно, чтобы сообщение открывалось не только на дисплее :0, если в системе
# одновременно открыто несколько сессий с разными пользователями
disp=`ps -ef | awk '$8 ~ /X$/ {print $9}'`
for n in $disp
do
export DISPLAY=${n}
zenity --text-info --title="Net message" --filename $1 &
done
Не забудьте назначить этому файлу права 755! По-умолчанию такой файл обычно получает права 700, что дает ему право работать только от root, и сообщения не будут видны! Назначить права можно командой
chmod 755 /usr/bin/getnetsend.sh
В системе Ubuntu 7.04 строка процесса X-сервера имеет такой формат
root 5458 5432 13 14:29 tty7 00:15:48 /usr/bin/X -br -nolisten tcp :0 vt7 -auth /var/run/xauth/A:0-AKBbhb
то есть номер дисплея (:0) расположен в 12-м поле данной строки. А в системе Ubuntu 7.10 в строке процесса X-сервера ключи расположены в другой последовательности
root 5458 5432 13 14:29 tty7 00:15:48 /usr/bin/X :0 -br -nolisten tcp vt7 -auth /var/run/xauth/A:0-AKBbhb
то есть, номер дисплея расположен в 9-м поле.
Таким образом, первая команда в скрипте getnetsend.sh должна соответствовать формату, выдаваемому программой ps, иначе сообщения не будут видны.
Ubuntu 7.04:
disp=`ps -ef | awk '$8 ~ /X$/ {print $12}'`
Ubuntu 7.10:
disp=`ps -ef | awk '$8 ~ /X$/ {print $9}'`
Чтобы выяснить, правильно ли написана команда, выполните ее отдельно в консоли (при работающем X-сервере, само собой). Если в ответ вы увидите :0 (или список номеров дисплеев при открытых нескольких сессиях), значит, все в порядке.
5. Перезагрузить компьютер, войти под любым пользователем, и убедиться что приём сообщений работает.
Проверку, как все работает, можно начать с того, чтобы компьютер отправил netsend сообщение самому себе. Для этого выполните такую команду (это аналог команды net send в Linux)
echo "Текст сообщения" | smbclient -M имя_компьютера
где имя_компьютера - это сетевое имя данного компьютера (не IP-адрес!). Обратите внимание, что между командами используется перенаправление потока ( | ), а не файлового ввода ( > ). На экране должно появиться окошечко с текстом сообщения, так же, как это происходит и в Windows. Если сообщение не появляется, значит вы что-то сделали неправильно, и нужно начинать отладку. Например, можно включить в начало файла getnetsend.sh команду
echo "Getnetsend running" >> /tmp/getnetsendlog.txt
после чего снова отправить сообщение и посмотреть файл /tmp/getnetsendlog.txt, создался ли он вообще, и есть ли в нем строка «Getnetsend running». Если его нет, то скрипт вообще не вызывается самбой. Если он есть, то скрипт не может соединиться с X-сервером, чтобы показать окошечко. Дальше думайте сами, что вы сделали неправильно.
Если сообщение пришло, значит у нас все работает. Теперь пробуем отправить сообщение с Windows. На Windows-компьютере даем команду
net send имя_компьютера "Текст сообщения"
и если увидели сообщение, то радуемся. Если не увидели, значит Linux-компьютер и Windows-компьютер находятся в разных рабочих группах или в разных доменах.
ЗАКЛЮЧЕНИЕ
За период прохождение практики, в операционной системе Unix. Я узнал:
Что такое интерфейс ос Unix и как с ним работать. И что он из себя представляет. Разобрался с интерфейсом, меню и приложениями.
Работал с файловой системой. Проработал все в терминале, связанные с файловой системой ос Unix. Научился работать с файлами и папками. Удалять, перемещать каталоги с файлами.
Понял, что из себя представляет текстовый редактор в unix. Как его вызывать через терминал. Работа с текстовым редактором, все просто и понятно.
Научился настраивать сеть, проверять настройки сети, настраивать шлюз и DNS. Работал с Network manager. Узнал, что такое сетевые инструменты.
Администрировал сеть ос Unix. Отправлял сообщения на другие ОС, так же и на ос Unix.
Работал с клиентским серверным приложениям.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРА
Эви Немет, Гарт Снайдер, Трент Хейн, Бэн Уэйли. Unix и Linux: руководство системного администратора, 4-е издание = Unix and Linux System Administration Handbook, 4ed. — М.: «Вильямс», 2011. — 1312 с. — ISBN 978-5-8459-1740-9
Робачевский А. М., Немнюгин С. А., Стесик О. Л. Операционная система UNIX. — 2-е изд. — СПб.: БХВ-Петербург, 2010. — 656 с. — ISBN 978-5-94157-538-1 УДК 681.3.06 ББК 32.973.26-018.2
Роберт Шимонски. Освой самостоятельно Unix. 10 минут на урок = Sams Teach Yourself Unix in 10 Minutes. — М.: «Вильямс», 2006. — С. 272. — ISBN 0-672-32764-3
Эрик C. Реймонд. Искусство программирования для Unix = Art of Unix Programming. — М.: «Вильямс», 2005. — С. 544. — ISBN 0-13-142901-9
Роббинс А. Unix. Справочник. Пер. с англ. 4-е издание. — "КУДИЦ-ПРЕСС", 2007. — С. 864. — ISBN 5-91136-031-4
Ссылки Настройка приема сообщений, отправленных из Windows через net send, в виде автоматически появляющегося окна (Ubuntu HOWTO). — оригинал статьи.
http://forum.ubuntu.ru/index.php?topic=27598.0