В общем, поднял тестовый сервер на вируалке (всё тот же Alt linux p7), установил nx и rx (только теперь nx ставил не "из коробки" а уже после установки ОС, предварительно добавив репозиторий etersoft). Теперь на сервере имею: nx-3.5.1-alt12 и rx-etersoft-1.1.2-alt16.M70P.17.
Поправил конфиги, перезапустил. Виндовый принтер пробросился на ура. И даже запечатал)) А вот с линуксовым проблема осталась. Пробовал этот скрипт:
Spoiler
!/bin/sh
ud="/home/$USER/.nx/cups/ppd"
mkdir -p "$ud" 2>&1 >/dev/null
for fn in /etc/cups/ppd/*.ppd ; do
nfn="$(basename "$fn" | sed "s/\.ppd/_nxdl\.ppd/")"
cp "$fn" "$ud/$nfn" 2>&1 >/dev/null
done
exec /usr/lib64/nxclient/bin/nxprint "$@"
подкладывать в /usr/bin вместо тамошнего - в альте, оказывается, уже есть своя прослойка под nxprint:
Spoiler
#!/bin/bash
#
# nxprint - Prints a list of available drivers or printers
#
# Copyright © 2005 by Fabian Franz <freenx@fabian-franz.de>
#
# License: GPL, version 2
#
# SVN: $Id: nxprint 512 2008-03-10 23:01:03Z fabianx $
#
HELP="no"
DRIVERS="no"
PRINTERS="no"
while [ "$1" ]
do
case "$1" in
--help) HELP="yes"; shift ;;
--drivers|-d) DRIVERS="yes"; shift ;;
--printers|-l) PRINTERS="yes"; shift ;;
--) shift ; break ;;
*) echo "Invalid flag $1" ; HELP="yes"; shift ; break ;;
esac
done
[ "$DRIVERS" = "no" -a "$PRINTERS" = "no" ] && HELP="yes"
if [ "$HELP" = "yes" ]
then
echo "nxprint - Prints a list of available drivers or printers"
echo ""
echo "Syntax: nxprint --help"
echo " nxprint --drivers"
echo " nxprint --printers"
echo
echo " --drivers prints a list of available CUPS drivers"
echo " --printers prints a list of available CUPS printers"
exit 0
fi
if [ "$DRIVERS" = "yes" ]
then
echo "driver|Raw|Raw Queue|raw"
echo "driver|Download (CUPS)|Download from CUPS server (cached)|download_cached"
echo "driver|Download (CUPS)|Download from CUPS server (redownload)|download_new"
#JJK: Added the following to avoid multiple calls to NXPRINT which are
#JJK: *SLOW* when using 1500+ foomatic drivers
#JJK: Note cache is reloaded after 60 minutes (or if empty)
if [ -z "$(find $UTILITY_DRIVERS_CACHE.all -mmin -60 2> /dev/null)" ]
then
{
cd $PPD_DIR
awk -F '"' '/\*Manufacturer:/ { a[FILENAME]=$2 }
/\*NickName:/ { b[FILENAME]=$2 }
END {
for (i in a)
print "driver|" (a[i]=="ESP"?substr(b[i],0,index(b[i]," ")-1):a[i]) "|"b[i]"|"i"|en"
}' $(find -name "*.ppd")
if [ "$ENABLE_FOOMATIC" = "1" ]
then
[ -z "$COMMAND_FOOMATIC" ] && COMMAND_FOOMATIC="foomatic-ppdfile"
$COMMAND_FOOMATIC list | awk -F'"' '{ A=""; if ($4 == "HP") { B=substr($6,index($6," ")+1); A=" "substr(B,0,index(B," ")); } printf("driver|%s%s|%s|%s|%s\n",$4,A,$6,$2,substr($3,2)) } '
fi
} | sort > "$UTILITY_DRIVERS_CACHE".all
fi
cat "$UTILITY_DRIVERS_CACHE".all
fi
if [ "$PRINTERS" = "yes" ]
then
lpstat -p | awk '{ print $1 "|" $2 }'
fi
Но, что с одним что с другим скриптом - результат один:
1) Если подключаюсь с помощью nxclient от nomachine (nx client for linux 3.5.0-7), то сначала получаю сообщение о том, что cups не запущен, затем, что не удалось смонтировать принтер ml2015 (не помню дословно). В результате в терминале сидим без принтера.
2) Если подключаюсь с помощью opennx клиента (openNX 0.16.0.0), то сообщение о незапущенном cups также получаю, но при этом принтер прокидывается, на серваке он подключается с URI ipp://127.0.0.1:4000/printers/ml2015. Но, при этом печать на него заканчивается ошибкой: "unable to get printer status"
Есть идеи?
p.s. если подключать принтер к серваку по локалке: ipp://192.168.240.136:631/printers/ml2015, то печать на него идет. Это я к тому, что с настройками cups на клиенте всё норм.