#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
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.
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
Hors 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
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#5 Hier à 10:06
- eric63
Re : remise au gout du jour du script de demonipuch imprimante brother
Salut
je ne sais pas si ton script en tient compte
mais il existe 2 librairies de libusb-0.1-4
une pour l’ architecture 32bits qui se nomme libusb-0.1-4:i386
et l’autre pour le 64bits qui se nomme libusb-0.1-4 tout simplement.
Il me semble que ton script ne tient compte que de voir si libusb-0.1-4 (64bits) est installé
et ce n’est pas suffisant (les paquets normalement doivent exister en 32 et 64 bits mais parfois ils n’existent ou ne sont pris en compte (problème de script demonipuch??) qu’en 32 bits
Pour le problème d’architecture en 25.04 on doit chercher la lib32stdc++6 pour remplacer le paquet arch ce que le script de demonipuch fait
l’idéal serait d’abord de passer avec les pilotes driverless qui n’ont pas besoin de ces scripts (demonipuch et brother) .
Lorsque qu’on installe une 25.04 ou une 24.04 le driverless est fait de base, on a rien a faire pour que l’imprimante et le scanner soit reconnus.
Mais si on part d’une mise à niveau, les driverless ne sont pas reconnues et je ne sais pas comment les faire reconnaître à ce stade j’ai essayé et chercher mais bon …
(les 2 peuvent cohabiter ensemble sauf liste d’attente des impressions qui ne sont pas compatibles entre elles)
il y a aussi 3 librairies
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
qui ne vont pas aux mêmes endroits suivant l’architecture 32 ou 64 bits
soit dans /lib/i386-linux-gnu/ ou /lib/X64_86-linux-gnu/
Dernière modification par eric63 (Hier à 10:27)
Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR
Hors ligne
#6 Hier à 10:37
- iznobe
Re : remise au gout du jour du script de demonipuch imprimante brother
je ne sais pas si ton script en tient compte
Salut eric ,il ne s' agit pas de " mon " script , comme indiqué dans le titre , j ' ai recupéré le dernier script de demonipuch pour corriger les bugs qu ' il comporte , et a y etre , le remettre en etat de fonctionner correctement pour 24.04 et supérieures .
le " soucis " pour 24.04 et supérieures etant que brother n ' a pas mis à jour ses scripts non plus .
il faudra donc refaire manuellement l ' install ( ou les liens ) des " bons / nouveaux " paquets dans le script en plus .
je remet le nez dedans , en commençant par les modifs indiquées par @Watael .
Dernière modification par iznobe (Hier à 10:40)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#7 Hier à 11:09
- eric63
Re : remise au gout du jour du script de demonipuch imprimante brother
oui c’est vrai j’aurais du écrire «le script de demonipuch modifié par iznobe et aidés par … » au lieu de «ton script» mais c’est un raccourci conscient que je faisais, je n’enlève rien aux contributions de l’un ou l’autre et de toutes les aides que vous avez reçues pour valider ces scripts continuer pour le meilleur du libre
Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR
Hors ligne
#8 Hier à 17:29
- iznobe
Re : remise au gout du jour du script de demonipuch imprimante brother
j ' ai rectifié et amelioré des bricoles , la syntaxe , etc ...
ca m' a l' air d' être un début .
reste à inclure les modifs pour paquets , bibliothèques etc ... a tester pour ceux qui veulent .
par exemple en copiant le script et et en mettant la commande :
sudo bash Scripts/demonipuch.sh DCP-L2530DW 1 192.168.1.1
sudo bash Scripts/demonipuch.sh Nom_Imprimante type de connexion IP
type de connection : 0 pour USB ou 1 pour reseau .
#!/bin/bash
# Script d'installation pour imprimantes Brother
. /lib/lsb/init-functions
Model_Name="$1"
Connection="$2"
IP="$3"
User="$SUDO_USER"
Dir="$(pwd)/$(dirname "$0")"
Temp_Dir="$Dir/packages"
Codename="$(lsb_release -cs)"
Arch="$(uname -m)"
Logfile="/home/$User/brprinter-installer.log"
Lib_Dir="/usr/lib/$Arch-linux-gnu"
Url_Inf="http://www.brother.com/pub/bsc/linux/infs"
# Packages :
# https://download.brother.com/pub/com/linux/linux/packages/
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)); 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 [[ -f $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 -rp "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 -rp "Entrez votre choix : "
case $REPLY in
0)
Connection="USB"
;;
1)
Connection="Réseau"
echo -e "$Red Vous devez d' abord 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 -rp "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() {
# On crée le dossier de téléchargement des paquets
if [[ ! -d "$Temp_Dir" ]]; then
mkdir "$Temp_Dir"
fi
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)
Scankey_Deb=$(wget -q "$Printer_Info" -O - | grep SCANKEY_DRV - | cut -d= -f2)
Scanner_Info="$Url_Inf/$Scanner_Deb.lnk"
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
if [[ -n "$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
for pkg in "$Printer_Lpd_Deb" "$Printer_Cups_Deb" "$Printer_Drv_Deb" "$Scanner_Drv_Deb" "$Scankey_Drv_Deb"; do
# On ajoute la liste des pilotes trouvés au fichier de journalisation
if [[ -n "$pkg" ]]; then
echo " - Paquet trouvé : $pkg" &>> "$Logfile"
log_action_end_msg 0
# On télécharge les pilotes trouvés
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 $?
fi
done
}
###############################
# 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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'multiarch-support' non installé" &>> "$Logfile"
apt-get install -qq multiarch-support &>> "$Logfile"
log_action_end_msg $?
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'lib32stdc++6' non installé" &>> "$Logfile"
apt-get install -qq lib32stdc++6 &>> "$Logfile"
log_action_end_msg $?
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
apt-get install -qq cups &>> "$Logfile"
log_action_end_msg $?
fi
# Si un pilote pour le scanner a été trouvé on vérifie que sane-utils est installé
if [[ -n $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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'sane-utils' non installé" &>> "$Logfile"
apt-get install -qq sane-utils &>> "$Logfile"
log_action_end_msg $?
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'libusb-0.1-4' non installé" &>> "$Logfile"
apt-get install -qq libusb-0.1-4 &>> "$Logfile"
log_action_end_msg $?
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
apt-get install -qq csh &>> "$Logfile"
log_action_end_msg "$?"
else
echo " - Paquet 'csh' deja installé" &>> "$Logfile"
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_begin_msg "Le dossier '/usr/share/cups/model' existe deja"
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_begin_msg "Le dossier '/var/spool/lpd' existe deja"
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" "$Udev_Deb"; do
if [[ -n "$pkg" ]] && [[ -f "$Temp_Dir/$pkg" ]]; then
log_action_begin_msg "Installation du paquet : $pkg"
echo &>> "$Logfile"
echo "# Installation du paquet par 'dpkg' du paquet : $pkg" &>> "$Logfile"
dpkg -i --force-all "$Temp_Dir/$pkg" &>> "$Logfile"
log_action_end_msg $?
fi
done
}
#################################
# 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 [[ -n "$Scanner_Deb" ]]; then
echo -e "$Blue Configuration du scanner $Resetcolor"
echo &>> "$Logfile"
echo "# Configuration du scanner" &>> "$Logfile"
if [[ $Connection == "USB" ]]; then
# 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 bibliotheques
if [[ "$Arch" == "x86_64" ]] && [[ -d $Lib_Dir ]]; then
log_action_begin_msg "Copie des bibliotheques nécessaires"
if [[ -e /usr/bin/brsaneconfig ]]; then
cd "$Lib_Dir" || exit
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 || exit
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" || exit
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 || exit
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" || exit
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 || exit
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 || exit
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
elif [[ -e /usr/bin/brsaneconfig5 ]]; then
cd "$Lib_Dir"/sane || exit
#cp --force /usr/lib64/sane/libsane-brother5.so.1.0.7 .
ln -sf /usr/lib/x86_64-linux-gnu/sane/libsane-brother5.so.1.0 libsane-brother5.so.1
ln -sf /usr/lib/x86_64-linux-gnu/sane/libsane-brother5.so.1.0.7 libsane-brother5.so.1.0
ln -sf /opt/brother/scanner/brscan5/libsane-brother5.so.1.0.7 libsane-brother5.so.1.0.7
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
Dernière modification par iznobe (Hier à 19:12)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#9 Hier à 17:31
- iznobe
Re : remise au gout du jour du script de demonipuch imprimante brother
de toute façon, je n'ai pas de Brother.
![]()
Il n ' y en a pas besoin pour utiliser le script , ni pour verifier sa validité
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#10 Hier à 18:33
- Watael
Re : remise au gout du jour du script de demonipuch imprimante brother
comment je vérifie que le matériel est correctement installé ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#11 Hier à 18:59
- iznobe
Re : remise au gout du jour du script de demonipuch imprimante brother
ça je m ' en occuperais moi-meme et avec d' autres intervenants , vu que tu ne pourras pas faire cette partie .
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#12 Hier à 19:13
- iznobe
Re : remise au gout du jour du script de demonipuch imprimante brother
edit du code précédent , j ' avais oublié deux " ' " ...
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#13 Hier à 21:35
- eric63
Re : remise au gout du jour du script de demonipuch imprimante brother
faudrait voir aussi avec le cas pour les paquets en 32bits et le comportement de la libusbb-0.1-4:i386 si elle est correctement prise en compte
* Téléchargement du paquet : brscan4-0.4.11-1.amd64.deb... [ OK ]
* Téléchargement du paquet : brscan-skey-0.3.2-0.amd64.deb...[ OK ]
* Recherche du paquet 'libusb-0.1-4' sur votre système...
kubu@kubu-System-Product-Name:~$ /home/kubu/script_iznobe.sh
Vous devez lancer ce script en tant que root : sudo bash /home/kubu/script_iznobe.sh
kubu@kubu-System-Product-Name:~$ sudo /home/kubu/script_iznobe.sh
[sudo] password for kubu:
Entrez votre modèle : MFC-j4510dw
Sélectionner le type de connectivité : [0] USB - [1] Réseau
Entrez votre choix : 0
mkdir: cannot create directory ‘/home/kubu//home/kubu/packages’: No such file or directory
Téléchargement des pilotes de l'imprimante
* Recherche des pilotes... * Téléchargement du paquet : brother-udev-rule-type1-1.0.2-0.all.deb... [ OK ]
[ OK ]
* Téléchargement du paquet : mfcj4510dwlpr-3.0.1-1.i386.deb... [ OK ]
[ OK ]
* Téléchargement du paquet : mfcj4510dwcupswrapper-3.0.1-1.i386.deb... [ OK ]
[ OK ]
* Téléchargement du paquet : brscan4-0.4.11-1.amd64.deb... [ OK ]
[ OK ]
* Téléchargement du paquet : brscan-skey-0.3.2-0.amd64.deb... [ OK ]
Vérification des pré-requis
* Mise à jour de la liste des paquets... [ OK ]
* Recherche du paquet 'multiarch-support' sur votre système... [fail]
[fail]
* Recherche du paquet 'lib32stdc++6' sur votre système... [ OK ]
* Recherche du paquet 'cups' sur votre système... [ OK ]
* Recherche du paquet 'sane-utils' sur votre système... [ OK ]
* Recherche du paquet 'libusb-0.1-4' sur votre système... [ OK ]
* Recherche du dossier '/usr/share/cups/model' sur votre système... * Le dossier '/usr/share/cups/model' existe deja... * Recherche du dossier '/var/spool/lpd' sur votre système... * Le dossier '/var/spool/lpd' existe deja... Installation des pilotes
* Installation du paquet : mfcj4510dwlpr-3.0.1-1.i386.deb... [ OK ]
* Installation du paquet : mfcj4510dwcupswrapper-3.0.1-1.i386.deb... [ OK ]
* Installation du paquet : brscan4-0.4.11-1.amd64.deb... [ OK ]
* Installation du paquet : brscan-skey-0.3.2-0.amd64.deb... [ OK ]
* Installation du paquet : brother-udev-rule-type1-1.0.2-0.all.deb... [ OK ]
Configuration de l'imprimante
* Recherche d'un fichier PPD sur votre système... dpkg-deb: erreur: erreur de lecture de numéro magique de version de l'archive depuis le fichier /home/kubu//home/kubu/packages/: Is a directory
/home/kubu/script_iznobe.sh: line 306: MFCJ4510DW: command not found
[ OK ]
* Ajout de l'imprimante MFC-J4510DW... lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS.
lpadmin: Unable to open PPD "": Impossible d'ouvrir le fichier PPD on line 0.
[fail]
Configuration du scanner
* Copie des bibliotheques nécessaires... cp: '/usr/lib64/sane/libsane-brother4.so.1.0.7' and './libsane-brother4.so.1.0.7' are the same file
[ OK ]
kubu@kubu-System-Product-Name:~$
@boursicot avait justement ce problème avant de lui faire installer cette lib
Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR
Hors ligne
#14 Hier à 22:14
- eric63
Re : remise au gout du jour du script de demonipuch imprimante brother
un fichier de log existe si on utilise le script de demonipuch et il contient beaucoup d’informations utiles à comparer avec ton script si ça peut être utile
# Ubuntu Codename : plucky
# Architecture : x86_64
# Modèle de l'imprimante : MFC-J4510DW
# Connexion : USB
# Fichier d'informations : http://www.brother.com/pub/bsc/linux/infs/MFCJ4510DW
# Téléchargement du paquet : brother-udev-rule-type1-1.0.2-0.all.deb
--2025-08-02 19:23:52-- http://download.brother.com/welcome/dlf006654/brother-udev-rule-type1-1.0.2-0.all.deb
Resolving download.brother.com (download.brother.com)... 23.217.245.108
Connecting to download.brother.com (download.brother.com)|23.217.245.108|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1558 (1,5K) [image/x-deb]
Saving to: ‘/home/kubu//home/kubu/packages/brother-udev-rule-type1-1.0.2-0.all.deb’
0K . 100% 133M=0s
2025-08-02 19:23:52 (133 MB/s) - ‘/home/kubu//home/kubu/packages/brother-udev-rule-type1-1.0.2-0.all.deb’ saved [1558/1558]
- Paquet trouvé : mfcj4510dwlpr-3.0.1-1.i386.deb
# Téléchargement du paquet : mfcj4510dwlpr-3.0.1-1.i386.deb
--2025-08-02 19:23:52-- http://www.brother.com/pub/bsc/linux/packages/mfcj4510dwlpr-3.0.1-1.i386.deb
Resolving www.brother.com (www.brother.com)... 104.85.53.149
Connecting to www.brother.com (www.brother.com)|104.85.53.149|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://download.brother.com/pub/com/linux/linux/packages/mfcj4510dwlpr-3.0.1-1.i386.deb [following]
--2025-08-02 19:23:53-- https://download.brother.com/pub/com/linux/linux/packages/mfcj4510dwlpr-3.0.1-1.i386.deb
Resolving download.brother.com (download.brother.com)... 23.217.245.108
Connecting to download.brother.com (download.brother.com)|23.217.245.108|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3038108 (2,9M) [text/plain]
Saving to: ‘/home/kubu//home/kubu/packages/mfcj4510dwlpr-3.0.1-1.i386.deb’
0K .......... .......... .......... .......... .......... 1% 2,55M 1s
50K .......... .......... .......... .......... .......... 3% 5,65M 1s
100K .......... .......... .......... .......... .......... 5% 10,3M 1s
150K .......... .......... .......... .......... .......... 6% 13,9M 0s
200K .......... .......... .......... .......... .......... 8% 13,8M 0s
250K .......... .......... .......... .......... .......... 10% 23,2M 0s
300K .......... .......... .......... .......... .......... 11% 18,1M 0s
350K .......... .......... .......... .......... .......... 13% 25,3M 0s
400K .......... .......... .......... .......... .......... 15% 22,4M 0s
450K .......... .......... .......... .......... .......... 16% 39,3M 0s
500K .......... .......... .......... .......... .......... 18% 33,3M 0s
550K .......... .......... .......... .......... .......... 20% 41,6M 0s
600K .......... .......... .......... .......... .......... 21% 50,1M 0s
650K .......... .......... .......... .......... .......... 23% 27,4M 0s
700K .......... .......... .......... .......... .......... 25% 68,8M 0s
750K .......... .......... .......... .......... .......... 26% 43,5M 0s
800K .......... .......... .......... .......... .......... 28% 64,2M 0s
850K .......... .......... .......... .......... .......... 30% 39,1M 0s
900K .......... .......... .......... .......... .......... 32% 59,3M 0s
950K .......... .......... .......... .......... .......... 33% 83,0M 0s
1000K .......... .......... .......... .......... .......... 35% 60,0M 0s
1050K .......... .......... .......... .......... .......... 37% 83,1M 0s
1100K .......... .......... .......... .......... .......... 38% 63,4M 0s
1150K .......... .......... .......... .......... .......... 40% 58,8M 0s
1200K .......... .......... .......... .......... .......... 42% 100M 0s
1250K .......... .......... .......... .......... .......... 43% 72,2M 0s
1300K .......... .......... .......... .......... .......... 45% 95,7M 0s
1350K .......... .......... .......... .......... .......... 47% 86,9M 0s
1400K .......... .......... .......... .......... .......... 48% 96,3M 0s
1450K .......... .......... .......... .......... .......... 50% 118M 0s
1500K .......... .......... .......... .......... .......... 52% 89,3M 0s
1550K .......... .......... .......... .......... .......... 53% 111M 0s
1600K .......... .......... .......... .......... .......... 55% 141M 0s
1650K .......... .......... .......... .......... .......... 57% 71,0M 0s
1700K .......... .......... .......... .......... .......... 58% 134M 0s
1750K .......... .......... .......... .......... .......... 60% 168M 0s
1800K .......... .......... .......... .......... .......... 62% 140M 0s
1850K .......... .......... .......... .......... .......... 64% 148M 0s
1900K .......... .......... .......... .......... .......... 65% 124M 0s
1950K .......... .......... .......... .......... .......... 67% 174M 0s
2000K .......... .......... .......... .......... .......... 69% 118M 0s
2050K .......... .......... .......... .......... .......... 70% 126M 0s
2100K .......... .......... .......... .......... .......... 72% 141M 0s
2150K .......... .......... .......... .......... .......... 74% 126M 0s
2200K .......... .......... .......... .......... .......... 75% 258M 0s
2250K .......... .......... .......... .......... .......... 77% 128M 0s
2300K .......... .......... .......... .......... .......... 79% 128M 0s
2350K .......... .......... .......... .......... .......... 80% 163M 0s
2400K .......... .......... .......... .......... .......... 82% 71,0M 0s
2450K .......... .......... .......... .......... .......... 84% 218M 0s
2500K .......... .......... .......... .......... .......... 85% 261M 0s
2550K .......... .......... .......... .......... .......... 87% 36,1M 0s
2600K .......... .......... .......... .......... .......... 89% 241M 0s
2650K .......... .......... .......... .......... .......... 91% 204M 0s
2700K .......... .......... .......... .......... .......... 92% 258M 0s
2750K .......... .......... .......... .......... .......... 94% 219M 0s
2800K .......... .......... .......... .......... .......... 96% 189M 0s
2850K .......... .......... .......... .......... .......... 97% 322M 0s
2900K .......... .......... .......... .......... .......... 99% 160M 0s
2950K .......... ...... 100% 215M=0,08s
2025-08-02 19:23:53 (37,4 MB/s) - ‘/home/kubu//home/kubu/packages/mfcj4510dwlpr-3.0.1-1.i386.deb’ saved [3038108/3038108]
- Paquet trouvé : mfcj4510dwcupswrapper-3.0.1-1.i386.deb
# Téléchargement du paquet : mfcj4510dwcupswrapper-3.0.1-1.i386.deb
--2025-08-02 19:23:53-- http://www.brother.com/pub/bsc/linux/packages/mfcj4510dwcupswrapper-3.0.1-1.i386.deb
Resolving www.brother.com (www.brother.com)... 104.85.53.149
Connecting to www.brother.com (www.brother.com)|104.85.53.149|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://download.brother.com/pub/com/linux/linux/packages/mfcj4510dwcupswrapper-3.0.1-1.i386.deb [following]
--2025-08-02 19:23:53-- https://download.brother.com/pub/com/linux/linux/packages/mfcj4510dwcupswrapper-3.0.1-1.i386.deb
Resolving download.brother.com (download.brother.com)... 23.217.245.108
Connecting to download.brother.com (download.brother.com)|23.217.245.108|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 15474 (15K) [text/plain]
Saving to: ‘/home/kubu//home/kubu/packages/mfcj4510dwcupswrapper-3.0.1-1.i386.deb’
0K .......... ..... 100% 98,8M=0s
2025-08-02 19:23:53 (98,8 MB/s) - ‘/home/kubu//home/kubu/packages/mfcj4510dwcupswrapper-3.0.1-1.i386.deb’ saved [15474/15474]
- Paquet trouvé : brscan4-0.4.11-1.amd64.deb
# Téléchargement du paquet : brscan4-0.4.11-1.amd64.deb
--2025-08-02 19:23:53-- http://www.brother.com/pub/bsc/linux/packages/brscan4-0.4.11-1.amd64.deb
Resolving www.brother.com (www.brother.com)... 104.85.53.149
Connecting to www.brother.com (www.brother.com)|104.85.53.149|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://download.brother.com/pub/com/linux/linux/packages/brscan4-0.4.11-1.amd64.deb [following]
--2025-08-02 19:23:53-- https://download.brother.com/pub/com/linux/linux/packages/brscan4-0.4.11-1.amd64.deb
Resolving download.brother.com (download.brother.com)... 23.217.245.108
Connecting to download.brother.com (download.brother.com)|23.217.245.108|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 111246 (109K) [text/plain]
Saving to: ‘/home/kubu//home/kubu/packages/brscan4-0.4.11-1.amd64.deb’
0K .......... .......... .......... .......... .......... 46% 3,35M 0s
50K .......... .......... .......... .......... .......... 92% 4,36M 0s
100K ........ 100% 16,1T=0,03s
2025-08-02 19:23:53 (4,12 MB/s) - ‘/home/kubu//home/kubu/packages/brscan4-0.4.11-1.amd64.deb’ saved [111246/111246]
- Paquet trouvé : brscan-skey-0.3.2-0.amd64.deb
# Téléchargement du paquet : brscan-skey-0.3.2-0.amd64.deb
--2025-08-02 19:23:54-- http://www.brother.com/pub/bsc/linux/packages/brscan-skey-0.3.2-0.amd64.deb
Resolving www.brother.com (www.brother.com)... 104.85.53.149
Connecting to www.brother.com (www.brother.com)|104.85.53.149|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://download.brother.com/pub/com/linux/linux/packages/brscan-skey-0.3.2-0.amd64.deb [following]
--2025-08-02 19:23:54-- https://download.brother.com/pub/com/linux/linux/packages/brscan-skey-0.3.2-0.amd64.deb
Resolving download.brother.com (download.brother.com)... 23.217.245.108
Connecting to download.brother.com (download.brother.com)|23.217.245.108|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 73934 (72K) [text/plain]
Saving to: ‘/home/kubu//home/kubu/packages/brscan-skey-0.3.2-0.amd64.deb’
0K .......... .......... .......... .......... .......... 69% 3,43M 0s
50K .......... .......... .. 100% 3,40M=0,02s
2025-08-02 19:23:54 (3,42 MB/s) - ‘/home/kubu//home/kubu/packages/brscan-skey-0.3.2-0.amd64.deb’ saved [73934/73934]
# Vérification des pré-requis
- Paquet 'multiarch-support' non installé
E: Impossible de trouver le paquet multiarch-support
- Paquet 'lib32stdc++6' deja installé
- Paquet 'cups' deja installé
- Paquet 'sane-utils' deja installé
- Paquet 'libusb-0.1-4' deja installé
# Installation du paquet par 'dpkg' du paquet : mfcj4510dwlpr-3.0.1-1.i386.deb
Sélection du paquet mfcj4510dwlpr:i386 précédemment désélectionné.
(Lecture de la base de données... 320332 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../mfcj4510dwlpr-3.0.1-1.i386.deb ...
Dépaquetage de mfcj4510dwlpr:i386 (3.0.1-1) ...
Paramétrage de mfcj4510dwlpr:i386 (3.0.1-1) ...
# Installation du paquet par 'dpkg' du paquet : mfcj4510dwcupswrapper-3.0.1-1.i386.deb
Sélection du paquet mfcj4510dwcupswrapper:i386 précédemment désélectionné.
(Lecture de la base de données... 320357 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../mfcj4510dwcupswrapper-3.0.1-1.i386.deb ...
Dépaquetage de mfcj4510dwcupswrapper:i386 (3.0.1-1) ...
Paramétrage de mfcj4510dwcupswrapper:i386 (3.0.1-1) ...
Restarting cups (via systemctl): cups.service.
lpadmin -p MFCJ4510DW -E -v usb://Brother/MFC-J4510DW?serial=BROD4F340436 -P /usr/share/cups/model/Brother/brother_mfcj4510dw_printer_en.ppd
lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS.
# Installation du paquet par 'dpkg' du paquet : brscan4-0.4.11-1.amd64.deb
(Lecture de la base de données... 320361 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../brscan4-0.4.11-1.amd64.deb ...
Dépaquetage de brscan4 (0.4.11-1) sur (0.4.11-1) ...
Paramétrage de brscan4 (0.4.11-1) ...
This software is based in part on the work of the Independent JPEG Group.
# Installation du paquet par 'dpkg' du paquet : brscan-skey-0.3.2-0.amd64.deb
Sélection du paquet brscan-skey précédemment désélectionné.
(Lecture de la base de données... 320361 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../brscan-skey-0.3.2-0.amd64.deb ...
Dépaquetage de brscan-skey (0.3.2-0) ...
dpkg: brscan-skey : problèmes de dépendances, mais configuration comme demandé :
brscan-skey dépend de libsane (>= 1.0.11-3); cependant :
Le paquet libsane n'est pas installé.
Paramétrage de brscan-skey (0.3.2-0) ...
# Installation du paquet par 'dpkg' du paquet : brother-udev-rule-type1-1.0.2-0.all.deb
Sélection du paquet brother-udev-rule-type1 précédemment désélectionné.
(Lecture de la base de données... 320381 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../brother-udev-rule-type1-1.0.2-0.all.deb ...
Dépaquetage de brother-udev-rule-type1 (1.0.2) ...
Paramétrage de brother-udev-rule-type1 (1.0.2) ...
# Recherche d'un fichier PPD
- Fichier PPD :
# Ajout de l'imprimante MFC-J4510DW
- Backup du fichier /etc/cups/printers.conf.O
- Arret du service CUPS
- Restauration du fichier printers.conf
- Redémarrage du service CUPS
- Restauration du fichier printers.conf.O
# Configuration du scanner
Adding ATTRS{idVendor}=="04f9", ENV{libsane_matched}="yes" to /lib/udev/rules.d/60-libsane1.rules
Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR
Hors ligne
#15 Hier à 22:37
- Watael
Re : remise au gout du jour du script de demonipuch imprimante brother
concernant la validation de l'adresse IP, la commande du script ne vérifie rien.
je verrai plutôt un avertissement pour que l'utilisateur vérifie que l'imprimante est allumée, puis, pour valider que l'IP est correcte, une commande netcat...
?
à part ça :
function et (), c'est redondant.
Dir="$PWD/${0%/*}"
mais j'ai un gros doute, parce que $(pwd) peut être n'importe quel répertoire (ça dépend où "je suis"), et, chez moi, $0 sera sous $HOME/bin/.
mv "$Logfile" "$(date +"$LogFile.%F_%T")"
je préfère avoir un log par exécution d'un script, plutôt que d'écraser le précédent.
Model_Name=${Model_Name^^}
Dernière modification par Watael (Hier à 22:38)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#16 Hier à 22:51
- iznobe
Re : remise au gout du jour du script de demonipuch imprimante brother
nouveau code :
#!/bin/bash
# Script d'installation pour imprimantes Brother
. /lib/lsb/init-functions
Model_Name="$1"
Con_Typ="$2"
if ((Con_Typ)); then Connection="Réseau"; else Connection="USB";fi
IP="$3"
User="$SUDO_USER"
Dir="$(pwd)/$(dirname "$0")"
Temp_Dir="$Dir/packages"
Codename="$(lsb_release -cs)"
Arch="$(uname -m)"
Logfile="/home/$User/brprinter-installer.log"
Lib_Dir="/usr/lib/$Arch-linux-gnu"
Url_Inf="http://www.brother.com/pub/bsc/linux/infs"
# Packages :
# https://download.brother.com/pub/com/linux/linux/packages/
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)); 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 [[ -f $Logfile ]]; then
mv "$Logfile" "$(date +"$LogFile.%F_%T")"
fi
# Si le premier argument est vide on demande le modèle de l'imprimante
while [[ -z "$Model_Name" ]]; do
read -rp "Entrez votre modèle d' imprimante : " Model_Name
done
Model_Name=Model_Name=${Model_Name^^}
# On demande comment est connectée l'imprimante
while [[ -z "$Connection" ]]; do
read -rp "Sélectionner le type de connectivité : [0] USB - [1] Réseau , votre choix : "
case $REPLY in
0)
Connection="USB"
;;
1)
Connection="Réseau"
echo -e "$Red Vous devez d' abord 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 -rp "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 "# Type de connexion : $Connection" &>> "$Logfile"
RegIP="^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"
if [[ "$Connection" == "Réseau" ]]; then
while [[ -z "$IP" ]]; do
read -rp "Entrez l'adresse IP de votre imprimante : " IP
if [[ $IP =~ $RegIP ]]; then
echo "# Adresse IP : $IP" &>> "$Logfile"
else
unset IP
fi
done
fi
}
##############################
# TÉLÉCHARGEMENT DES PILOTES #
##############################
function do_download_drivers() {
# On crée le dossier de téléchargement des paquets
if [[ ! -d "$Temp_Dir" ]]; then
mkdir "$Temp_Dir"
fi
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)
Scankey_Deb=$(wget -q "$Printer_Info" -O - | grep SCANKEY_DRV - | cut -d= -f2)
Scanner_Info="$Url_Inf/$Scanner_Deb.lnk"
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
if [[ -n "$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
for pkg in "$Printer_Lpd_Deb" "$Printer_Cups_Deb" "$Printer_Drv_Deb" "$Scanner_Drv_Deb" "$Scankey_Drv_Deb"; do
# On ajoute la liste des pilotes trouvés au fichier de journalisation
if [[ -n "$pkg" ]]; then
echo " - Paquet trouvé : $pkg" &>> "$Logfile"
log_action_end_msg 0
# On télécharge les pilotes trouvés
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 $?
fi
done
}
###############################
# 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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'multiarch-support' non installé" &>> "$Logfile"
apt-get install -qq multiarch-support &>> "$Logfile"
log_action_end_msg $?
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'lib32stdc++6' non installé" &>> "$Logfile"
apt-get install -qq lib32stdc++6 &>> "$Logfile"
log_action_end_msg $?
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
apt-get install -qq cups &>> "$Logfile"
log_action_end_msg $?
fi
# Si un pilote pour le scanner a été trouvé on vérifie que sane-utils est installé
if [[ -n $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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'sane-utils' non installé" &>> "$Logfile"
apt-get install -qq sane-utils &>> "$Logfile"
log_action_end_msg $?
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'libusb-0.1-4' non installé" &>> "$Logfile"
apt-get install -qq libusb-0.1-4 &>> "$Logfile"
log_action_end_msg $?
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
apt-get install -qq csh &>> "$Logfile"
log_action_end_msg "$?"
else
echo " - Paquet 'csh' deja installé" &>> "$Logfile"
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_begin_msg "Le dossier '/usr/share/cups/model' existe deja"
log_action_end_msg $?
else
log_action_end_msg 1
log_action_begin_msg "Creation du dossier '/usr/share/cups/model'"
mkdir -pv /usr/share/cups/model &>> "$Logfile"
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_begin_msg "Le dossier '/var/spool/lpd' existe deja"
log_action_end_msg $?
else
log_action_end_msg 1
log_action_begin_msg "Creation du dossier '/var/spool/lpd'"
mkdir -pv /var/spool/lpd &>> "$Logfile"
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" "$Udev_Deb"; do
if [[ -n "$pkg" ]] && [[ -f "$Temp_Dir/$pkg" ]]; then
log_action_begin_msg "Installation du paquet : $pkg"
echo &>> "$Logfile"
echo "# Installation par 'dpkg' du paquet : $pkg" &>> "$Logfile"
dpkg -i --force-all "$Temp_Dir/$pkg" &>> "$Logfile"
log_action_end_msg $?
fi
done
}
#################################
# 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 [[ -n "$Scanner_Deb" ]]; then
echo -e "$Blue Configuration du scanner $Resetcolor"
echo &>> "$Logfile"
echo "# Configuration du scanner" &>> "$Logfile"
if [[ $Connection == "USB" ]]; then
# 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 bibliotheques
if [[ "$Arch" == "x86_64" ]] && [[ -d $Lib_Dir ]]; then
log_action_begin_msg "Copie des bibliotheques nécessaires"
if [[ -e /usr/bin/brsaneconfig ]]; then
cd "$Lib_Dir" || exit
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 || exit
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" || exit
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 || exit
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" || exit
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 || exit
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 || exit
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
elif [[ -e /usr/bin/brsaneconfig5 ]]; then
cd "$Lib_Dir"/sane || exit
ln -sf /usr/lib/x86_64-linux-gnu/sane/libsane-brother5.so.1.0 libsane-brother5.so.1
ln -sf /usr/lib/x86_64-linux-gnu/sane/libsane-brother5.so.1.0.7 libsane-brother5.so.1.0
ln -sf /opt/brother/scanner/brscan5/libsane-brother5.so.1.0.7 libsane-brother5.so.1.0.7
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
Dernière modification par iznobe (Hier à 22:57)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#17 Hier à 22:57
- iznobe
Re : remise au gout du jour du script de demonipuch imprimante brother
à part ça :
function et (), c'est redondant.
pas tout compris ...
un fichier de log existe si on utilise le script de demonipuch et il contient beaucoup d’informations utiles à comparer avec ton script si ça peut être utile
j ' ai lu le script , mais merci .
d' ailleurs , il y a trop de chose superflu , j' en ai enlevé dans le log .
faudrait voir aussi avec le cas pour les paquets en 32bits et le comportement de la libusbb-0.1-4:i386 si elle est correctement prise en compte
faut que je me penche sur la question , mais c' est quasiment inutile maintenant , les bibliotheques en 32 bit sont amenées à disparaitre , et c' est en partie justement a cause de ca que le script est à revoir avec des noms de paquets differents et le multiarch-support qui a disparu pour les versions 24.04 et superieures ... bref , a creuser .
mkdir: cannot create directory ‘/home/kubu//home/kubu/packages’: No such file or directory
j ' avais deja remarqué cette erreur . il faut corriger cela .
Selon moi , le probleme est dans cette partie de code :
Dir="$(pwd)/$(dirname "$0")"
Dernière modification par iznobe (Hier à 23:10)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#18 Hier à 23:11
- Watael
Re : remise au gout du jour du script de demonipuch imprimante brother
c'est function OU(xor) (); les deux, ensembles, c'est un de trop.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#19 Hier à 23:30
- eric63
Re : remise au gout du jour du script de demonipuch imprimante brother
marche plus avec le nouveau script
kubu@kubu-System-Product-Name:~$ sudo /home/kubu/script_iznobe.sh
[sudo] password for kubu:
Entrez votre modèle d' imprimante : mfc j4510dw
Téléchargement des pilotes de l'imprimante
* Recherche des pilotes... [fail]
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.
kubu@kubu-System-Product-Name:~$ sudo /home/kubu/script_iznobe.sh
Entrez votre modèle d' imprimante : MFC-J4510dw
Téléchargement des pilotes de l'imprimante
* Recherche des pilotes... [fail]
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.
kubu@kubu-System-Product-Name:~$ sudo /home/kubu/script_iznobe.sh
Entrez votre modèle d' imprimante : Mfc-j4510dw
Téléchargement des pilotes de l'imprimante
* Recherche des pilotes... [fail]
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.
kubu@kubu-System-Product-Name:~$ sudo /home/kubu/script_iznobe.sh
Entrez votre modèle d' imprimante : MFC-J4510DW
Téléchargement des pilotes de l'imprimante
* Recherche des pilotes... [fail]
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.
kubu@kubu-System-Product-Name:~$ sudo /home/kubu/script_iznobe.sh
Entrez votre modèle d' imprimante : MFC-j4510dw
Téléchargement des pilotes de l'imprimante
* Recherche des pilotes... [fail]
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.
kubu@kubu-System-Product-Name:~$ /home/kubu/script_iznobe.sh
Vous devez lancer ce script en tant que root : sudo bash /home/kubu/script_iznobe.sh
kubu@kubu-System-Product-Name:~$ sudo bash /home/kubu/script_iznobe.sh
Entrez votre modèle d' imprimante : MFC-j4510DW
Téléchargement des pilotes de l'imprimante
* Recherche des pilotes... [fail]
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.
kubu@kubu-System-Product-Name:~$
Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR
Hors ligne
#20 Hier à 23:31
- iznobe
Re : remise au gout du jour du script de demonipuch imprimante brother
un de trop , je dirais superflu peut être , mais pas de trop vu que shellcheck ne dis rien à ce sujet , et que le script fonctionne de la sorte depuis bientot 9 ans ...
bref , j ' ai " simplifié " et apporté quelques modifications mineures :
#!/bin/bash
# Script d'installation pour imprimantes Brother
. /lib/lsb/init-functions
Model_Name="$1"
Con_Typ="$2"
if ((Con_Typ)); then Connection="Réseau"; else Connection="USB";fi
IP="$3"
User="$SUDO_USER"
Dir="$(pwd)"/"$(dirname "$0")"
Temp_Dir="/tmp/packages"
Codename="$(lsb_release -cs)"
Arch="$(uname -m)"
date=$(date +%F_%T)
#Logfile="/home/$User/brprinter-installer.log"
Logfile="/home/$User/brprinter-installer.$date.log"
Lib_Dir="/usr/lib/$Arch-linux-gnu"
Url_Inf="http://www.brother.com/pub/bsc/linux/infs"
# Packages :
# https://download.brother.com/pub/com/linux/linux/packages/
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 #
#########################
do_init_script() {
# On vérifie qu'on lance le script en root
if ((EUID)); then
echo -e "$Red Vous devez lancer ce script en tant que root : sudo bash $0 $Resetcolor"
exit 0
fi
# Si le premier argument est vide on demande le modèle de l'imprimante
while [[ -z "$Model_Name" ]]; do
read -rp "Entrez votre modèle d' imprimante : " Model_Name
done
Model_Name=${Model_Name^^}
# On demande comment est connectée l'imprimante
while [[ -z "$Connection" ]]; do
read -rp "Sélectionner le type de connectivité : [0] USB - [1] Réseau , votre choix : "
case $REPLY in
0)
Connection="USB"
;;
1)
Connection="Réseau"
echo -e "$Red Vous devez d' abord 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 -rp "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 "# Type de connexion : $Connection" &>> "$Logfile"
echo "# Repertoire courant : $Dir" &>> "$Logfile"
RegIP="^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"
if [[ "$Connection" == "Réseau" ]]; then
while [[ -z "$IP" ]]; do
read -rp "Entrez l'adresse IP de votre imprimante : " IP
if [[ $IP =~ $RegIP ]]; then
echo "# Adresse IP : $IP" &>> "$Logfile"
else
unset IP
fi
done
fi
echo "# Repertoire courant : $Dir" &>> "$Logfile"
}
##############################
# TÉLÉCHARGEMENT DES PILOTES #
##############################
do_download_drivers() {
echo -e "$Blue Téléchargement des pilotes de l'imprimante $Resetcolor"
echo "# Vérification des pré-requis" &>> "$Logfile"
# On crée le dossier de téléchargement des paquets
if [[ ! -d "$Temp_Dir" ]]; then
mkdir "$Temp_Dir"
fi
# On transforme le nom de l'imprimante
log_action_begin_msg "Recherche des pilotes"
Printer_Name=$(echo "$Model_Name" | sed -e 's/-//')
# 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)
Scankey_Deb=$(wget -q "$Printer_Info" -O - | grep SCANKEY_DRV - | cut -d= -f2)
Scanner_Info="$Url_Inf/$Scanner_Deb.lnk"
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
if [[ -n "$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
for pkg in "$Printer_Lpd_Deb" "$Printer_Cups_Deb" "$Printer_Drv_Deb" "$Scanner_Drv_Deb" "$Scankey_Drv_Deb"; do
# On ajoute la liste des pilotes trouvés au fichier de journalisation
if [[ -n "$pkg" ]]; then
echo " - Paquet trouvé : $pkg" &>> "$Logfile"
log_action_end_msg 0
# On télécharge les pilotes trouvés
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 $?
fi
done
}
###############################
# VERIFICATION DES PRÉ-REQUIS #
###############################
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'multiarch-support' non installé" &>> "$Logfile"
apt-get install -qq multiarch-support &>> "$Logfile"
log_action_end_msg $?
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'lib32stdc++6' non installé" &>> "$Logfile"
apt-get install -qq lib32stdc++6 &>> "$Logfile"
log_action_end_msg $?
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
apt-get install -qq cups &>> "$Logfile"
log_action_end_msg $?
fi
# Si un pilote pour le scanner a été trouvé on vérifie que sane-utils est installé
if [[ -n $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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'sane-utils' non installé" &>> "$Logfile"
apt-get install -qq sane-utils &>> "$Logfile"
log_action_end_msg $?
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'libusb-0.1-4' non installé" &>> "$Logfile"
apt-get install -qq libusb-0.1-4 &>> "$Logfile"
log_action_end_msg $?
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
apt-get install -qq csh &>> "$Logfile"
log_action_end_msg "$?"
else
echo " - Paquet 'csh' deja installé" &>> "$Logfile"
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_begin_msg "Le dossier '/usr/share/cups/model' existe deja"
log_action_end_msg $?
else
log_action_end_msg 1
log_action_begin_msg "Creation du dossier '/usr/share/cups/model'"
mkdir -pv /usr/share/cups/model &>> "$Logfile"
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_begin_msg "Le dossier '/var/spool/lpd' existe deja"
log_action_end_msg $?
else
log_action_end_msg 1
log_action_begin_msg "Creation du dossier '/var/spool/lpd'"
mkdir -pv /var/spool/lpd &>> "$Logfile"
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 #
############################
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" "$Udev_Deb"; do
if [[ -n "$pkg" ]] && [[ -f "$Temp_Dir/$pkg" ]]; then
log_action_begin_msg "Installation du paquet : $pkg"
echo &>> "$Logfile"
echo "# Installation par 'dpkg' du paquet : $pkg" &>> "$Logfile"
dpkg -i --force-all "$Temp_Dir/$pkg" &>> "$Logfile"
log_action_end_msg $?
fi
done
}
#################################
# CONFIGURATION DE L'IMPRIMANTE #
#################################
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 #
############################
do_configure_scanner() {
if [[ -n "$Scanner_Deb" ]]; then
echo -e "$Blue Configuration du scanner $Resetcolor"
echo &>> "$Logfile"
echo "# Configuration du scanner" &>> "$Logfile"
if [[ $Connection == "USB" ]]; then
# 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 bibliotheques
if [[ "$Arch" == "x86_64" ]] && [[ -d $Lib_Dir ]]; then
log_action_begin_msg "Copie des bibliotheques nécessaires"
if [[ -e /usr/bin/brsaneconfig ]]; then
cd "$Lib_Dir" || exit
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 || exit
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" || exit
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 || exit
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" || exit
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 || exit
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 || exit
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
elif [[ -e /usr/bin/brsaneconfig5 ]]; then
cd "$Lib_Dir"/sane || exit
ln -sf /usr/lib/x86_64-linux-gnu/sane/libsane-brother5.so.1.0 libsane-brother5.so.1
ln -sf /usr/lib/x86_64-linux-gnu/sane/libsane-brother5.so.1.0.7 libsane-brother5.so.1.0
ln -sf /opt/brother/scanner/brscan5/libsane-brother5.so.1.0.7 libsane-brother5.so.1.0.7
else
log_action_end_msg 1
echo -e "$Red No config binary found. $Resetcolor"
fi
fi
fi
}
#################
# FIN DU SCRIPT #
#################
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
Dernière modification par iznobe (Hier à 23:53)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#21 Hier à 23:41
- eric63
Re : remise au gout du jour du script de demonipuch imprimante brother
ok cette 3ème mouture est mieux, je trouve dommage que la fin se termine sans savoir ce qui se passe pour le scanner
kubu@kubu-System-Product-Name:~$ sudo bash /home/kubu/script_iznobe.sh
Entrez votre modèle d' imprimante : mfc-j4510dw
Téléchargement des pilotes de l'imprimante
* Recherche des pilotes... * Téléchargement du paquet : brother-udev-rule-type1-1.0.2-0.all.deb... [ OK ]
[ OK ]
* Téléchargement du paquet : mfcj4510dwlpr-3.0.1-1.i386.deb... [ OK ]
[ OK ]
* Téléchargement du paquet : mfcj4510dwcupswrapper-3.0.1-1.i386.deb... [ OK ]
[ OK ]
* Téléchargement du paquet : brscan4-0.4.11-1.amd64.deb... [ OK ]
[ OK ]
* Téléchargement du paquet : brscan-skey-0.3.2-0.amd64.deb... [ OK ]
Vérification des pré-requis
* Mise à jour de la liste des paquets... [ OK ]
* Recherche du paquet 'multiarch-support' sur votre système... [fail]
[fail]
* Recherche du paquet 'lib32stdc++6' sur votre système... [ OK ]
* Recherche du paquet 'cups' sur votre système... [ OK ]
* Recherche du paquet 'sane-utils' sur votre système... [ OK ]
* Recherche du paquet 'libusb-0.1-4' sur votre système... [ OK ]
* Recherche du dossier '/usr/share/cups/model' sur votre système... * Le dossier '/usr/share/cups/model' existe deja... [ OK ]
* Recherche du dossier '/var/spool/lpd' sur votre système... * Le dossier '/var/spool/lpd' existe deja... [ OK ]
Installation des pilotes
* Installation du paquet : mfcj4510dwlpr-3.0.1-1.i386.deb... [ OK ]
* Installation du paquet : mfcj4510dwcupswrapper-3.0.1-1.i386.deb... [ OK ]
* Installation du paquet : brscan4-0.4.11-1.amd64.deb... [ OK ]
* Installation du paquet : brscan-skey-0.3.2-0.amd64.deb... [ OK ]
* Installation du paquet : brother-udev-rule-type1-1.0.2-0.all.deb... [ OK ]
Configuration de l'imprimante
* Recherche d'un fichier PPD sur votre système... dpkg-deb: erreur: erreur de lecture de numéro magique de version de l'archive depuis le fichier /tmp/packages/: Is a directory
/home/kubu/script_iznobe.sh: line 320: MFCJ4510DW: command not found
[ OK ]
* Ajout de l'imprimante MFC-J4510DW... lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS.
lpadmin: Unable to open PPD "": Impossible d'ouvrir le fichier PPD on line 0.
[fail]
Configuration du scanner
* Copie des bibliotheques nécessaires... [ OK ]
kubu@kubu-System-Product-Name:~$
Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR
Hors ligne
#22 Hier à 23:43
- Watael
Re : remise au gout du jour du script de demonipuch imprimante brother
ce n'est pas une erreur de syntaxe, c'est sans doute pour ça que shellcheck reste muet.
un pléonasme n'est pas non plus une erreur de syntaxe, et si ce n'est pas une erreur, quand ce n'est pas intentionnel, ça reste une maladresse.
Dernière modification par Watael (Hier à 23:44)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#23 Hier à 23:57
- eric63
Re : remise au gout du jour du script de demonipuch imprimante brother
Quand même un petit problème je n’ai plus le choix entre usb ou réseau
Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR
Hors ligne
#24 Aujourd'hui à 00:01
- iznobe
Re : remise au gout du jour du script de demonipuch imprimante brother
je trouve dommage que la fin se termine sans savoir ce qui se passe pour le scanner
et bien si , il le dit :
Configuration du scanner
* Copie des bibliotheques nécessaires...
en fait il n' y a pas le detail , mais c' est lié a sane . les bibliothèques , souvent , ca reste de la creation de lien vers le dossier lib qui contient celles-ci justement .
il n' y a rien de special a dire à ce propos .
++++++++++++++++++++++++++++++++++++++++
j ' ai mis direct la date pour le fichier log .
++++++++++++++++++++++++++++++++++++++++++++++++
je ne comprends pas ce qu ' a voulu faire demonipuch avec cette portion de code :
echo &>> "$Logfile"
shellcheck me dit :
Line 296:
echo &>> "$Logfile"
^-- SC2129 (style): Consider using { cmd1; cmd2; } >> file instead of individual redirects.
alors je suis pas certain , mais ls semble que ce soit purement de la cosmétique dans le fichier de log , histoire de sauter une ligne ...
+++++++++++++++++++++++++++++++++++++++++++++++
en attendant , avec les dernieres petites modifs :
#!/bin/bash
# Script d'installation pour imprimantes Brother
. /lib/lsb/init-functions
Model_Name="$1"
Con_Typ="$2"
if ((Con_Typ)); then Connection="Réseau"; #else Connection="USB"
fi
IP="$3"
User="$SUDO_USER"
Dir="$(pwd)"/"$(dirname "$0")"
Temp_Dir="/tmp/packages"
Codename="$(lsb_release -cs)"
Arch="$(uname -m)"
date=$(date +%F_%T)
Logfile="/home/$User/brprinter-installer.log"
#Logfile="/home/$User/brprinter-installer.$date.log"
Lib_Dir="/usr/lib/$Arch-linux-gnu"
Url_Inf="http://www.brother.com/pub/bsc/linux/infs"
# Packages :
# https://download.brother.com/pub/com/linux/linux/packages/
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 #
#########################
do_init_script() {
# On vérifie qu'on lance le script en root
if ((EUID)); 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 [[ -f $Logfile ]]; then
mv "$Logfile" "$(date +"$Logfile.%F_%T")"
fi
# Si le premier argument est vide on demande le modèle de l'imprimante
while [[ -z "$Model_Name" ]]; do
read -rp "Entrez votre modèle d' imprimante : " Model_Name
done
Model_Name=${Model_Name^^}
# On demande comment est connectée l'imprimante
while [[ -z "$Connection" ]]; do
read -rp "Sélectionner le type de connectivité : [0] USB - [1] Réseau , votre choix : "
case $REPLY in
0)
Connection="USB"
;;
1)
Connection="Réseau"
echo -e "$Red Vous devez d' abord 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 -rp "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 "# Type de connexion : $Connection" &>> "$Logfile"
echo "# Repertoire courant : $Dir" &>> "$Logfile"
RegIP="^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"
if [[ "$Connection" == "Réseau" ]]; then
while [[ -z "$IP" ]]; do
read -rp "Entrez l'adresse IP de votre imprimante : " IP
if [[ $IP =~ $RegIP ]]; then
echo "# Adresse IP : $IP" &>> "$Logfile"
else
unset IP
fi
done
fi
echo "# Repertoire courant : $Dir" &>> "$Logfile"
}
##############################
# TÉLÉCHARGEMENT DES PILOTES #
##############################
do_download_drivers() {
echo -e "$Blue Téléchargement des pilotes de l'imprimante $Resetcolor"
echo "# Vérification des pré-requis" &>> "$Logfile"
# On crée le dossier de téléchargement des paquets
if [[ ! -d "$Temp_Dir" ]]; then
mkdir "$Temp_Dir"
fi
# On transforme le nom de l'imprimante
log_action_begin_msg "Recherche des pilotes"
Printer_Name=$(echo "$Model_Name" | sed -e 's/-//')
# 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)
Scankey_Deb=$(wget -q "$Printer_Info" -O - | grep SCANKEY_DRV - | cut -d= -f2)
Scanner_Info="$Url_Inf/$Scanner_Deb.lnk"
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
if [[ -n "$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
for pkg in "$Printer_Lpd_Deb" "$Printer_Cups_Deb" "$Printer_Drv_Deb" "$Scanner_Drv_Deb" "$Scankey_Drv_Deb"; do
# On ajoute la liste des pilotes trouvés au fichier de journalisation
if [[ -n "$pkg" ]]; then
echo " - Paquet trouvé : $pkg" &>> "$Logfile"
log_action_end_msg 0
# On télécharge les pilotes trouvés
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 $?
fi
done
}
###############################
# VERIFICATION DES PRÉ-REQUIS #
###############################
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'multiarch-support' non installé" &>> "$Logfile"
apt-get install -qq multiarch-support &>> "$Logfile"
log_action_end_msg $?
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'lib32stdc++6' non installé" &>> "$Logfile"
apt-get install -qq lib32stdc++6 &>> "$Logfile"
log_action_end_msg $?
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
apt-get install -qq cups &>> "$Logfile"
log_action_end_msg $?
fi
# Si un pilote pour le scanner a été trouvé on vérifie que sane-utils est installé
if [[ -n $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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'sane-utils' non installé" &>> "$Logfile"
apt-get install -qq sane-utils &>> "$Logfile"
log_action_end_msg $?
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' deja installé" &>> "$Logfile"
else
log_action_end_msg 1
echo " - Paquet 'libusb-0.1-4' non installé" &>> "$Logfile"
apt-get install -qq libusb-0.1-4 &>> "$Logfile"
log_action_end_msg $?
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
apt-get install -qq csh &>> "$Logfile"
log_action_end_msg "$?"
else
echo " - Paquet 'csh' deja installé" &>> "$Logfile"
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_begin_msg "Le dossier '/usr/share/cups/model' existe deja"
log_action_end_msg $?
else
log_action_end_msg 1
log_action_begin_msg "Creation du dossier '/usr/share/cups/model'"
mkdir -pv /usr/share/cups/model &>> "$Logfile"
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_begin_msg "Le dossier '/var/spool/lpd' existe deja"
log_action_end_msg $?
else
log_action_end_msg 1
log_action_begin_msg "Creation du dossier '/var/spool/lpd'"
mkdir -pv /var/spool/lpd &>> "$Logfile"
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 #
############################
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" "$Udev_Deb"; do
if [[ -n "$pkg" ]] && [[ -f "$Temp_Dir/$pkg" ]]; then
log_action_begin_msg "Installation du paquet : $pkg"
echo &>> "$Logfile"
echo "# Installation par 'dpkg' du paquet : $pkg" &>> "$Logfile"
dpkg -i --force-all "$Temp_Dir/$pkg" &>> "$Logfile"
log_action_end_msg $?
fi
done
}
#################################
# CONFIGURATION DE L'IMPRIMANTE #
#################################
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 #
############################
do_configure_scanner() {
if [[ -n "$Scanner_Deb" ]]; then
echo -e "$Blue Configuration du scanner $Resetcolor"
echo &>> "$Logfile"
echo "# Configuration du scanner" &>> "$Logfile"
if [[ $Connection == "USB" ]]; then
# 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 bibliotheques
if [[ "$Arch" == "x86_64" ]] && [[ -d $Lib_Dir ]]; then
log_action_begin_msg "Copie des bibliotheques nécessaires"
if [[ -e /usr/bin/brsaneconfig ]]; then
cd "$Lib_Dir" || exit
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 || exit
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" || exit
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 || exit
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" || exit
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 || exit
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 || exit
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
elif [[ -e /usr/bin/brsaneconfig5 ]]; then
cd "$Lib_Dir"/sane || exit
ln -sf /usr/lib/x86_64-linux-gnu/sane/libsane-brother5.so.1.0 libsane-brother5.so.1
ln -sf /usr/lib/x86_64-linux-gnu/sane/libsane-brother5.so.1.0.7 libsane-brother5.so.1.0
ln -sf /opt/brother/scanner/brscan5/libsane-brother5.so.1.0.7 libsane-brother5.so.1.0.7
else
log_action_end_msg 1
echo -e "$Red No config binary found. $Resetcolor"
fi
fi
fi
}
#################
# FIN DU SCRIPT #
#################
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
Dernière modification par iznobe (Aujourd'hui à 00:19)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#25 Aujourd'hui à 00:16
- eric63
Re : remise au gout du jour du script de demonipuch imprimante brother
essai de la 4ème mouture
pas de choix usb ou réseau ??
erreur
Configuration de l'imprimante
* Recherche d'un fichier PPD sur votre système... dpkg-deb: erreur: erreur de lecture de numéro magique de version de l'archive depuis le fichier /tmp/packages/: Is a directory
/home/kubu/script_iznobe.sh: line 318: MFCJ4510DW: command not found
mise à jour provoque problème sur 25.04
<html>La résolution de dépendances a échoué:<br/><br/>The following packages have unmet dependencies:
brscan-skey: Dépend: libsane (>= 1.0.11-3) but it is not installable
</html>
Dernière modification par eric63 (Aujourd'hui à 00:31)
Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR
Hors ligne