mirror of
https://abf.rosa.ru/djam/rosa-canon-lbp.git
synced 2025-02-23 15:42:54 +00:00
Imported from SRPM
This commit is contained in:
commit
134cfb8c0f
3 changed files with 302 additions and 0 deletions
5
.abf.yml
Normal file
5
.abf.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
sources:
|
||||
cndrvcups-capt-2.71-1.i386.rpm: 7500c8b1eb675322c68307ad5d4edf69bf21ca3b
|
||||
cndrvcups-capt-2.71-1.x86_64.rpm: 5753f344805e9070249f7698ff52cfeb94de6a98
|
||||
cndrvcups-common-3.21-1.i386.rpm: 9775352fd31a1dbed06670b75ae285f11a1f12f1
|
||||
cndrvcups-common-3.21-1.x86_64.rpm: c679852a01b2a6523be0c2321072038d0b8db2e7
|
31
rosa-canon-lbp.spec
Normal file
31
rosa-canon-lbp.spec
Normal file
|
@ -0,0 +1,31 @@
|
|||
%define debug %nil
|
||||
%define debug_package %nil
|
||||
|
||||
|
||||
Name: rosa-canon-lbp
|
||||
Version: 0.0.1
|
||||
Release: 1
|
||||
Summary: Bash scrpt for install Canon LBP printers
|
||||
License: no
|
||||
Group: Development/Other
|
||||
URL: https://abf.io
|
||||
Source0: rosa_canon_lbp.sh
|
||||
Source1: cndrvcups-capt-2.71-1.i386.rpm
|
||||
Source2: cndrvcups-capt-2.71-1.x86_64.rpm
|
||||
Source3: cndrvcups-common-3.21-1.i386.rpm
|
||||
Source4: cndrvcups-common-3.21-1.x86_64.rpm
|
||||
|
||||
%description
|
||||
rosa-canon-lbp.sh script for installation Canon LBP printers
|
||||
|
||||
%prep
|
||||
|
||||
|
||||
%build
|
||||
|
||||
%install
|
||||
|
||||
|
||||
%files
|
||||
|
||||
|
266
rosa_canon_lbp.sh
Normal file
266
rosa_canon_lbp.sh
Normal file
|
@ -0,0 +1,266 @@
|
|||
#!/bin/bash
|
||||
|
||||
##################################################
|
||||
#версия 0.3 от 05 октября 2019 года. С правками от 26 августа 2024 года
|
||||
#http://wiki.rosalab.ru/ru/index.php/Установка_принтеров_Canon_LBP
|
||||
##################################################
|
||||
|
||||
#проверка на суперпользователя
|
||||
[ $USER != 'root' ] && exec sudo "$0"
|
||||
|
||||
#пользователь под которым мы вошли в ситему
|
||||
LOGIN_USER=$(logname)
|
||||
[ -z "$LOGIN_USER" ] && LOGIN_USER=$(who | head -1 | awk '{print $1}')
|
||||
|
||||
|
||||
#версия драйвера
|
||||
DRIVER_VERSION='2.71-1'
|
||||
DRIVER_VERSION_COMMON='3.21-1'
|
||||
|
||||
#ссылки на пакеты драйвера
|
||||
declare -A URL_DRIVER=([x86_64_common]='https://drive.google.com/uc?export=download&confirm=no_antivirus&id=1rF7n-L6l6ZEQfqWZn62oB8xXZkF7C8vP' \
|
||||
[x86_64_capt]='https://drive.google.com/uc?export=download&confirm=no_antivirus&id=1o7RqQnQwAXW8fb636mpiZrvc0PafJpYZ' \
|
||||
[i386_common]='https://drive.google.com/uc?export=download&confirm=no_antivirus&id=1BYgQlYOT7LKKuvcncbxViimb00OFfrgG' \
|
||||
[i386_capt]='https://drive.google.com/uc?export=download&confirm=no_antivirus&id=1hi95gV_WeH_NXaum5K-NEn5JdAPqas2r')
|
||||
|
||||
#соостветствие ppd файлов и моделей принтеров
|
||||
declare -A LASERSHOT=([LBP-810]=1120 [LBP-1120]=1120 [LBP-1210]=1210 \
|
||||
[LBP2900]=2900 [LBP3000]=3000 [LBP3010]=3050 [LBP3018]=3050 [LBP3050]=3050 \
|
||||
[LBP3100]=3150 [LBP3108]=3150 [LBP3150]=3150 [LBP3200]=3200 [LBP3210]=3210 \
|
||||
[LBP3250]=3250 [LBP3300]=3300 [LBP3310]=3310 [LBP3500]=3500 [LBP5000]=5000 \
|
||||
[LBP5050]=5050 [LBP5100]=5100 [LBP5300]=5300 [LBP6000]=6018 [LBP6018]=6018 \
|
||||
[LBP6020]=6020 [LBP6020B]=6020 [LBP6200]=6200 [LBP6300n]=6300n [LBP6300]=6300 \
|
||||
[LBP6310]=6310 [LBP7010C]=7018C [LBP7018C]=7018C [LBP7200C]=7200C [LBP7210C]=7210C \
|
||||
[LBP9100C]=9100C [LBP9200C]=9200C)
|
||||
|
||||
#отсортированные имена принтеров
|
||||
NAMESPRINTERS=$(echo "${!LASERSHOT[@]}" | tr ' ' '\n' | sort -n -k1.4)
|
||||
|
||||
#список моделей, которые поддерживаются утилитой автоотключения
|
||||
declare -A ASDT_SUPPORTED_MODELS=([LBP6020]='MTNA002001 MTNA999999' \
|
||||
[LBP6020B]='MTMA002001 MTMA999999' [LBP6200]='MTPA00001 MTPA99999' \
|
||||
[LBP6310]='MTLA002001 MTLA999999' [LBP7010C]='MTQA00001 MTQA99999' \
|
||||
[LBP7018C]='MTRA00001 MTRA99999' [LBP7210C]='MTKA002001 MTKA999999')
|
||||
|
||||
#архитектура операционной системы
|
||||
if [ "$(uname -m)" == 'x86_64' ]; then
|
||||
ARCH='x86_64'
|
||||
else
|
||||
ARCH='i386'
|
||||
fi
|
||||
|
||||
#делаем рабочим каталог, в котором находится этот скрипт
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
function valid_ip() {
|
||||
local ip=$1
|
||||
local stat=1
|
||||
|
||||
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
||||
ip=($(echo "$ip" | tr '.' ' '))
|
||||
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
|
||||
stat=$?
|
||||
fi
|
||||
return $stat
|
||||
}
|
||||
|
||||
function check_error() {
|
||||
if [ $2 -ne 0 ]; then
|
||||
case $1 in
|
||||
'WGET') echo "Ошибка при скачивании файла $3"
|
||||
[ -n "$3" ] && [ -f "$3" ] && rm "$3";;
|
||||
'PACKAGE') echo "Ошибка при установке пакета $3";;
|
||||
*) echo 'Ошибка';;
|
||||
esac
|
||||
echo 'Нажмите любую клавишу для выхода'
|
||||
read -s -n1
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function canon_unistall() {
|
||||
if [ -f /usr/sbin/ccpdadmin ]; then
|
||||
installed_model=$(ccpdadmin | grep LBP | awk '{print $3}')
|
||||
if [ -n "$installed_model" ]; then
|
||||
echo "Найден принтер $installed_model"
|
||||
echo 'Остановка демона ccpd'
|
||||
systemctl stop ccpd
|
||||
echo 'Удаление принтера из файла настройки ccpd демона'
|
||||
ccpdadmin -x $installed_model
|
||||
echo 'Удаление принтера из CUPS'
|
||||
lpadmin -x $installed_model
|
||||
fi
|
||||
fi
|
||||
echo 'Удаление пакетов драйвера'
|
||||
dnf remove cndrvcups-capt --assumeyes
|
||||
dnf remove cndrvcups-common --assumeyes
|
||||
echo 'Удаление неиспользуемых библиотек и пакетов'
|
||||
dnf autoremove --assumeyes
|
||||
echo 'Удаление правила'
|
||||
[ -f /etc/udev/rules.d/85-canon-capt.rules ] && rm /etc/udev/rules.d/85-canon-capt.rules
|
||||
echo 'Удаление завершено'
|
||||
echo 'Снятие запрета на обновление модуля CUPS COMMON и CAPT'
|
||||
sed -i "/exclude=cndrvcups-common cndrvcups-capt/d" /etc/dnf/dnf.conf
|
||||
echo 'Нажмите любую клавишу для выхода'
|
||||
read -s -n1
|
||||
return 0
|
||||
}
|
||||
|
||||
function canon_install() {
|
||||
echo
|
||||
PS3='Выбор принтера. Введите нужную цифру и нажмите Enter: '
|
||||
select NAMEPRINTER in $NAMESPRINTERS
|
||||
do
|
||||
[ -n "$NAMEPRINTER" ] && break
|
||||
done
|
||||
echo "Выбран принтер: $NAMEPRINTER"
|
||||
echo
|
||||
PS3='Как принтер подключен к комьютеру? Введите нужную цифру и нажмите Enter: '
|
||||
select CONECTION in 'Через разъем порта USB' 'Через разъем локальной сети (LAN, NET)'
|
||||
do
|
||||
if [ "$REPLY" == "1" ]; then
|
||||
CONECTION="usb"
|
||||
while true
|
||||
do
|
||||
#ищем подключенное к порту USB устройство
|
||||
NODE_DEVICE=$(ls -1t /dev/usb/lp* 2> /dev/null | head -1)
|
||||
if [ -n "$NODE_DEVICE" ]; then
|
||||
#определяем серийный номер принтера
|
||||
PRINTER_SERIAL=$(udevadm info --attribute-walk --name=$NODE_DEVICE | sed '/./{H;$!d;};x;/ATTRS{product}=="Canon CAPT USB \(Device\|Printer\)"/!d;' | awk -F'==' '/ATTRS{serial}/{print $2}')
|
||||
#если серийный номер найден, значит найденное устройство принтер Canon
|
||||
[ -n "$PRINTER_SERIAL" ] && break
|
||||
fi
|
||||
echo -ne "Включите принтер\r"
|
||||
sleep 2
|
||||
done
|
||||
PATH_DEVICE="/dev/canon$NAMEPRINTER"
|
||||
break
|
||||
elif [ "$REPLY" == "2" ]; then
|
||||
CONECTION="lan"
|
||||
read -p 'Введите IP-адрес принтера: ' IP_ADDRES
|
||||
until valid_ip "$IP_ADDRES"
|
||||
do
|
||||
echo 'Неверный формат IP-адреса, введите четыре десятичных числа значением'
|
||||
echo -n 'от 0 до 255, разделённых точками: '
|
||||
read IP_ADDRES
|
||||
done
|
||||
PATH_DEVICE="net:$IP_ADDRES"
|
||||
echo 'Включите принтер и нажмите любую клавишу'
|
||||
read -s -n1
|
||||
sleep 5
|
||||
break
|
||||
fi
|
||||
done
|
||||
echo 'Установка драйвера'
|
||||
COMMON_FILE=cndrvcups-common-${DRIVER_VERSION_COMMON}.${ARCH}.rpm
|
||||
CAPT_FILE=cndrvcups-capt-${DRIVER_VERSION}.${ARCH}.rpm
|
||||
if [ ! -f $COMMON_FILE ]; then
|
||||
sudo -u $LOGIN_USER wget -O $COMMON_FILE ${URL_DRIVER[${ARCH}_common]}
|
||||
check_error WGET $? $COMMON_FILE
|
||||
fi
|
||||
if [ ! -f $CAPT_FILE ]; then
|
||||
sudo -u $LOGIN_USER wget -O $CAPT_FILE ${URL_DRIVER[${ARCH}_capt]}
|
||||
check_error WGET $? $CAPT_FILE
|
||||
fi
|
||||
echo 'Установка общего модуля для драйвера CUPS'
|
||||
dnf install ./$COMMON_FILE --assumeyes
|
||||
check_error PACKAGE $? $COMMON_FILE
|
||||
echo 'Установка модуля драйвера принтера CAPT'
|
||||
dnf install ./$CAPT_FILE --assumeyes
|
||||
check_error PACKAGE $? $CAPT_FILE
|
||||
echo 'Установка запрета на обновление модуля CUPS COMMON и CAPT'
|
||||
sed -i "$ a exclude=cndrvcups-common cndrvcups-capt" /etc/dnf/dnf.conf
|
||||
|
||||
#замена содержимого файла /etc/systemd/system/ccpd.service
|
||||
echo '[Unit]
|
||||
Description=CCPD Printing Daemon
|
||||
Requires=cups.service
|
||||
After=cups.service
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
ExecStart=/usr/sbin/ccpd
|
||||
|
||||
TimeoutSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target' > /etc/systemd/system/ccpd.service
|
||||
|
||||
echo 'Перезапуск CUPS'
|
||||
systemctl restart cups
|
||||
echo 'Установка принтера в CUPS'
|
||||
/usr/sbin/lpadmin -p $NAMEPRINTER -P /usr/share/cups/model/CNCUPSLBP${LASERSHOT[$NAMEPRINTER]}CAPTK.ppd -v ccp://localhost:59687 -E
|
||||
echo "Установка принтера $NAMEPRINTER, принтером, используемым по умолчанию"
|
||||
/usr/sbin/lpadmin -d $NAMEPRINTER
|
||||
echo 'Регистрация принтера в файле настройки ccpd демона'
|
||||
/usr/sbin/ccpdadmin -p $NAMEPRINTER -o $PATH_DEVICE
|
||||
#проверка установки принтера
|
||||
installed_printer=$(ccpdadmin | grep $NAMEPRINTER | awk '{print $3}')
|
||||
if [ -n "$installed_printer" ]; then
|
||||
if [ "$CONECTION" == "usb" ]; then
|
||||
echo 'Создание правила для принтера'
|
||||
#составлем правило, которое обеспечит альтернативное имя (символическую ссылку) нашему принтеру, чтобы не зависить от меняющихся значений lp0,lp1, ...
|
||||
echo 'KERNEL=="lp[0-9]*", SUBSYSTEMS=="usb", ATTRS{serial}=='$PRINTER_SERIAL', SYMLINK+="canon'$NAMEPRINTER'"' > /etc/udev/rules.d/85-canon-capt.rules
|
||||
#обновляем правила
|
||||
udevadm control --reload-rules
|
||||
#проверка созданного правила
|
||||
until [ -e $PATH_DEVICE ]
|
||||
do
|
||||
echo -ne "Выключите принтер, подождите 2 секунды, затем включите принтер\r"
|
||||
sleep 2
|
||||
done
|
||||
fi
|
||||
rm -f /etc/rc.d/init.d/ccpd
|
||||
echo -e "\e[2KЗапуск ccpd"
|
||||
systemctl daemon-reload
|
||||
systemctl restart ccpd
|
||||
#автозагрузка ccpd
|
||||
systemctl enable ccpd
|
||||
echo 'Установка завершена. Нажмите любую клавишу для выхода'
|
||||
read -s -n1
|
||||
exit 0
|
||||
else
|
||||
echo "Принтер $NAMEPRINTER не установлен"
|
||||
echo 'Нажмите любую клавишу для выхода'
|
||||
read -s -n1
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function canon_help {
|
||||
clear
|
||||
echo 'Замечания по установке
|
||||
Если вы уже делали какие-либо действия по установке принтера этой серии,
|
||||
в текущей системе, то перед началом установки, следует отменить эти действия.
|
||||
При отсутствии пакетов драйвера в папке скрипта они будут закачены автоматически.
|
||||
Принтеры LBP-810, LBP-1210 подключайте через разъем порта USB
|
||||
Для обновления драйвера сначала удаляете старую версию через скрипт, затем
|
||||
устанавливаете новую также через скрипт.
|
||||
Замечания и ошибки пишите на почту krylov__a@mail.ru
|
||||
Для логирования процесса установки запускайте скрипт так:
|
||||
logsave log.txt ./canon_lbp_setup.sh
|
||||
Напомню: 1-установка; 2-удаление; 4-выход
|
||||
'
|
||||
}
|
||||
|
||||
clear
|
||||
echo 'Установка драйвера Linux CAPT Printer Driver v'${DRIVER_VERSION}' для принтеров Canon LBP
|
||||
на Rosa Desktop Fresh 32-битной и 64-битной архитектуры
|
||||
Поддерживаемые принтеры:'
|
||||
echo "$NAMESPRINTERS" | sed ':a; /$/N; s/\n/, /; ta' | fold -s
|
||||
|
||||
PS3='Выбор действия. Введите нужную цифру и нажмите Enter: '
|
||||
select opt in 'Установка' 'Удаление' 'Справка' 'Выход'
|
||||
do
|
||||
if [ "$opt" == 'Установка' ]; then
|
||||
canon_install
|
||||
break
|
||||
elif [ "$opt" == 'Удаление' ]; then
|
||||
canon_unistall
|
||||
break
|
||||
elif [ "$opt" == 'Справка' ]; then
|
||||
canon_help
|
||||
elif [ "$opt" == 'Выход' ]; then
|
||||
break
|
||||
fi
|
||||
done
|
Loading…
Add table
Reference in a new issue