UnixMountainSkiFun

Unix Горы Лыжи

02-06-2008 14:55

Меняем рабочие станции


Встает вопрос, каким образом, имея под рукой весь перечисленный выше инструментарий, заменить вашу рабочую станцию на Linux-компьютер, и при этом по-прежнему иметь доступ ко всем необходимым файлам? Простейшим ответом может быть такой, -- установите KDE 2.0 или выше, и используйте ее встроенные возможности. Конечно же этот ответ отражает всего лишь мою предрасположенность к KDE-окружению. Вы можете выбрать такое окружение, какое больше нравится, и использовать соответствующие Linux-аналоги Windows-овским сетевым операциям.

Все диски, которые должны быть "подключены" (mapped) на стадии загрузки, помещаются в /etc/fstab. Если вы желаете, чтобы пользователь действительно чувствовал себя комфортабельно, то можете монтировать SMB-ресурсы точно так же, как если бы они были локальными дисками:

 # /etc/fstab: static file system information.
 #
 # <file system> <mount point> <type> <options>                                <dump> <pass>
 /dev/hda1       /             ext2   defaults,errors=remount-ro                  0      1
 //HOME/PCURTIS  /F:           smbfs  username=pcurtis,uid=pcurtis, gid=admin     0      1
 //HOME/SHARED   /G:           smbfs  username=pcurtis,uid=pcurtis, gid=admin     0      1

Убедитесь, что создали каталоги /F: и /G: перед тем, как перезагрузиться.

Диски могут быть подключены и отключены монтированием и демонтированием файловой системы SMB. Следующие два скрипта прекрасно справляются с такой работой, однако они должны быть выполнены от имени root. Если Вы желаете дать такую возможность непривилегированным пользователям, то потребуется установить возможность монтирования для пользователей и установить переменную mapped_root на каталог, доступный пользователям на запись.

Скрипт для подключения сетевого ресурса

 #!/bin/sh
 # maps a drive letter
 # usage: map F: //HOME/PCURTIS

 mapped_root="/mnt/"
 drive_dir="$mapped_root$1";
 share=$2

 # Check if this mount point is already used.
 if [ "$(mount | grep -c $drive_dir)" -ne 0 ]; then
    echo "Drive $1 is already mapped."
    exit
 fi

 # Make sure the mount point exists!
 mkdir -p $drive_dir

 # Mount the file system, using the current username from the environment.
 mount $share $drive_dir -t smbfs -o username=$USER,uid=$USER, gid=admin || \ \\
 echo "Unable to map drive!"

Скрипт для отключения сетевого ресурса

 #!/bin/sh
 # unmaps a drive letter
 # usage: unmap F:

 mapped_root="/mnt/"
 drive_dir="$mapped_root$1";
 share=$2

 # Check if the drive is mapped
 if [ "$(mount | grep -c $drive_dir)" -eq 0 ]; then
    echo "Drive $1 is not currently mapped."
    exit
 fi

 # Try a simple unmount. This will fail if some process has open files on the share.
 umount $drive_dir

 if [ $? -ne 0 ]; then
    # Prompt the user. This is a "dialog box" of sorts.
    echo -n "Someone may be using this drive. Continue (Y/N)? "
    read ok

    # If the user says Y, try to force the unmount.
    if [ "$ok" = "y" -o "$ok" = "Y" ]; then
       umount -f $drive_dir
    fi
 fi

 # Finally, verify the mount is really gone:
 if [ "$(mount | grep -c $drive_dir)" -ne 0 ]; then
    echo "Unable to unmap drive $1, giving up."
    exit
 fi

 # before removing the directory
 rmdir $drive_dir

Принтеры настраиваются добавлением записей в файл /etc/printcap (конечно если вы не используете другую print-архитектуру). Output-фильтр для каждого принтера должен быть скрипт по типу того, который мы обсуждали ранее, но подстроенный, чтобы соответствовать языку управления принтером. Скрипт не использует GhostScript, вместо этого он просто вызывает драйвер, поставляемый производителем принтера. Именно так и работает мой принтер Lexmark.

Чтобы отпечатать файл потребуется использовать такую команду:

 $ lp -d SALESPRINTER sales_report.ps

Не правда ли просто? Однако за этой командой кроется сложная цепочка событий, которые протекают в фоновом режиме.

Опишем этот процесс в общих чертах:

  • lp спулирует файл, отправляемый на печать, который потом подхватывается демоном lpd.
  • lpd находит в файле printcap структуру, которая имеет строку SALESPRINTER и перенаправляет, посредством pipe, спулированный файл вашему скрипту.
  • Ваш скрипт вызывает GhostScript, который выполняет всю грязную работу по преобразованию.
  • после этого скрипт перенаправляет, посредством pipe, PCL-результат утилите smbprint.
  • smbprint использует библиотеки Samba, чтобы отправить задание на печать через сеть.
  • Ваша страничка вылетает из лазерного принтера в департаменте продаж.

На любом из этих шагов может случиться неприятность, которая не даст процессу окончиться нормально. Если вы столкнулись с такими проблемами, то необходимо методично проверить каждый из перечисленных выше шагов.

<< Графические клиенты | Multi Tool Linux | Практикум >>


edit RightSideBar