Search
Write a publication
Pull to refresh

Сетевое сканирование в терминале

Reading time2 min
Views3.4K
Здравствуйте!
Многим из Вас наверняка встречалась ситуация, когда надо реализовать сетевое сканирование в офисе через Linux. Мне досталась в некотором роде что-то подобное, но немного с другой стороны. Имеем: главный офис с главным терминальным сервером (Windows Server 2008R2), с десяток филиалов разбросанных по городу, подключаемых к серверу по VPN туннелям. В каждой точке одинаковое оборудование — нетбук HP mini (был с OpenSuse, но перебили на Debian 6.0) и МФУ HP LaserJet M1214. Задача: реализовать возможность сканирование пользователем документов на сервере. Так как на сервере для пользователя запущено одно единственное приложение (клиент 1С), то для него это должно выглядеть «нажал на кнопку — скан в базе».

Как это предполагалось сделать: МФУ сетевое и умеет сканировать по сети. Значит пользователь просто выбирает свой сканер и все хорошо. Не тут то было. Оказалось, что МФУ не могут работать, как сетевой сканер одновременно установленные на одном ПК (в данном случаи сервере). Какой бы сканер не выбирался, сканировался всегда последний установленные. Ответ техподдержки HP окончательно похоронил этот вариант. В вкратце ответ был: «Это невозможно».
Менять оборудование не вариант — дорого для нас (за наш счет практически, так как по ТЗ сканирование должно работать) и накладно для клиента.
Значит нужно заставить сканировать МФУ «локально» на нетбуке и передавать скан на сервер. При этом пользователь должен это делать из терминала — нажать на кнопку и ждать.
Хорошо, что есть такой проект как HPLIP. Первая попытка прикрутить МФУ к нетбуку прошла неудачно — версия в Debian не самая новая, и в ней нет поддержки HP LJ M1214. Пришлось качать и компилить последнюю версию. Тут МФУ замечательно распознавался и заработал, как на печать, так и на сканирование.
Дальше нужно было автоматизировать процесс сканирования. Для начало был создан простой скрипт, запускающий сканирование, сохранявший результат в /tmp/scan и тут же конвертировавший его в jpg.
scan.sh:
#!/bin/bash
mkdir /tmp/scan/
rm  /tmp/scan/*
scanimage --source Flatbed --format=pnm --resolution 100 --mode Gray  > /tmp/scan/scan.$1.pnm &&convert /tmp/scan/scan.$1.pnm /tmp/scan/scan.$1.jpg

Параметр для скрипта это суффикс названия.
Качество сканирования не очень, но для клиента достаточное. Один скан около 300-400 кб. Сканирует быстро и базу сильно не забивает.
Теперь необходимо заставить выполнятся этот скрипт удаленно из под терминала. Тут помог набор утилит замечательного проекта Putty. А точнее две утилиты — plink.exe и pscp.exe. Первая отсылает команду сканирования, а вторая забирает результат. В результате проб и ошибок был создан следущей bat файл:
c:\putty\plink.exe 192.168.%1.100 -l root -pw mypass /bin/scan.sh %2
c:\putty\pscp.exe -pw mypass root@192.168.%1.100:/tmp/scan/*.jpg %3

Каждый филиал имеет номер и он совпадает с последним номером подсети, который передается первым параметром. А номер хоста кругом 100. Второй параметр — это суффикс названия для изображения. Третий — это место на сервере куда складировать темповые сканы, пока их не схапала 1с. Ну а дальше уже программисты 1с сделали заветную кнопку «Сканировать», которая запускала батник с параметрами именно для этого пользователя.
Чтобы не делать манипуляции по установке и настройки HPLIP на каждой точке с нуля, был сделан образ, который очень сократил время работы на одной точке — за пол часа в среднем.
В общем данная система работает без сбоев уже 2 месяца.
Спасибо за внимание!
Tags:
Hubs:
Total votes 6: ↑6 and ↓0+6
Comments2

Articles