Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/07/2025, à 16:06

iznobe

remise au gout du jour du script de demonipuch imprimante brother

Bonjour ,

j ' aurais besoin d' un peu d' aide pour corriger le tir du script de demonipuch pour installer les imprimantes scanner brother .
le code source est dispo a cette adresse : https://bitbucket.org/demonipuch/brprin … rc/master/ , mais impossible de le modifier ou d' envoyer des commits roll

un fichier log est disponible afin de voir le resultat du script et les soucis a traiter sur une 25.04 : https://forum.ubuntu-fr.org/viewtopic.p … #p22847624


Bref , deja , j ' ai corrigé pour le scanner et l' installation du paquet qui va avec , voici ce que ça  donne :

#!/bin/bash
# Script d'installation pour imprimantes Brother

. /lib/lsb/init-functions

MODEL_NAME=$1
USER=${SUDO_USER}
DIR=$(pwd)/$(dirname $0)
TEMP_DIR="${DIR}/packages"
CODENAME=$(lsb_release -cs)
ARCH=$(uname -m)
LOGFILE="${DIR}/brprinter-installer.log"
LIB_DIR="/usr/lib/${ARCH}-linux-gnu"
URL_INF="http://www.brother.com/pub/bsc/linux/infs"
URL_PKG="http://www.brother.com/pub/bsc/linux/packages"
UDEV_RULES="/lib/udev/rules.d/60-libsane1.rules"
UDEV_DEB="brother-udev-rule-type1-1.0.2-0.all.deb"
UDEV_DEB_URL="http://download.brother.com/welcome/dlf006654/${UDEV_DEB}"
BLUE="\\033[1;34m"
RED="\\033[1;31m"
RESETCOLOR="\\033[0;0m"

#########################
# PRÉPARATION DU SCRIPT #
#########################
function do_init_script() {
	# On vérifie qu'on lance le script en root
	if [[ ${EUID} != "0" ]]; then
		echo -e ${RED}"Vous devez lancer ce script en tant que root : sudo bash $0"${RESETCOLOR}
		exit 0
	fi
	# Si un log existe déjà on le renomme
	if [[ -e ${LOGFILE} ]]; then
		mv ${LOGFILE} ${LOGFILE}.old
	fi
	touch ${LOGFILE}
	# Si le premier argument est vide on demande le modèle de l'imprimante
	while [[ -z "${MODEL_NAME}" ]]; do
		read -p "Entrez votre modèle : " MODEL_NAME
	done
	MODEL_NAME=$(echo ${MODEL_NAME} | tr [a-z] [A-Z])
	# On demande comment est connectée l'imprimante
	echo "Sélectionner le type de connectivité : [0] USB - [1] Réseau"
	while [[ -z ${CONNECTION} ]]; do
		read -p "Entrez votre choix : "
		case $REPLY in
			0)
				CONNECTION="USB"
			;;
			1)
				CONNECTION="Réseau"
				echo -e ${RED}"Vous devriez vous assurer que votre imprimante possède une adresse IP fixe."${RESETCOLOR}
				echo -e ${RED}"Veuillez consulter le manuel de votre imprimante pour plus de détails : http://support.brother.com/g/b/productsearch.aspx?c=fr&lang=fr&content=ml"${RESETCOLOR}
				read -p "Entrez l'adresse IP de votre imprimante : " IP
				# On valide le format de l'adresse IP de l'imprimante
				IP=$(echo ${IP} | awk -F'[.]' '{w=$1+0; x=$2+0; y=$3+0; z=$4+0; print w"."x"."y"."z}')
			;;
		esac
	done
	echo "# Ubuntu Codename : ${CODENAME}" &>> ${LOGFILE}
	echo "# Architecture : ${ARCH}" &>> ${LOGFILE}
	echo "# Modèle de l'imprimante : ${MODEL_NAME}" &>> ${LOGFILE}
	echo "# Connexion : ${CONNECTION}" &>> ${LOGFILE}
	if [[ ${CONNECTION} == "Réseau " ]]; then
		echo "# Adresse IP : ${IP}" &>> ${LOGFILE}
	fi
}

##############################
# TÉLÉCHARGEMENT DES PILOTES #
##############################
function do_download_drivers() {
	echo -e ${BLUE}"Téléchargement des pilotes de l'imprimante"${RESETCOLOR}
	# On transforme le nom de l'imprimante
	log_action_begin_msg "Recherche des pilotes"
	PRINTER_NAME=$(echo ${MODEL_NAME} | sed -e 's/-//' | tr [a-z] [A-Z])
	# On construit l'URL du fichier contenant les informations
	PRINTER_INFO="${URL_INF}/${PRINTER_NAME}"
	# On vérifie l'URL
	if ! wget -q --spider ${PRINTER_INFO}; then
		log_action_end_msg 1
		echo " - Aucun pilote trouvé" &>> ${LOGFILE}
		echo -e ${RED}"Aucun pilote trouvé. Veuillez vérifier le modèle de votre imprimante ou visitez la page suivante http://support.brother.com/g/b/productsearch.aspx?c=us&lang=en&content=dl afin de télécharger les pilotes et les installer manuellement."${RESETCOLOR}
		exit 1
	fi
	# On vérifie que le fichier fournit les informations
	LNK=$(wget -q ${PRINTER_INFO} -O - | grep LNK - | cut -d\= -f2)
	if [[ ${LNK} ]]; then
		PRINTER_INFO="${URL_INF}/${LNK}"
		echo "# Link to : ${PRINTER_INFO}" &>> ${LOGFILE}
	fi
	echo "# Fichier d'informations : ${PRINTER_INFO}" &>> ${LOGFILE}
	# On récupère le nom des paquets disponibles
	PRINTER_LPD_DEB=$(wget -q ${PRINTER_INFO} -O - | grep PRN_LPD_DEB - | cut -d\= -f2)
	PRINTER_CUPS_DEB=$(wget -q ${PRINTER_INFO} -O - | grep PRN_CUP_DEB - | cut -d\= -f2)
	PRINTER_DRV_DEB=$(wget -q ${PRINTER_INFO} -O - | grep PRN_DRV_DEB - | cut -d\= -f2)
	SCANNER_DEB=$(wget -q ${PRINTER_INFO} -O - | grep SCANNER_DRV - | cut -d\= -f2)
	SCANNER_INFO="${URL_INF}/${SCANNER_DEB}.lnk"
	SCANKEY_DEB=$(wget -q ${PRINTER_INFO} -O - | grep SCANKEY_DRV - | cut -d\= -f2)
	SCANKEY_INFO="${URL_INF}/${SCANKEY_DEB}.lnk"
	# On récupère les pilotes du scanner en fonctionnement de l'architecture du système (32-bits ou 64-bits)
	case ${ARCH} in
		i*86)
			SCANNER_DRV_DEB=$(wget -q ${SCANNER_INFO} -O - | grep DEB32 | cut -d\= -f2)
			SCANKEY_DRV_DEB=$(wget -q ${SCANKEY_INFO} -O - | grep DEB32 | cut -d\= -f2)
		;;
		x86_64)
			SCANNER_DRV_DEB=$(wget -q ${SCANNER_INFO} -O - | grep DEB64 | cut -d\= -f2)
			SCANKEY_DRV_DEB=$(wget -q ${SCANKEY_INFO} -O - | grep DEB64 | cut -d\= -f2)
		;;
		*)
			echo "Architecture inconnue: ${ARCH}" &>> ${LOGFILE}
		;;
	esac
	# On ajoute la liste des pilotes trouvés au fichier de journalisation
	for PKG in ${PRINTER_LPD_DEB} ${PRINTER_CUPS_DEB} ${PRINTER_DRV_DEB} ${SCANNER_DRV_DEB} ${SCANKEY_DRV_DEB}; do
		if [[ ! -z ${PKG} ]]; then
			echo " - Paquet trouvé : ${PKG}" &>> ${LOGFILE}
		fi
	done
	log_action_end_msg 0
	# On crée le dossier de téléchargement des paquets
	if [[ ! -d ${TEMP_DIR} ]]; then
		mkdir ${TEMP_DIR}
	fi
	# On télécharge les pilotes trouvés
	for PKG in ${PRINTER_LPD_DEB} ${PRINTER_CUPS_DEB} ${PRINTER_DRV_DEB} ${SCANNER_DRV_DEB} ${SCANKEY_DRV_DEB}; do
		URL_DEB="${URL_PKG}/${PKG}"
		echo &>> ${LOGFILE}
		echo "# Téléchargement du paquet : ${PKG}" &>> ${LOGFILE}
		log_action_begin_msg "Téléchargement du paquet : ${PKG}"
		wget -cP ${TEMP_DIR} "${URL_DEB}" &>> ${LOGFILE}
		log_action_end_msg $?
	done
	# On télécharge le fichier pour udev pour les scanners
	if [[ ! -z ${SCANNER_DRV_DEB} ]]; then
		echo "# Téléchargement du paquet : ${UDEV_DEB}" &>> ${LOGFILE}
		log_action_begin_msg "Téléchargement du paquet : ${UDEV_DEB}"
		wget -cP ${TEMP_DIR} "${UDEV_DEB_URL}" &>> ${LOGFILE}
		log_action_end_msg $?
	fi
}

###############################
# VERIFICATION DES PRÉ-REQUIS #
###############################
function do_check_prerequisites() {
	echo -e ${BLUE}"Vérification des pré-requis"${RESETCOLOR}
	echo "# Vérification des pré-requis" &>> ${LOGFILE}
	log_action_begin_msg "Mise à jour de la liste des paquets"
	apt-get update -qq
	log_action_end_msg $?
	# On vérifie que le paquet multiarch-support est installé et on l'installe le cas échéant (Ubuntu 64-bits seulement)
	if [[ "${ARCH}" == "x86_64" ]]; then
		log_action_begin_msg "Recherche du paquet 'multiarch-support' sur votre système"
		if dpkg -s multiarch-support &>/dev/null; then
			log_action_end_msg $?
			echo " - Paquet 'multiarch-support' installé" &>> ${LOGFILE}
		else
			log_action_end_msg 1
			echo " - Paquet 'multiarch-support' non installé" &>> ${LOGFILE}
			log_action_begin_msg "Installation du paquet 'multiarch-support'"
			echo "# Installation de 'multiarch-support'" &>> ${LOGFILE}
			apt-get install -qq multiarch-support &>> ${LOGFILE}
			log_action_end_msg $?
			echo " - Paquet 'multiarch-support' installé" &>> ${LOGFILE}
		fi
		log_action_begin_msg "Recherche du paquet 'lib32stdc++6' sur votre système"
		if dpkg -s lib32stdc++6 &>/dev/null; then
			log_action_end_msg $?
			echo " - Paquet 'lib32stdc++6' installé" &>> ${LOGFILE}
		else
			log_action_end_msg 1
			echo " - Paquet 'lib32stdc++6' non installé" &>> ${LOGFILE}
			log_action_begin_msg "Installation du paquet 'lib32stdc++6'"
			echo "# Installation de 'lib32stdc++6'" &>> ${LOGFILE}
			apt-get install -qq lib32stdc++6 &>> ${LOGFILE}
			log_action_end_msg $?
			echo " - Paquet 'lib32stdc++6' installé" &>> ${LOGFILE}
		fi
	fi
	# On vérifie que le paquet cups est installé et on l'installe le cas échéant
	log_action_begin_msg "Recherche du paquet 'cups' sur votre système"
	if dpkg -s cups &>/dev/null; then
		log_action_end_msg $?
		echo " - Paquet 'cups' installé" &>> ${LOGFILE}
	else
		log_action_end_msg 1
		log_action_begin_msg "Installation du paquet 'cups'"
		echo "# Installation de 'cups'" &>> ${LOGFILE}
		apt-get install -qq cups &>> ${LOGFILE}
		log_action_end_msg $?
		echo " - Paquet 'cups' installé" &>> ${LOGFILE}
	fi
	# Si un pilote pour le scanner a été trouvé on vérifie que sane-utils est installé
	if [[ ! -z ${SCANNER_DEB} ]]; then
		log_action_begin_msg "Recherche du paquet 'sane-utils' sur votre système"
		if dpkg -s sane-utils &>/dev/null; then
			log_action_end_msg $?
			echo " - Paquet 'sane-utils' installé" &>> ${LOGFILE}
		else
			log_action_end_msg 1
			echo " - Paquet 'sane-utils' non installé" &>> ${LOGFILE}
			log_action_begin_msg "Installation du paquet 'sane-utils'"
			echo "# Installation de 'sane-utils'" &>> ${LOGFILE}
			apt-get install -qq sane-utils &>> ${LOGFILE}
			log_action_end_msg $?
			echo " - Paquet 'sane-utils' installé" &>> ${LOGFILE}
		fi
		# On vérifie que libusb-0.1-4:i386 est installé
		if [[ ${CONNECTION} == "USB" ]]; then
			log_action_begin_msg "Recherche du paquet 'libusb-0.1-4' sur votre système"
			if dpkg -s libusb-0.1-4 &>/dev/null; then
				log_action_end_msg $?
				echo " - Paquet 'libusb-0.1-4' installé" &>> ${LOGFILE}
			else
				log_action_end_msg 1
				echo " - Paquet 'libusb-0.1-4' non installé" &>> ${LOGFILE}
				log_action_begin_msg "Installation du paquet 'libusb-0.1-4'"
				echo "# Installation de 'libusb-0.1-4'" &>> ${LOGFILE}
				apt-get install -qq libusb-0.1-4 &>> ${LOGFILE}
				log_action_end_msg $?
				echo " - Paquet 'libusb-0.1-4' installé" &>> ${LOGFILE}
			fi
		fi
	fi
	# On vérifie que le paquet csh est installé et on l'installe le cas échéant (uniquement pour certaines imprimantes)
	for i in DCP-110C DCP-115C DCP-117C DCP-120C DCP-310CN DCP-315CN DCP-340CW FAX-1815C FAX-1820C FAX-1835C FAX-1840C FAX-1920CN FAX-1940CN FAX-2440C MFC-210C MFC-215C MFC-3220C MFC-3240C MFC-3320CN MFC-3340CN MFC-3420C MFC-3820CN MFC-410CN MFC-420CN MFC-425CN MFC-5440CN MFC-5840CN MFC-620CN MFC-640CW MFC-820CW; do
		if [[ ${MODEL_NAME} == "$i" ]]; then
			log_action_begin_msg "Recherche du paquet 'csh' sur votre système"
			if [[ ! -x /bin/csh ]]; then
				log_action_end_msg 1
				log_action_begin_msg "Installation du paquet 'csh'"
				echo "# Installation du paquet 'csh'" &>> ${LOGFILE}
				apt-get install -qq csh &>> ${LOGFILE}
				log_action_end_msg $?
				echo " - Paquet 'csh' installé" &>> ${LOGFILE}
			else
				log_action_end_msg $?
			fi
		fi
	done
	# On vérifie que le dossier /usr/share/cups/model existe et on le crée le cas échéant
	log_action_begin_msg "Recherche du dossier '/usr/share/cups/model' sur votre système"
	if [[ -d /usr/share/cups/model ]]; then
		log_action_end_msg $?
	else
		log_action_end_msg 1
		log_action_begin_msg "Creation du dossier '/usr/share/cups/model'"
		mkdir -p /usr/share/cups/model
		log_action_end_msg $?
	fi
	# On vérifie que le dossier /var/spool/lpd existe et on le crée le cas échéant
	log_action_begin_msg "Recherche du dossier '/var/spool/lpd' sur votre système"
	if [[ -d /var/spool/lpd ]]; then
		log_action_end_msg $?
	else
		log_action_end_msg 1
		log_action_begin_msg "Creation du dossier '/var/spool/lpd'"
		mkdir -p /var/spool/lpd
		log_action_end_msg $?
	fi
	# On vérifie que le lien symbolique /etc/init.d/lpd existe et on le crée le cas échéant (uniquement pour certaines imprimantes)
	for i in DCP-1000 DCP-1400 DCP-8020 DCP-8025D DCP-8040 DCP-8045D DCP-8060 DCP-8065DN FAX-2850 FAX-2900 FAX-3800 FAX-4100 FAX-4750e FAX-5750e HL-1030 HL-1230 HL-1240 HL-1250 HL-1270N HL-1430 HL-1440 HL-1450 HL-1470N HL-1650 HL-1670N HL-1850 HL-1870N HL-5030 HL-5040 HL-5050 HL-5070N HL-5130 HL-5140 HL-5150D HL-5170DN HL-5240 HL-5250DN HL-5270DN HL-5280DW HL-6050 HL-6050D MFC-4800 MFC-6800 MFC-8420 MFC-8440 MFC-8460N MFC-8500 MFC-8660DN MFC-8820D MFC-8840D MFC-8860DN MFC-8870DW MFC-9030 MFC-9070 MFC-9160 MFC-9180 MFC-9420CN MFC-9660 MFC-9700 MFC-9760 MFC-9800 MFC-9860 MFC-9880; do
		if [[ ${MODEL_NAME} == "$i" ]]; then
			log_action_begin_msg "Recherche du lien symbolique '/etc/init.d/lpd ~> /etc/init.d/cups' sur votre système"
			if [[ -L /etc/init.d/lpd ]]; then
				log_action_end_msg 0
			else
				log_action_end_msg 1
				log_action_begin_msg "Creation du lien symbolique '/etc/init.d/lpd ~> /etc/init.d/cups'"
				ln -s /etc/init.d/cups /etc/init.d/lpd
				# On crée un lien symbolique vers cups.service si systemd est utilisé
				if [[ -L /sbin/init ]]; then
					ln -s /lib/systemd/system/cups.service /lib/systemd/system/lpd.service
					systemd-daemon reload
				fi
				log_action_end_msg $?
			fi
		fi
	done
}

############################
# INSTALLATION DES PAQUETS #
############################
function do_install_drivers() {
	echo -e ${BLUE}"Installation des pilotes"${RESETCOLOR}
	for PKG in ${PRINTER_LPD_DEB} ${PRINTER_CUPS_DEB} ${PRINTER_DRV_DEB} ${SCANNER_DRV_DEB} ${SCANKEY_DRV_DEB}; do
		log_action_begin_msg "Installation du paquet : ${PKG}"
		echo &>> ${LOGFILE}
		echo "# Installation du paquet : ${PKG}" &>> ${LOGFILE}
		dpkg -i --force-all "${TEMP_DIR}/${PKG}" &>> ${LOGFILE}
		log_action_end_msg $?
	done
	if [[ ! -z ${SCANNER_DRV_DEB} ]]; then
		log_action_begin_msg "Installation du paquet : ${UDEV_DEB}"
		echo &>> ${LOGFILE}
		echo "# Installation du paquet : ${UDEV_DEB}" &>> ${LOGFILE}
		dpkg -i --force-all "${TEMP_DIR}/${UDEV_DEB}" &>> ${LOGFILE}
		log_action_end_msg $?
	fi
}

#################################
# CONFIGURATION DE L'IMPRIMANTE #
#################################
function do_configure_printer() {
	echo -e ${BLUE}"Configuration de l'imprimante"${RESETCOLOR}
	# On recherche un fichier ppd
	log_action_begin_msg "Recherche d'un fichier PPD sur votre système"
	echo &>> ${LOGFILE}
	echo "# Recherche d'un fichier PPD" &>> ${LOGFILE}
	for PKG in ${PRINTER_CUPS_DEB} ${PRINTER_DRV_DEB}; do
		PPD_FILE=$(dpkg --contents ${TEMP_DIR}/${PKG} | grep ppd | awk '{print $6}' | sed 's/^.//g')
	done
	if [[ -z "${PPD_FILE}" ]]; then
		for FILE in $(find /usr/share/cups/model -type f); do
			if [[ $(grep -i Brother ${FILE} | grep -E "(${MODEL_NAME}|${PRINTER_NAME})") ]]; then
				PPD_FILE=${FILE}
			fi
		done
	fi
	echo " - Fichier PPD : ${PPD_FILE}" &>> ${LOGFILE}
	log_action_end_msg 0
	# On ajoute une nouvelle imprimante
	log_action_begin_msg "Ajout de l'imprimante ${MODEL_NAME}"
	echo &>> ${LOGFILE}
	echo "# Ajout de l'imprimante ${MODEL_NAME}" &>> ${LOGFILE}
	echo " - Backup du fichier /etc/cups/printers.conf.O" &>> ${LOGFILE}
	cp /etc/cups/printers.conf.O ${DIR} &>> ${LOGFILE}
	echo " - Arret du service CUPS" &>> ${LOGFILE}
	systemctl stop cups &>> ${LOGFILE}
	echo " - Restauration du fichier printers.conf" &>> ${LOGFILE}
	cp ${DIR}/printers.conf.O /etc/cups/printers.conf &>> ${LOGFILE}
	echo " - Redémarrage du service CUPS" &>> ${LOGFILE}
	systemctl restart cups &>> ${LOGFILE}
	case ${CONNECTION} in
	"USB")
		sleep 2 && lpadmin -p "${MODEL_NAME}" -E -v usb://dev/usb/lp0 -P "${PPD_FILE}"
	;;
	"Réseau")
		sleep 2 && lpadmin -p "${MODEL_NAME}" -E -v lpd://"${IP}"/binary_p1 -P "${PPD_FILE}"
	;;
	esac
	log_action_end_msg $?
	echo " - Restauration du fichier printers.conf.O" &>> ${LOGFILE}
	cp ${DIR}/printers.conf.O /etc/cups/printers.conf.O &>> ${LOGFILE}
}

############################
# CONFIGURATION DU SCANNER #
############################
function do_configure_scanner() {
	if [[ ! -z ${SCANNER_DEB} ]]; then
		echo -e ${BLUE}"Configuration du scanner"${RESETCOLOR}
		echo &>> ${LOGFILE}
		echo "# Configuration du scanner" &>> ${LOGFILE}
		if [[ ${CONNECTION} == "USB" ]]; then
			# Installation du paquet brother-udev
			dpkg -i --force-all "${TEMP_DIR}/${UDEV_DEB}" &>> ${LOGFILE}
			# On ajoute une entrée au fichier udev
			if [[ ! $(grep 'ATTRS{idVendor}=="04f9", ENV{libsane_matched}="yes"' ${UDEV_RULES}) ]]; then
				echo 'Adding ATTRS{idVendor}=="04f9", ENV{libsane_matched}="yes" to ${UDEV_RULES}' &>> ${LOGFILE}
				sed -i '/LABEL="libsane_usb_rules_begin"/a\
				\n# Brother\nATTRS{idVendor}=="04f9", ENV{libsane_matched}="yes"' ${UDEV_RULES}
			else
				echo "Règle udev trouvée dans le fichier ${UDEV_RULES}" &>> ${LOGFILE}
			fi
			# On recharge les règles udev
			udevadm control --reload
		elif [[ ${CONNECTION} == "Réseau" ]]; then
			log_action_begin_msg "Configuration du scanner réseau"
			if [[ -x /usr/bin/brsaneconfig ]]; then
				brsaneconfig -a name="SCANNER" model="${MODEL_NAME}" ip="${IP}" &>> ${LOGFILE}
			elif [[ -x /usr/bin/brsaneconfig2 ]]; then
				brsaneconfig2 -a name="SCANNER" model="${MODEL_NAME}" ip="${IP}" &>> ${LOGFILE}
			elif [[ -x /usr/bin/brsaneconfig3 ]]; then
				brsaneconfig3 -a name="SCANNER" model="${MODEL_NAME}" ip="${IP}" &>> ${LOGFILE}
			elif [[ -x /usr/bin/brsaneconfig4 ]]; then
				sed -i '/Support Model/a\
0x029a, 117, 1, "MFC-8690DW", 133, 4\
0x0279, 14, 2, "DCP-J525W"\
0x027b, 13, 2, "DCP-J725DW"\
0x027d, 13, 2, "DCP-J925DW"\
0x027f, 14, 1, "MFC-J280W"\
0x028f, 13, 1, "MFC-J425W"\
0x0281, 13, 1, "MFC-J430W"\
0x0280, 13, 1, "MFC-J435W"\
0x0282, 13, 1, "MFC-J625DW"\
0x0283, 13, 1, "MFC-J825DW"\
0x028d, 13, 1, "MFC-J835DW"' /opt/brother/scanner/brscan4/Brsane4.ini
				brsaneconfig4 -a name=SCANNER model=${MODEL_NAME} ip=${IP} &>> ${LOGFILE}
			fi
			log_action_end_msg $?
		fi
		# On copie les librairies
		if [[ ${ARCH} == "x86_64" ]] && [[ -d ${LIB_DIR} ]]; then
			log_action_begin_msg "Copie des librairies nécessaires"
			if [[ -e /usr/bin/brsaneconfig ]]; then
				cd ${LIB_DIR}
				cp --force /usr/lib64/libbrcolm.so.1.0.1 .
				ln -sf libbrcolm.so.1.0.1 libbrcolm.so.1
				ln -sf libbrcolm.so.1 libbrcolm.so
				cp --force /usr/lib64/libbrscandec.so.1.0.0 ${LIB_DIR}
				ln -sf libbrscandec.so.1.0.0 libbrscandec.so.1
				ln -sf libbrscandec.so.1 libbrscandec.so
				cd ${LIB_DIR}/sane
				cp --force /usr/lib64/sane/libsane-brother.so.1.0.7 .
				ln -sf libsane-brother.so.1.0.7 libsane-brother.so.1
				ln -sf libsane-brother.so.1 libsane-brother.so
				log_action_end_msg 0
			elif [[ -e /usr/bin/brsaneconfig2 ]]; then
				cd ${LIB_DIR}
				cp --force /usr/lib64/libbrscandec2.so.1.0.0 .
				ln -sf libbrscandec2.so.1.0.0 libbrscandec2.so.1
				ln -sf libbrscandec2.so.1 libbrscandec2.so
				cp --force /usr/lib64/libbrcolm2.so.1.0.1 .
				ln -sf libbrcolm2.so.1.0.1 libbrcolm2.so.1
				ln -sf libbrcolm2.so.1 libbrcolm2.so
				cd ${LIB_DIR}/sane
				cp --force /usr/lib64/sane/libsane-brother2.so.1.0.7 .
				ln -sf libsane-brother2.so.1.0.7 libsane-brother2.so.1
				ln -sf libsane-brother2.so.1 libsane-brother2.so
				log_action_end_msg 0
			elif [[ -e /usr/bin/brsaneconfig3 ]]; then
				cd ${LIB_DIR}
				cp --force /usr/lib64/libbrscandec3.so.1.0.0 .
				ln -sf libbrscandec3.so.1.0.0 libbrscandec3.so.1
				ln -sf libbrscandec3.so.1 libbrscandec3.so
				cd ${LIB_DIR}/sane
				cp --force /usr/lib64/sane/libsane-brother3.so.1.0.7 .
				ln -sf libsane-brother3.so.1.0.7 libsane-brother3.so.1
				ln -sf libsane-brother3.so.1 libsane-brother3.so
				log_action_end_msg 0
			elif [[ -e /usr/bin/brsaneconfig4 ]]; then
				cd ${LIB_DIR}/sane
				cp --force /usr/lib64/sane/libsane-brother4.so.1.0.7 .
				ln -sf libsane-brother4.so.1.0.7 libsane-brother4.so.1
				ln -sf libsane-brother4.so.1 libsane-brother4.so
				log_action_end_msg 0
			else
				log_action_end_msg 1
				echo -e ${RED}"No config binary found."${RESETCOLOR}
			fi
		fi
	fi
}

#################
# FIN DU SCRIPT #
#################
function do_clean() {
	# On supprime le fichier printers.conf.O
	if [[ -e ${DIR}/printers.conf.O ]]; then
		rm ${DIR}/printers.conf.O &>> ${LOGFILE}
	fi
	# On réattribue les droits des dossiers/fichiers crées à l'utilisateur
	chown -R ${USER}: ${TEMP_DIR} ${LOGFILE}
	exit 0
}

do_init_script
do_download_drivers
do_check_prerequisites
do_install_drivers
do_configure_printer
do_configure_scanner
do_clean

il reste a modifier pour l ' installation du paquet multiarch-support ( plus dispo sous 25.04 )
pour libsane / libsane1 et curl .

je dispose d ' un stockage sur github pour le mettre en ligne une fois finalisé si besoin .

je n' aurais pas trop le temps de m ' y pencher pendant les jours à venirs ... MAIS je peux tester le script et je dispose d ' une imprimante brother pour effectuer les tests si besoin .

Dernière modification par iznobe (Le 17/07/2025, à 17:04)


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#2 Le 17/07/2025, à 17:18

Watael

Re : remise au gout du jour du script de demonipuch imprimante brother

if ((EUID))

évaluation arithmétique

if test -e "$LOGFILE"

test simple, simplement test

#touch "$LOGFILE"

inutile

while test -z "$MODEL_NAME"

idem point 2

vire les accolades inutiles, et mets systématiquement des guillemets.

. /lib/lsb/init-functions

ça n'existe pas chez moi; si c'est indispensable il faut en tester l'existence.

de toute façon, je n'ai pas de Brother. sad

wink big_smile

Dernière modification par Watael (Le 17/07/2025, à 17:19)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 17/07/2025, à 17:56

geole

Re : remise au gout du jour du script de demonipuch imprimante brother

Bonjour
Il me semble que brother fournit les  scripts nécessaires. https://www.brother.com/apps/ps/fr/index.htm


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity

Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#4 Le 17/07/2025, à 17:59

iznobe

Re : remise au gout du jour du script de demonipuch imprimante brother

Salut geole , ils ne sont pas à jours non plus roll


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne