Contenu | Rechercher | Menus

Annonce

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

À propos de l'équipe du forum.

#251 Hier à 22:46

iznobe

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

je reprendrais demain , si j' ai un peu de temps pour remplacer nmap par avahi , ca parait plus " sur " et c' est surtout plus rapide , niveau code , j ' ai pas l' impression que cela va changer grand chose ( a part qu ' on inverse le cheminement , recuperation de l' IP à la fin ) .

le code avec la modif pour le tableau , le deroulement du script à l' air d' etre OK , meme si certainement ca pourra etre amelioré .

#!/bin/bash -x
# > vim search whole line : `yy / <Ctrl-F> p <Enter>'
 # définitions de variables
 # gestion des arguments
 # infos Brother
 # quelques fonctions
 # quelques vérifications
 # initialisation du tableau associatif `printer'
 # vérification de variables disponibles dans `printer'
 # préparation du système
 # téléchargement des pilotes
 # configuration de l'imprimante
 # configuration du scanner
# <

shopt -s extglob nullglob globstar

############################
 # définitions de variables
############################
if test -f /etc/lsb-release
then
    . /etc/lsb-release
    DistroName="$DISTRIB_ID"
    VersionYear="${DISTRIB_RELEASE::2}"
    codeName="$DISTRIB_CODENAME"
elif test -f /usr/lib/os-release
then
    . /usr/lib/os-release
    DistroName="$NAME"
    VersionYear="${VERSION_ID::2}"
    codeName="$VERSION_CODENAME"
fi
user="$SUDO_USER"
arch="$(uname -m)"
date=$(date +%F_%T)
tmpDir="/tmp/packages"
Logfile="/home/$user/brprinter_install.log"
libDir="/usr/lib/$arch-linux-gnu"

declare -A printer
declare -i err

#################
 # infos Brother
#################
# ancienne adresse d' obtention des infos :
#Url_Info="http://www.brother.com/pub/bsc/linux/infs"
# nouvelle adresse :
Url_Info="https://download.brother.com/pub/com/linux/linux/infs"
# Packages :
Url_Pkg="https://download.brother.com/pub/com/linux/linux/packages"
Url_Pkg2="http://www.brother.com/pub/bsc/linux/packages" # ancienne adresse d'obtention des paquets

Udev_Rules="/lib/udev/rules.d/60-libsane1.rules"
Udev_Deb_Name="brother-udev-rule-type1-1.0.2-0.all.deb"
Udev_Deb_Url="http://download.brother.com/welcome/dlf006654"
Scankey_Drv_Deb_Name="brscan-skey-0.3.4-0.amd64.deb"

printerInfo="$Url_Info/$printerName"
Printer_dl_url="https://support.brother.com/g/b/downloadtop.aspx?c=fr&lang=fr&prod=${printerName}_us_eu_as"

#######################
 # quelques fonctions #
#######################
errQuit()
{
    >&2 echo "$@"
    exit 1
}
verif_lien()
{ # pour faire un boucle, suffit-il vérifier que le nombre d'arguments est pair ?
    local lien=$1 cible=$2
    if ! test -L "$lien"
    then
        ln -s "$cible" "$lien"
    fi
}
install_pkg()
{
    for pkg do
        if ! dpkg-query -f '${binary:Package}\n' -W "$pkg" &>/dev/null
        then
            apt-get install -qq "$pkg"
        fi
    done
}

###########################
 # quelques vérifications #
###########################
if test "$DistroName" != "Ubuntu"; then errQuit "La distribution n’est pas Ubuntu ou une des ses variantes officielles.";fi
if test "$SHELL" != "/bin/bash"; then errQuit "Shell non compatible. utilisez : bash"; fi
if test "$arch" != "x86_64"; then errQuit "Système non compatible."; fi
#if [[ $arch != @(i386|i686|x86_64) ]]
if ((EUID)); then errQuit "Vous devez lancer le script en root : sudo $0"; fi
if ! nc -z -w5 'brother.com' 80; then errQuit "le site \"brother.com\" n'est pas joignable.";fi

##########################
 # DETECTION AUTOMATIQUE #
##########################
# printer_name= ???
declare -a printer_IP printer_name
my_IP="$(hostname -I | cut -d ' ' -f1)"
#echo "$my_IP"
printer_IP=( $(nmap -sn -oG - "$my_IP"/24 | gawk 'tolower($3) ~ /brother/{print $2}') )
#echo "${printer_IP[*]}"
for p_ip in "${printer_IP[@]}"; do
    wget -E "$p_ip" -O "$tmpDir/index.html"
    # version robuste :
    printer_name+="$(xmllint --html --xpath '//title/text()' "$tmpDir/index.html" 2>/dev/null | cut -d ' ' -f2)"
    #echo "printer_name == ${printer_name[*]}"
done
# echo "printer_name RESULT ==
# TAB printer_IP == ${printer_IP[*]}
# TAB printer_name == ${printer_name[*]}"

# printer_name= ???
printer_name+="$(lsusb | grep 04f9: | cut -c 58- | cut -d ' ' -f2)"
# echo "printer_name == ${printer_name[*]}"

case ${#printer_name[*]} in
    0) echo "Aucune imprimante détectée !
       Êtes vous sùr de l' avoir connectée au port USB de votre ordinateur ou à votre reseau local ?"
       # on repars donc avec les questions de base : modele etc ...
        ;;
    1)  echo "une seule imprimante détectée"
        modelName=${printer_name[0]} # ! printer_name != printerName
        # pas besoin de poser de question , il ne reste plus qu ' a installer
        ;;
    *)  echo "plusieurs imprimantes ont été détectées"
        # il faut presenter sous forme de liste les éléments recupérés :
        # modele du materriel : IP ou USB
        # et demander à l' utilisateur de choisir un numero dans cette liste
        n_print=$(("${#printer_name[@]}"))
        for n in "${!printer_name[@]}"; do
            echo " $((n+1))  ⇒  ${printer_name[$n]}"
        done
        while test -z "$choix"; do
            read -rp "Choisissez le numero qui correspond à l' imprimante que voulez installer" choix
            if ! ((choix > 0 && choix <= n_print)); then
                echo "choix invalide !"
                unset choix
            fi
        done
        modelName="${printer_name[$((choix-1))]}"
        ;;
esac

##########################
 # gestion des arguments #
##########################
if test -z $modelName; then
    declare -u modelName=$1
else
    modelName="${modelName^^}"
fi
until test -n "$modelName"
do
    read -rp 'Entrez le modèle de votre imprimante : ' modelName
done
printerName="${modelName//-/}" # ! printer_name != printerName
#check IP
until test -n "$IP"
do
    read -rp "Voulez-vous configurer votre imprimante pour qu'elle fonctionne en réseau ? [o/N]: "
    [[ $REPLY == [YyOo] ]] || break
    if test -n "$2"
    then
        IP=$2
        shift $#
    else
        read -rp "Entrez l'adresse IP de votre imprimante : " IP
    fi
    IFS='.' read -ra ip <<< "$IP"
    for i in "${ip[@]}"
    do
        ((n++ ? i >=0 && i<=255 : i>0 && i<=255)) || err+=1
    done
    if (( ${#ip[*]} != 4 )) || ((err)) || ! ping -qc2 "$IP"
    then
        err=0
        unset IP
    fi
done

###################################################
 # initialisation du tableau associatif `printer' #
###################################################
while IFS='=' read -r k v
do
    printer[$k]=$v
done < <(wget -qO- "$printerInfo" | sed '/\(]\|rpm\|=\)$/d')

#########################################################
 # vérification de variables disponibles dans `printer' #
#########################################################
if ! test "${printer[PRINTERNAME]}" = "$printerName"
then
    errQuit "les données du fichier info recupéré et le nom de l'imprimante ne correspondent pas."
fi
if test -n "${printer[LNK]}"
then
    printerInfo="$Url_Info/${printer[LNK]}"
fi

if test -n "${printer[SCANNER_DRV]}"
then
    printer[udev_rules]="$Udev_Deb_Name"
    . <(wget -qO- "$Url_Info/${printer[SCANNER_DRV]}.lnk" | sed -n '/^DEB/s/^/scanner_/p')
    . <(wget -qO- "$Url_Info/${printer[SCANKEY_DRV]}.lnk" | sed -n '/^DEB/s/^/scanKey_/p')
    printer[SCANNER_DRV]="$scanner_DEB64"
    printer[SCANKEY_DRV]="$scanKey_DEB64"

    if test -n "$VersionYear"; then
        if (( VersionYear >= 24 )) && test "${printer[SCANKEY_DRV]}" = 'brscan-skey-0.3.2-0.amd64.deb'
        then
            printer[SCANKEY_DRV]="$Scankey_Drv_Deb_Name"
        fi
    else
        errQuit "Impossible d’évaluer la version de la distribution."
    fi
else
    err+=1
    echo "pas de pilote pour le scanner."
fi

###########################
 # préparation du système #
###########################
# if test -f "$Logfile"; then
#     Old_Date="$(head -n1 "$Logfile")"
#     mv -v "$Logfile" "$Logfile"."$Old_Date".log
# fi
# echo "$date" >> "$Logfile" # indispensable pour la rotation du log .

for d in  "$tmpDir" "/usr/share/cups/model" "/var/spool/lpd"
do
    if ! test -d "$d"
    then
        mkdir -pv "$d"
    fi
done

apt-get update -qq
install_pkg "multiarch-support" "lib32stdc++6" "cups" "curl" "wget" "nmap" "libxml2-utils" "libusb-0.1-4:amd64" "libusb-0.1-4:i386" "sane-utils"
for i in \
    DCP-{11{0,5,7}C,120C,31{0,5}CN,340CW} \
    FAX-{18{15,20,35,40}C,19{2,4}0CN,2440C} \
    MFC-{21{0,5}C,32{2,4}0C,33{2,4}0CN,3420C,3820CN,4{1,2}0CN,425CN,5440CN,5840CN,620CN,640CW,820CW}
do
    if test "$i" = "$modelName"
    then
        install_pkg "csh"
    fi
done
for i in \
    DCP-{1{0,4}00,80{{20,25D},{40,45D},{60,65DN}}} \
    FAX-{2{850,900},3800,4{100,750e},5750e} \
    HL-{1{030,230,2{4,5}0,270N,4{3,4,5}0,470N,650,670N,850,870N},5{0{3,4,5}0,070N,1{3,4}0,150D,170DN,240,2{5,7}0DN,280DW},6050{,D}} \
    MFC-{4800,6800,8{4{20,40,60N},500,660DN,8{20D,40D,60DN,70DW}},9{0{3,7}0,1{6,8}0,420CN,660,7{0,6}0,8{0,6,8}0}}
do
    if test "$i" = "$modelName"
    then
        verif_lien "/etc/init.d/lpd" "/etc/init.d/cups"
        if test -L /sbin/init
        then
            verif_lien "/lib/systemd/system/cups.service" "/lib/systemd/system/lpd.service"
            systemd daemon-reload
        fi
    fi
done

###############################
 # téléchargement des pilotes #
###############################
#echo " DL DRV TAB == ${printer[*]}"
for drv in "${printer[@]}"
do
    if [[ $drv == @($printerName|no|yes) ]]; then continue;fi
    for addr in "$Url_Pkg" "$Url2_Pkg"
    do
        if ! test -f "$tmpDir/$drv"
        then
            Url_Deb="$addr/$drv"
            if test "$drv" = "${printer[udev_rules]}"
            then
                Url_Deb="$Udev_Deb_Url/$drv"
            fi
            wget -cP "$tmpDir" "$Url_Deb"
        else
            break
        fi
    done
    pkg2install+=( "$tmpDir/$drv" )
done
#echo "PKG2INSTALL == ${pkg2install[@]}"
#installation des pilotes
dpkg --install --force-all  "${pkg2install[@]}"
##

##################################
 # configuration de l'imprimante #
##################################
#retrouver le fichier `.ppd' pour l'imprimante
for drv in "PRN_CUP_DEB" "PRN_DRV_DEB"
do
    pkg=${printer[$drv]}
    #echo "pkg == $pkg"
    if test -n "$pkg" -a -f "$tmpDir/$pkg"
    then
        while read -d '' fileName
        do
            PPDs+=( "$fileName" )
        done < <(dpkg --contents "$tmpDir/$pkg" | gawk 'BEGIN{ORS="\0"} /ppd/{sub(".","",$NF); print $NF}')
    fi
done
#echo "PPDs == ${PPDs[*]}"
if test -z "$Ppd_File"
then
    PPDs=( /usr/share/cups/model/**/*brother*@($printerName|$modelName)*.ppd )
fi
case ${#PPDs[*]} in
    0) echo "no ppd"
        err+=1
        ;;
    1)  echo one ppd
        Ppd_File=${PPDs[0]}
        ;;
    *)  err+=1
        echo "more than one ppd"
        Ppd_File=${PPDs[0]}
        ;;
esac

cp /etc/cups/printers.conf.O /etc/cups/printers.conf "$tmpDir"
systemctl restart cups
sleep 1

if test -n "$IP"
then
    lpadmin -p "$modelName" -E -v "lpd://$IP/binary_p1" -P "$Ppd_File"
else
    lpadmin -p "$modelName" -E -v 'usb://dev/usb/lp0' -P "$Ppd_File"
fi

#############################
 # configuration du scanner #
#############################
if test -z "ÎP"
then #USB
    if grep -q "ATTRS{idVendor}==\"04f9\", ENV{libsane_matched}=\"yes\"" "$Udev_Rules"
    then
        echo " - Règle udev deja presente dans le fichier $Udev_Rules"
    else
        sed -i "/LABEL=\"libsane_usb_rules_begin\"/a\
            \n# Brother\nATTRS{idVendor}==\"04f9\", ENV{libsane_matched}=\"yes\"" "$Udev_Rules"
        udevadm control --reload-rules
    fi
else #network
    for saneConf in /usr/bin/brsaneconfig{,{2..5}}
    do
        test -x "$saneConf" && cmd=$saneConf
    done
    if test -z "$cmd"
    then
        errQuit "no brsaneconfig found."
    elif test "$cmd" = '/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
    fi
    $cmd -a name=SCANNER model="$modelName" ip="$IP"
fi

if test -d "$libDir"
then
    case $cmd in
        /usr/bin/brsaneconfig)
            cd "$libDir" || 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 "$libDir"
            ln -sf libbrscandec.so.1.0.0 libbrscandec.so.1
            ln -sf libbrscandec.so.1 libbrscandec.so
            cd "$libDir"/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
            ;;
        /usr/bin/brsaneconfig2)
            cd "$libDir" || 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 "$libDir"/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
            ;;
        /usr/bin/brsaneconfig3)
            cd "$libDir" || 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 "$libDir"/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
            ;;
        /usr/bin/brsaneconfig4)
            cd "$libDir"/sane || exit
            ln -sf libsane-brother4.so.1.0.7 libsane-brother4.so.1
            ln -sf libsane-brother4.so.1 libsane-brother4.so
            ;;
        /usr/bin/brsaneconfig5)
            cd "$libDir"/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
            ;;
    esac
fi

retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#252 Hier à 23:00

iznobe

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

eric63 a écrit :

chez moi c’est mitigé
pas de scanner et ça serait cool de ne pas avoir à chercher l’IP fixe de l’imprimante (d’ailleurs comment différencier une ip non fixe d’une fixe ??)

le script verifie que :
+ tu as acces a internet .
+ que le serveur de brother est joignable
+ que l' ip que tu entres est valide
+ que l' ip que tu entres repond a un ping
Mais il ne verifie pas si tu as parametré une IP fixe pour ton imprimante d' une maniere ou d' une autre .
Par contre , si tu n' as pas configuré une IP fixe , forcément , ton imprimante en changera un jour ou l' autre , et donc l' installation en reseau enverra les requetes sur l' ancienne IP et donc plus rien ne fonctionnera ..
d' ou l ' avertissement .

Vu que tu n' as pas de scanner et que le script a un bug , peux tu me fournir ton fichier log stp ?
je verrais plus de details .

Merci .

je viens de verifier , pour l' imprimante : MFCJ4510DW : les pilotes pour le scanner sont bien dispo :
https://support.brother.com/g/b/downloa … ng=English
donc normal que le script les telecharge et les installe ...

Dernière modification par iznobe (Aujourd'hui à 06:35)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#253 Aujourd'hui à 07:14

nany

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

Bonjour,



iznobe a écrit :
…
##########################
 # DETECTION AUTOMATIQUE #
##########################
…
    0) echo "Aucune imprimante détectée !
       Êtes vous sùr de l' avoir connectée au port USB de votre ordinateur ou à votre reseau local ?"
…
            read -rp "Choisissez le numero qui correspond à l' imprimante que voulez installer" choix
…

Que tu aies une orthographe aléatoire sur le forum est une chose mais que tu imposes ces horribles fautes aux utilisateurs du script, non !
PAS D’ESPACE APRÈS UNE APOSTROPHE SCRONGNEUGNEU ! mad
Et non plus avant, ce qui n’est pas le cas ici mais ça t’arrive fréquemment.
Sans oublier les accents.
Et puisqu’on parle d’apostrophe, je trouve l’apostrophe typographique (’) plus jolie que l’apostrophe dactylographique ('). En plus, ça permet de ne pas confondre avec une ouverture ou fermeture de guillemets simples droits (single quotes).
Bref :

Êtes vous sûr de l’avoir connectée au port USB de votre ordinateur ou à votre réseau local ?
read -rp "Choisissez le numéro qui correspond à l’imprimante que voulez installer : " choix

 


Question : si on met le nom du modèle de l’imprimante et éventuellement une adresse IP comme arguments au script, est-il vraiment nécessaire d’exécuter cette détection automatique ?

Hors ligne

#254 Aujourd'hui à 07:37

eric63

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

pas de scanner

Désolé, quand je disais cela je ne disais pas que je n’avais pas de scanner
mais que mon scanner n’a pas été pris en compte par le script

log donné en #238

 			# Recherche des pilotes
 - Recherche des pilotes pour l' imprimante
 - Recherche des pilotes pour le scanner
 - Scanner infos :
        	https://download.brother.com/pub/com/linux/linux/infs/brscan4.lnk
        	https://download.brother.com/pub/com/linux/linux/infs/brscan-skey.lnk

			# Téléchargement des pilotes
 - Paquet trouvé : brscan4-0.4.11-1.amd64.deb
 - Téléchargement du paquet : brscan4-0.4.11-1.amd64.deb
--2025-08-15 13:08:52--  https://download.brother.com/pub/com/linux/linux/packages/brscan4-0.4.11-1.amd64.deb
Resolving download.brother.com (download.brother.com)... 2.18.132.241
Connecting to download.brother.com (download.brother.com)|2.18.132.241|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 111246 (109K) [text/plain]
Saving to: ‘/tmp/packages/brscan4-0.4.11-1.amd64.deb’

     0K .......... .......... .......... .......... .......... 46% 3,07M 0s
    50K .......... .......... .......... .......... .......... 92% 4,32M 0s
   100K ........                                              100% 16,1T=0,03s

2025-08-15 13:08:52 (3,90 MB/s) - ‘/tmp/packages/brscan4-0.4.11-1.amd64.deb’ saved [111246/111246]

 - Paquet trouvé : brscan-skey-0.3.4-0.amd64.deb
 - Téléchargement du paquet : brscan-skey-0.3.4-0.amd64.deb
--2025-08-15 13:08:52--  https://download.brother.com/pub/com/linux/linux/packages/brscan-skey-0.3.4-0.amd64.deb
Resolving download.brother.com (download.brother.com)... 2.18.132.241
Connecting to download.brother.com (download.brother.com)|2.18.132.241|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 59150 (58K) [text/plain]
Saving to: ‘/tmp/packages/brscan-skey-0.3.4-0.amd64.deb’

     0K .......... .......... .......... .......... .......... 86% 3,09M 0s
    50K .......                                               100% 6,33M=0,02s

2025-08-15 13:08:52 (3,32 MB/s) - ‘/tmp/packages/brscan-skey-0.3.4-0.amd64.deb’ saved [59150/59150]

Configuration du scanner 
 * Configuration du scanner réseau...                                                                                [fail] 
 No config binary found. 
 Configuration de votre imprimante Brother MFC-J4510DW terminée. Bye :D 

les paquets ont été correctement téléchargés
No config binary found. ????  qu’est ce que cela signifie ?


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

#255 Aujourd'hui à 08:06

iznobe

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

Bonjour ,

si grep ne se suffit pas à lui-même*, pense awk.

--
* pareil pour sed wink

, encore faut il savoir se servir correctement de ces outils roll ( mais OSEF , puisque ça marche tongue )

---------------------------------------
probleme , pour l' affichage de la liste , mais je pense qu ' en fait , ce n ' est pas dans la nature du script , et donc que ce n' est pas utile d '  afficher , le nom de l' imprimante et son IP ou le nom de l' imprimante et USB se lon le cas .
l ' utilisateur choisira d ' abord son nom , puis le type de connexion , et si besoin est son IP , comme ca a toujours été le cas jusqu ' a present .

---------------------------------------
Si quelqu ' un a plusieurs imprimantes de la marque brother , ca serait bien qu ' il teste le script et envoie la sortie wink

---------------------------------------
bref , le nouveau code avec le déroulement attendu du script qui fonctionne pour la partie autoamtique .
je sais pas ce que j' ai fait , mais la variable " ${printer[PRINTERNAME]} " , est tout le temps vide maintenant ...

#!/bin/bash -x
# > vim search whole line : `yy / <Ctrl-F> p <Enter>'
 # définitions de variables
 # gestion des arguments
 # infos Brother
 # quelques fonctions
 # quelques vérifications
 # initialisation du tableau associatif `printer'
 # vérification de variables disponibles dans `printer'
 # préparation du système
 # téléchargement des pilotes
 # configuration de l'imprimante
 # configuration du scanner
# <

shopt -s extglob nullglob globstar

############################
 # définitions de variables
############################
if test -f /etc/lsb-release
then
    . /etc/lsb-release
    DistroName="$DISTRIB_ID"
    VersionYear="${DISTRIB_RELEASE::2}"
    codeName="$DISTRIB_CODENAME"
elif test -f /usr/lib/os-release
then
    . /usr/lib/os-release
    DistroName="$NAME"
    VersionYear="${VERSION_ID::2}"
    codeName="$VERSION_CODENAME"
fi
user="$SUDO_USER"
arch="$(uname -m)"
date=$(date +%F_%T)
tmpDir="/tmp/packages"
Logfile="/home/$user/brprinter_install.log"
libDir="/usr/lib/$arch-linux-gnu"

declare -A printer
declare -i err

#################
 # infos Brother
#################
# ancienne adresse d' obtention des infos :
#Url_Info="http://www.brother.com/pub/bsc/linux/infs"
# nouvelle adresse :
Url_Info="https://download.brother.com/pub/com/linux/linux/infs"
# Packages :
Url_Pkg="https://download.brother.com/pub/com/linux/linux/packages"
Url_Pkg2="http://www.brother.com/pub/bsc/linux/packages" # ancienne adresse d'obtention des paquets

Udev_Rules="/lib/udev/rules.d/60-libsane1.rules"
Udev_Deb_Name="brother-udev-rule-type1-1.0.2-0.all.deb"
Udev_Deb_Url="http://download.brother.com/welcome/dlf006654"
Scankey_Drv_Deb_Name="brscan-skey-0.3.4-0.amd64.deb"

printerInfo="$Url_Info/$printerName"
Printer_dl_url="https://support.brother.com/g/b/downloadtop.aspx?c=fr&lang=fr&prod=${printerName}_us_eu_as"

#######################
 # quelques fonctions #
#######################
errQuit()
{
    >&2 echo "$@"
    exit 1
}
verif_lien()
{ # pour faire un boucle, suffit-il vérifier que le nombre d'arguments est pair ?
    local lien=$1 cible=$2
    if ! test -L "$lien"
    then
        ln -s "$cible" "$lien"
    fi
}
install_pkg()
{
    for pkg do
        if ! dpkg-query -f '${binary:Package}\n' -W "$pkg" &>/dev/null
        then
            apt-get install -qq "$pkg"
        fi
    done
}

###########################
 # quelques vérifications #
###########################
if test "$DistroName" != "Ubuntu"; then errQuit "La distribution n’est pas Ubuntu ou une des ses variantes officielles.";fi
if test "$SHELL" != "/bin/bash"; then errQuit "Shell non compatible. utilisez : bash"; fi
if test "$arch" != "x86_64"; then errQuit "Système non compatible."; fi
# if [[ $arch != @(i386|i686|x86_64) ]]
if ((EUID)); then errQuit "Vous devez lancer le script en root : sudo $0"; fi
if ! nc -z -w5 'brother.com' 80; then errQuit "le site \"brother.com\" n'est pas joignable.";fi

##########################
 # DETECTION AUTOMATIQUE #
##########################
# tt="$(grep -oP '(?<=<title>).*?(?=</title>)' $file)"
# printer_name= ???
declare -a printer_IP printer_name
my_IP="$(hostname -I | cut -d ' ' -f1)"
#echo "$my_IP"
printer_IP=( $(nmap -sn -oG - "$my_IP"/24 | gawk 'tolower($3) ~ /brother/{print $2}') )
echo "${printer_IP[*]}"
for p_ip in "${printer_IP[@]}"; do
    if wget -E "$p_ip" -O "$tmpDir/index.html"; then
        # version robuste :
        printer_name+=( "$(xmllint --html --xpath '//title/text()' "$tmpDir/index.html" 2>/dev/null | cut -d ' ' -f2)" )
        #echo "printer_name == ${printer_name[*]}"
    fi
done
#echo "printer_name RESULT ==
#TAB printer_IP == ${printer_IP[*]}
#TAB printer_name == ${printer_name[*]}"

# printer_name= ???
if test lsusb | grep 04f9:; then
    printer_name+=( "$(lsusb | grep 04f9: | cut -c 58- | cut -d ' ' -f2)" )
fi
#echo "printer_name ==
#${#printer_name[*]} ,
#${printer_name[*]}"

case ${#printer_name[*]} in
    0) echo "Aucune imprimante détectée !
       Êtes vous sùr de l' avoir connectée au port USB de votre ordinateur ou à votre reseau local ?"
       # on repars donc avec les questions de base : modele etc ...
        ;;
    1)  echo "une seule imprimante détectée"
        modelName=${printer_name[0]^^} # ! printer_name != printerName
        # pas besoin de poser de question , il ne reste plus qu ' a installer
        ;;
    *)  echo "plusieurs imprimantes ont été détectées"
        # il faut presenter sous forme de liste les éléments recupérés :
        # modele du materriel : IP ou USB
        # et demander à l' utilisateur de choisir un numero dans cette liste
        n_print=$(("${#printer_name[@]}"))
        for n in "${!printer_name[@]}"; do
            echo " $((n+1))  ⇒  ${printer_name[$n]}"
        done
        while test -z "$choix"; do
            read -rp "Choisissez le numero qui correspond à l' imprimante que voulez installer" choix
            if ! ((choix > 0 && choix <= n_print)); then
                echo "choix invalide !"
                unset choix
            fi
        done
        modelName="${printer_name[$((choix-1))]^^}"
        ;;
esac

##########################
 # gestion des arguments #
##########################
# if test -n "$modelName"; then
#     modelName="${modelName^^}"
# else
#     declare -u modelName=$1
# fi
declare -u modelName=$1
until test -n "$modelName"
do
    read -rp 'Entrez le modèle de votre imprimante : ' modelName
done
printerName="${modelName//-/}" # ! printer_name != printerName
#check IP
until test -n "$IP"
do
    read -rp "Voulez-vous configurer votre imprimante pour qu'elle fonctionne en réseau ? [o/N]: "
    [[ $REPLY == [YyOo] ]] || break
    if test -n "$2"
    then
        IP=$2
        shift $#
    else
        read -rp "Entrez l'adresse IP de votre imprimante : " IP
    fi
    IFS='.' read -ra ip <<< "$IP"
    for i in "${ip[@]}"
    do
        ((n++ ? i >=0 && i<=255 : i>0 && i<=255)) || err+="1"
    done
    if (( ${#ip[*]} != 4 )) || ((err)) || ! ping -qc2 "$IP"
    then
        err=0
        unset IP
    fi
done

###################################################
 # initialisation du tableau associatif `printer' #
###################################################
while IFS='=' read -r k v
do
    printer[$k]=$v
done < <(wget -qO- "$printerInfo" | sed '/\(]\|rpm\|=\)$/d')

#########################################################
 # vérification de variables disponibles dans `printer' #
#########################################################
if test "${printer[PRINTERNAME]}" != "$printerName"
then
    echo "${printer[PRINTERNAME]} ......$printerName"
    errQuit "les données du fichier info recupéré et le nom de l'imprimante ne correspondent pas."
fi
if test -n "${printer[LNK]}"
then
    printerInfo="$Url_Info/${printer[LNK]}"
fi

if test -n "${printer[SCANNER_DRV]}"
then
    printer[udev_rules]="$Udev_Deb_Name"
    . <(wget -qO- "$Url_Info/${printer[SCANNER_DRV]}.lnk" | sed -n '/^DEB/s/^/scanner_/p')
    . <(wget -qO- "$Url_Info/${printer[SCANKEY_DRV]}.lnk" | sed -n '/^DEB/s/^/scanKey_/p')
    printer[SCANNER_DRV]="$scanner_DEB64"
    printer[SCANKEY_DRV]="$scanKey_DEB64"

    if test -n "$VersionYear"; then
        if (( VersionYear >= 24 )) && test "${printer[SCANKEY_DRV]}" = 'brscan-skey-0.3.2-0.amd64.deb'
        then
            printer[SCANKEY_DRV]="$Scankey_Drv_Deb_Name"
        fi
    else
        errQuit "Impossible d’évaluer la version de la distribution."
    fi
else
    err+="1"
    echo "pas de pilote pour le scanner."
fi

###########################
 # préparation du système #
###########################
# a remettre le script en service
# if test -f "$Logfile"; then
#     Old_Date="$(head -n1 "$Logfile")"
#     mv -v "$Logfile" "$Logfile"."$Old_Date".log
# fi
# echo "$date" >> "$Logfile" # indispensable pour la rotation du log .

for d in  "$tmpDir" "/usr/share/cups/model" "/var/spool/lpd"
do
    if ! test -d "$d"
    then
        mkdir -pv "$d"
    fi
done

apt-get update -qq
install_pkg "multiarch-support" "lib32stdc++6" "cups" "curl" "wget" "nmap" "libxml2-utils" "libusb-0.1-4:amd64" "libusb-0.1-4:i386" "sane-utils"
for i in \
    DCP-{11{0,5,7}C,120C,31{0,5}CN,340CW} \
    FAX-{18{15,20,35,40}C,19{2,4}0CN,2440C} \
    MFC-{21{0,5}C,32{2,4}0C,33{2,4}0CN,3420C,3820CN,4{1,2}0CN,425CN,5440CN,5840CN,620CN,640CW,820CW}
do
    if test "$i" = "$modelName"
    then
        install_pkg "csh"
    fi
done
for i in \
    DCP-{1{0,4}00,80{{20,25D},{40,45D},{60,65DN}}} \
    FAX-{2{850,900},3800,4{100,750e},5750e} \
    HL-{1{030,230,2{4,5}0,270N,4{3,4,5}0,470N,650,670N,850,870N},5{0{3,4,5}0,070N,1{3,4}0,150D,170DN,240,2{5,7}0DN,280DW},6050{,D}} \
    MFC-{4800,6800,8{4{20,40,60N},500,660DN,8{20D,40D,60DN,70DW}},9{0{3,7}0,1{6,8}0,420CN,660,7{0,6}0,8{0,6,8}0}}
do
    if test "$i" = "$modelName"
    then
        verif_lien "/etc/init.d/lpd" "/etc/init.d/cups"
        if test -L /sbin/init
        then
            verif_lien "/lib/systemd/system/cups.service" "/lib/systemd/system/lpd.service"
            systemd daemon-reload
        fi
    fi
done

###############################
 # téléchargement des pilotes #
###############################
#echo " DL DRV TAB == ${printer[*]}"
for drv in "${printer[@]}"
do
    if [[ $drv == @($printerName|no|yes) ]]; then continue;fi
    for addr in "$Url_Pkg" "$Url2_Pkg"
    do
        if ! test -f "$tmpDir/$drv"
        then
            Url_Deb="$addr/$drv"
            if test "$drv" = "${printer[udev_rules]}"
            then
                Url_Deb="$Udev_Deb_Url/$drv"
            fi
            wget -cP "$tmpDir" "$Url_Deb"
        else
            break
        fi
    done
    pkg2install+=( "$tmpDir/$drv" )
done
#echo "PKG2INSTALL == ${pkg2install[@]}"
#installation des pilotes
dpkg --install --force-all  "${pkg2install[@]}"
##

##################################
 # configuration de l'imprimante #
##################################
#retrouver le fichier `.ppd' pour l'imprimante
for drv in "PRN_CUP_DEB" "PRN_DRV_DEB"
do
    pkg=${printer[$drv]}
    #echo "pkg == $pkg"
    if test -n "$pkg" -a -f "$tmpDir/$pkg"
    then
        while read -d '' fileName
        do
            PPDs+=( "$fileName" )
        done < <(dpkg --contents "$tmpDir/$pkg" | gawk 'BEGIN{ORS="\0"} /ppd/{sub(".","",$NF); print $NF}')
    fi
done
#echo "PPDs == ${PPDs[*]}"
if test -z "$Ppd_File"
then
    PPDs=( /usr/share/cups/model/**/*brother*@($printerName|$modelName)*.ppd )
fi
case ${#PPDs[*]} in
    0) echo "no ppd"
        err+="1"
        ;;
    1)  echo one ppd
        Ppd_File=${PPDs[0]}
        ;;
    *)  err+="1"
        echo "more than one ppd"
        Ppd_File=${PPDs[0]}
        ;;
esac

cp /etc/cups/printers.conf.O /etc/cups/printers.conf "$tmpDir"
systemctl restart cups
sleep 1

if test -n "$IP"
then
    lpadmin -p "$modelName" -E -v "lpd://$IP/binary_p1" -P "$Ppd_File"
else
    lpadmin -p "$modelName" -E -v 'usb://dev/usb/lp0' -P "$Ppd_File"
fi

#############################
 # configuration du scanner #
#############################
if test -z "ÎP"
then #USB
    if grep -q "ATTRS{idVendor}==\"04f9\", ENV{libsane_matched}=\"yes\"" "$Udev_Rules"
    then
        echo " - Règle udev deja presente dans le fichier $Udev_Rules"
    else
        sed -i "/LABEL=\"libsane_usb_rules_begin\"/a\
            \n# Brother\nATTRS{idVendor}==\"04f9\", ENV{libsane_matched}=\"yes\"" "$Udev_Rules"
        udevadm control --reload-rules
    fi
else #network
    for saneConf in /usr/bin/brsaneconfig{,{2..5}}
    do
        test -x "$saneConf" && cmd=$saneConf
    done
    if test -z "$cmd"
    then
        errQuit "no brsaneconfig found."
    elif test "$cmd" = '/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
    fi
    $cmd -a name=SCANNER model="$modelName" ip="$IP"
fi

if test -d "$libDir"
then
    case $cmd in
        /usr/bin/brsaneconfig)
            cd "$libDir" || 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 "$libDir"
            ln -sf libbrscandec.so.1.0.0 libbrscandec.so.1
            ln -sf libbrscandec.so.1 libbrscandec.so
            cd "$libDir"/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
            ;;
        /usr/bin/brsaneconfig2)
            cd "$libDir" || 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 "$libDir"/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
            ;;
        /usr/bin/brsaneconfig3)
            cd "$libDir" || 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 "$libDir"/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
            ;;
        /usr/bin/brsaneconfig4)
            cd "$libDir"/sane || exit
            ln -sf libsane-brother4.so.1.0.7 libsane-brother4.so.1
            ln -sf libsane-brother4.so.1 libsane-brother4.so
            ;;
        /usr/bin/brsaneconfig5)
            cd "$libDir"/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
            ;;
    esac
fi

retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#256 Aujourd'hui à 08:25

iznobe

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

nany a écrit :

PAS D’ESPACE APRÈS UNE APOSTROPHE SCRONGNEUGNEU !

roo roll

justement j' avais fait attention a éviter des le départ les " photees " d'orthographe ... un espace en plus ou en moins , c' est pas  une faute .
De plus le script est en dev , aucun " utilisateur " ne devrait l' utiliser , puisque il ne fonctionne pas vraiment , il reste plein de corrections à apporter .
bref , j' ai corriger pour la future dépose du script .


eric63 a écrit :

log donné en #238

dans ce message , je n' ai pas vu le log , seulement la sortie du terminal , qui ne donne pas autant de détails que le fichier de log .

for f in ~/brprinter*.log;do echo $f;cat -n $f;echo;done
eric63 a écrit :

No config binary found. ????  qu’est ce que cela signifie ?

que le script n' a pas trouvé le dossier ou déposer les lib / binaires .

j ' ai modifier la phrase en anglais .
j ' ai modifier le script , si tu veux refaire un essai , ca devrait être bon maintenant . sauf si chez toi le répertoire en question n' existe pas tongue .
Dans ce cas il est normal que ca dise qu ' il ne l' est pas trouvé . Mais j' en doute , il est sur toutes les distros .

Dernière modification par iznobe (Aujourd'hui à 08:35)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#257 Aujourd'hui à 08:53

eric63

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

c’est bien mieux

sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/iznobe/brother_printer_install/refs/heads/main/brprinter_install.sh)"
2025-08-16_08:47:34

			# Vous devez d' abord vous assurer que votre imprimante possède une adresse IP fixe.

			# 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
 - Controle de l' adresse IP entrée

			# 
		# Ubuntu Codename : plucky
		# Architecture : x86_64
		# Modèle de l'imprimante : MFC-J4510DW
		# Type de connexion : Réseau
		# Adresse IP : 192.168.1.180
		# Repertoire courant : /home/kubu
		# Repertoire de telechargement des pilotes : /tmp/packages
		# Fichier d'informations : https://download.brother.com/pub/com/linux/linux/infs/MFCJ4510DW
		# page de telechargement des pilotes : https://support.brother.com/g/b/downloadtop.aspx?c=fr&lang=fr&prod=MFCJ4510DW_us_eu_as

			# initialisation du script.
 - Recherche du dossier ' /tmp/packages ' sur votre système
 - Obtention des infos de l' imprimante
 - Vérification du fichier obtenu

			# Vérification des pré-requis
 - Mise à jour de la liste des paquets
 - installation des paquets requis
 - Recherche du paquet : ' multiarch-support ' sur votre système
 - Paquet ' multiarch-support ' non installé
 - Installation du paquet : ' multiarch-support ' sur votre système
E: Impossible de trouver le paquet multiarch-support
 - Recherche du paquet : ' lib32stdc++6 ' sur votre système
 - Paquet ' lib32stdc++6 ' deja installé
 - Recherche du paquet : ' cups ' sur votre système
 - Paquet ' cups ' deja installé
 - Recherche du paquet : ' curl ' sur votre système
 - Paquet ' curl ' deja installé
 - Recherche du paquet : ' wget ' sur votre système
 - Paquet ' wget ' deja installé
 - Recherche du paquet : ' gawk ' sur votre système
 - Paquet ' gawk ' deja installé
 - Recherche du dossier ' /usr/share/cups/model ' sur votre système
 - Recherche du dossier ' /var/spool/lpd ' sur votre système


			# Recherche des pilotes
 - Recherche des pilotes pour l' imprimante
 - Recherche des pilotes pour le scanner
 - Scanner infos :
        	https://download.brother.com/pub/com/linux/linux/infs/brscan4.lnk
        	https://download.brother.com/pub/com/linux/linux/infs/brscan-skey.lnk

			# Téléchargement des pilotes
 - Paquet trouvé : brscan4-0.4.11-1.amd64.deb
 - Téléchargement du paquet : brscan4-0.4.11-1.amd64.deb
--2025-08-16 08:48:08--  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: ‘/tmp/packages/brscan4-0.4.11-1.amd64.deb’

     0K .......... .......... .......... .......... .......... 46% 3,80M 0s
    50K .......... .......... .......... .......... .......... 92% 5,81M 0s
   100K ........                                              100% 16,1T=0,02s

2025-08-16 08:48:08 (4,99 MB/s) - ‘/tmp/packages/brscan4-0.4.11-1.amd64.deb’ saved [111246/111246]

 - Paquet trouvé : brscan-skey-0.3.4-0.amd64.deb
 - Téléchargement du paquet : brscan-skey-0.3.4-0.amd64.deb
--2025-08-16 08:48:08--  https://download.brother.com/pub/com/linux/linux/packages/brscan-skey-0.3.4-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: 59150 (58K) [text/plain]
Saving to: ‘/tmp/packages/brscan-skey-0.3.4-0.amd64.deb’

     0K .......... .......... .......... .......... .......... 86% 3,69M 0s
    50K .......                                               100% 9,10M=0,01s

2025-08-16 08:48:08 (4,01 MB/s) - ‘/tmp/packages/brscan-skey-0.3.4-0.amd64.deb’ saved [59150/59150]

 - Paquet trouvé : mfcj4510dwlpr-3.0.1-1.i386.deb
 - Téléchargement du paquet : mfcj4510dwlpr-3.0.1-1.i386.deb
--2025-08-16 08:48:08--  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: ‘/tmp/packages/mfcj4510dwlpr-3.0.1-1.i386.deb’

     0K .......... .......... .......... .......... ..........  1% 2,02M 1s
    50K .......... .......... .......... .......... ..........  3% 6,01M 1s
   100K .......... .......... .......... .......... ..........  5% 7,70M 1s
   150K .......... .......... .......... .......... ..........  6% 13,8M 1s
   200K .......... .......... .......... .......... ..........  8% 11,2M 1s
   250K .......... .......... .......... .......... .......... 10% 17,5M 0s
   300K .......... .......... .......... .......... .......... 11% 18,9M 0s
   350K .......... .......... .......... .......... .......... 13% 13,4M 0s
   400K .......... .......... .......... .......... .......... 15% 22,8M 0s
   450K .......... .......... .......... .......... .......... 16% 30,2M 0s
   500K .......... .......... .......... .......... .......... 18% 26,1M 0s
   550K .......... .......... .......... .......... .......... 20% 37,7M 0s
   600K .......... .......... .......... .......... .......... 21% 34,6M 0s
   650K .......... .......... .......... .......... .......... 23% 36,2M 0s
   700K .......... .......... .......... .......... .......... 25% 34,1M 0s
   750K .......... .......... .......... .......... .......... 26% 29,8M 0s
   800K .......... .......... .......... .......... .......... 28% 64,8M 0s
   850K .......... .......... .......... .......... .......... 30% 65,7M 0s
   900K .......... .......... .......... .......... .......... 32% 29,1M 0s
   950K .......... .......... .......... .......... .......... 33% 68,7M 0s
  1000K .......... .......... .......... .......... .......... 35% 82,0M 0s
  1050K .......... .......... .......... .......... .......... 37% 61,7M 0s
  1100K .......... .......... .......... .......... .......... 38% 54,3M 0s
  1150K .......... .......... .......... .......... .......... 40% 51,0M 0s
  1200K .......... .......... .......... .......... .......... 42% 56,8M 0s
  1250K .......... .......... .......... .......... .......... 43%  179M 0s
  1300K .......... .......... .......... .......... .......... 45% 57,4M 0s
  1350K .......... .......... .......... .......... .......... 47% 78,8M 0s
  1400K .......... .......... .......... .......... .......... 48% 63,5M 0s
  1450K .......... .......... .......... .......... .......... 50%  123M 0s
  1500K .......... .......... .......... .......... .......... 52% 71,0M 0s
  1550K .......... .......... .......... .......... .......... 53% 69,5M 0s
  1600K .......... .......... .......... .......... .......... 55% 82,2M 0s
  1650K .......... .......... .......... .......... .......... 57% 94,3M 0s
  1700K .......... .......... .......... .......... .......... 58%  165M 0s
  1750K .......... .......... .......... .......... .......... 60% 81,0M 0s
  1800K .......... .......... .......... .......... .......... 62% 98,8M 0s
  1850K .......... .......... .......... .......... .......... 64% 56,8M 0s
  1900K .......... .......... .......... .......... .......... 65%  189M 0s
  1950K .......... .......... .......... .......... .......... 67%  105M 0s
  2000K .......... .......... .......... .......... .......... 69% 99,3M 0s
  2050K .......... .......... .......... .......... .......... 70% 89,0M 0s
  2100K .......... .......... .......... .......... .......... 72% 7,71M 0s
  2150K .......... .......... .......... .......... .......... 74%  238M 0s
  2200K .......... .......... .......... .......... .......... 75%  205M 0s
  2250K .......... .......... .......... .......... .......... 77%  114M 0s
  2300K .......... .......... .......... .......... .......... 79%  210M 0s
  2350K .......... .......... .......... .......... .......... 80%  290M 0s
  2400K .......... .......... .......... .......... .......... 82%  121M 0s
  2450K .......... .......... .......... .......... .......... 84%  156M 0s
  2500K .......... .......... .......... .......... .......... 85%  155M 0s
  2550K .......... .......... .......... .......... .......... 87%  229M 0s
  2600K .......... .......... .......... .......... .......... 89%  206M 0s
  2650K .......... .......... .......... .......... .......... 91%  157M 0s
  2700K .......... .......... .......... .......... .......... 92%  172M 0s
  2750K .......... .......... .......... .......... .......... 94%  275M 0s
  2800K .......... .......... .......... .......... .......... 96%  148M 0s
  2850K .......... .......... .......... .......... .......... 97%  210M 0s
  2900K .......... .......... .......... .......... .......... 99%  117M 0s
  2950K .......... ......                                     100%  352M=0,1s

2025-08-16 08:48:08 (30,0 MB/s) - ‘/tmp/packages/mfcj4510dwlpr-3.0.1-1.i386.deb’ saved [3038108/3038108]

 - Paquet trouvé : brother-udev-rule-type1-1.0.2-0.all.deb
 - Téléchargement du paquet : brother-udev-rule-type1-1.0.2-0.all.deb
--2025-08-16 08:48:08--  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: ‘/tmp/packages/brother-udev-rule-type1-1.0.2-0.all.deb’

     0K .                                                     100%  562M=0s

2025-08-16 08:48:08 (562 MB/s) - ‘/tmp/packages/brother-udev-rule-type1-1.0.2-0.all.deb’ saved [1558/1558]

 - Paquet trouvé : mfcj4510dwcupswrapper-3.0.1-1.i386.deb
 - Téléchargement du paquet : mfcj4510dwcupswrapper-3.0.1-1.i386.deb
--2025-08-16 08:48:08--  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: ‘/tmp/packages/mfcj4510dwcupswrapper-3.0.1-1.i386.deb’

     0K .......... .....                                      100%  409M=0s

2025-08-16 08:48:08 (409 MB/s) - ‘/tmp/packages/mfcj4510dwcupswrapper-3.0.1-1.i386.deb’ saved [15474/15474]


			# Installation des pilotes
 - Installation du paquet : brscan4-0.4.11-1.amd64.deb
Sélection du paquet brscan4 précédemment désélectionné.
(Lecture de la base de données... 321306 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) ...
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 : brscan-skey-0.3.4-0.amd64.deb
Sélection du paquet brscan-skey précédemment désélectionné.
(Lecture de la base de données... 321359 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../brscan-skey-0.3.4-0.amd64.deb ...
Dépaquetage de brscan-skey (0.3.4-0) ...
Paramétrage de brscan-skey (0.3.4-0) ...
 - Installation 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... 321379 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 : 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... 321405 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) ...
 - Installation 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... 321409 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.


			# Configuration de l'imprimante
 - Recherche d'un fichier PPD sur votre système
 - Fichier PPD : ' /opt/brother/Printers/mfcj4510dw/cupswrapper/brother_mfcj4510dw_printer_en.ppd ' trouvé
 - 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
lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS.
 - Restauration du fichier printers.conf.O


			# Configuration du scanner - Configuration du scanner réseau
 - Copie des bibliotheques nécessaires brsaneconfig4


			# Configuration de votre imprimante Brother MFC-J4510DW terminée. Bye :D

			# Vous pouvez supprimer le dossier /tmp/packages avec la commande suivante :  rm -r /tmp/packages
 

Dernière modification par eric63 (Aujourd'hui à 08:55)


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

#258 Aujourd'hui à 09:47

iznobe

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

j ' ai oublié de répondre à:

nany a écrit :

Question : si on met le nom du modèle de l’imprimante et éventuellement une adresse IP comme arguments au script, est-il vraiment nécessaire d’exécuter cette détection automatique ?

je sais pas .
Mais imaginons qu ' un utilisateur possède 2 imprimantes du même modèle , comment est ce qu ' on pourra les différencier ? :
soit une est en USB ,et l' autre en réseau .
soit les 2 sont en USB
soit les 2 sont en réseau .
A partir de là , on se rend compte que seul le nom de l' imprimante n ' est pas suffisant . donc à mon avis , en ce sens , oui , il faudrait faire une détection automatique puisqu ' il faudrait , dans l' idéal , gérer ce cas là ...
et proposer une liste de choix avec couple :
modele , USB ?  : IP

Pour l' instant , j' aimerais finir completement la structure du code .
je galere pour , justement , presenter cette liste à l' utilisateur ...
je n' arrive pas à fournir le nom du modele de l' imprimante ET associé le type de connexion ,et si c' est en reseau affiché son IP , sinon USB roll


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#259 Aujourd'hui à 09:48

nany

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

iznobe a écrit :

je sais pas ce que j' ai fait , mais la variable " ${printer[PRINTERNAME]} " , est tout le temps vide maintenant ...

C’est ici que ça se passe :

iznobe a écrit :
###################################################
 # initialisation du tableau associatif `printer' #
###################################################
while IFS='=' read -r k v
do
    printer[$k]=$v
done < <(wget -qO- "$printerInfo" | sed '/\(]\|rpm\|=\)$/d')

L’adresse "$printerInfo" est-elle bien renseignée à ce moment ?

Je pense que ton code de détection automatique est la cause mais je ne vois pas où ?
En tout cas, la déclaration avec affectation de $1 de modelName vient trop tard.
Et, comme je l’ai dit, est-il nécessaire de faire cette détection automatique si on passe des arguments au script ?

Je verrais quelque chose comme ça :

…
declare -u modelName=$1
if test -z "$modelName"
then
    ##########################
     # DETECTION AUTOMATIQUE #
    ##########################
    # tt="$(grep -oP '(?<=<title>).*?(?=</title>)' $file)"
    # printer_name= ???
    declare -a printer_IP printer_name
    my_IP="$(hostname -I | cut -d ' ' -f1)"
    #echo "$my_IP"
    printer_IP=( $(nmap -sn -oG - "$my_IP"/24 | gawk 'tolower($3) ~ /brother/{print $2}') )
    echo "${printer_IP[*]}"
    for p_ip in "${printer_IP[@]}"; do
        if wget -E "$p_ip" -O "$tmpDir/index.html"; then
            # version robuste :
            printer_name+=( "$(xmllint --html --xpath '//title/text()' "$tmpDir/index.html" 2>/dev/null | cut -d ' ' -f2)" )
            #echo "printer_name == ${printer_name[*]}"
        fi
    done
    #echo "printer_name RESULT ==
    #TAB printer_IP == ${printer_IP[*]}
    #TAB printer_name == ${printer_name[*]}"

    # printer_name= ???
    if test lsusb | grep 04f9:; then
        printer_name+=( "$(lsusb | grep 04f9: | cut -c 58- | cut -d ' ' -f2)" )
    fi
    #echo "printer_name ==
    #${#printer_name[*]} ,
    #${printer_name[*]}"

    case ${#printer_name[*]} in
        0) echo "Aucune imprimante détectée !
           Êtes vous sùr de l' avoir connectée au port USB de votre ordinateur ou à votre reseau local ?"
           # on repars donc avec les questions de base : modele etc ...
            ;;
        1)  echo "une seule imprimante détectée"
            modelName=${printer_name[0]^^} # ! printer_name != printerName
            # pas besoin de poser de question , il ne reste plus qu ' a installer
            ;;
        *)  echo "plusieurs imprimantes ont été détectées"
            # il faut presenter sous forme de liste les éléments recupérés :
            # modele du materriel : IP ou USB
            # et demander à l' utilisateur de choisir un numero dans cette liste
            n_print=$(("${#printer_name[@]}"))
            for n in "${!printer_name[@]}"; do
                echo " $((n+1))  ⇒  ${printer_name[$n]}"
            done
            while test -z "$choix"; do
                read -rp "Choisissez le numero qui correspond à l' imprimante que voulez installer" choix
                if ! ((choix > 0 && choix <= n_print)); then
                    echo "choix invalide !"
                    unset choix
                fi
            done
            modelName="${printer_name[$((choix-1))]^^}"
            ;;
    esac
else
    ##########################
     # gestion des arguments #
    ##########################
    # if test -n "$modelName"; then
    #     modelName="${modelName^^}"
    # else
    #     declare -u modelName=$1
    # fi
    until test -n "$modelName"
    do
        read -rp 'Entrez le modèle de votre imprimante : ' modelName
    done
fi
printerName="${modelName//-/}" # ! printer_name != printerName
#check IP
until test -n "$IP"
do
    read -rp "Voulez-vous configurer votre imprimante pour qu'elle fonctionne en réseau ? [o/N]: "
    [[ $REPLY == [YyOo] ]] || break
    if test -n "$2"
    then
        IP=$2
        shift $#
    else
        read -rp "Entrez l'adresse IP de votre imprimante : " IP
    fi
    IFS='.' read -ra ip <<< "$IP"
    for i in "${ip[@]}"
    do
        ((n++ ? i >=0 && i<=255 : i>0 && i<=255)) || err+="1"
    done
    if (( ${#ip[*]} != 4 )) || ((err)) || ! ping -qc2 "$IP"
    then
        err=0
        unset IP
    fi
done

###################################################
 # initialisation du tableau associatif `printer' #
###################################################
…

Je ne peux pas tester car je n’ai pas d’imprimante Brother.
Mais je me demande pourquoi l’IP n’est pas renseignée lors de la détection automatique. Ça éviterait de demander cette adresse IP.

Hors ligne

#260 Aujourd'hui à 09:52

iznobe

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

je ne sais pas si tu te rappelle , mais on avait aussi galérer pour faire ça dans le script que j' ai ajouté dans ma signature : https://forum.ubuntu-fr.org/viewtopic.php?id=2090293
mais , a peu de chose prés , c' est un peu le même type de liste que j' aimerais faire .

EDIT messages croisés .

nany a écrit :

En tout cas, la déclaration avec affectation de $1 de modelName vient trop tard.

c' est la cause , oui , lors du déplacement d' une partie de code .
je rectifie .


Voir mon message précédent , qui rejoint complètement ton idée à propose de l' IP en détection automatique et le reste .
Mais je galère tongue

Dernière modification par iznobe (Aujourd'hui à 09:55)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#261 Aujourd'hui à 10:44

nany

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

iznobe a écrit :

Mais je galère tongue

À tester :

…
declare -u modelName=$1
if test -z "$modelName"
then
    ##########################
     # DETECTION AUTOMATIQUE #
    ##########################
    # tt="$(grep -oP '(?<=<title>).*?(?=</title>)' $file)"
    # printer_name= ???
    declare -a printer_IP printer_name
    my_IP="$(hostname -I | cut -d ' ' -f1)"
    #echo "$my_IP"
    printer_IP=( $(nmap -sn -oG - "$my_IP"/24 | gawk 'tolower($3) ~ /brother/{print $2}') )
    echo "${printer_IP[*]}"
    for p_ip in "${printer_IP[@]}"; do
        if wget -E "$p_ip" -O "$tmpDir/index.html"; then
            # version robuste :
            printer_name+=( "réseau : $(xmllint --html --xpath '//title/text()' "$tmpDir/index.html" 2>/dev/null | cut -d ' ' -f2)" )
            #echo "printer_name == ${printer_name[*]}"
        fi
    done
    #echo "printer_name RESULT ==
    #TAB printer_IP == ${printer_IP[*]}
    #TAB printer_name == ${printer_name[*]}"

    # printer_name= ???
    if test lsusb | grep 04f9:; then
        printer_name+=( "usb : $(lsusb | grep 04f9: | cut -c 58- | cut -d ' ' -f2)" )
    fi
    #echo "printer_name ==
    #${#printer_name[*]} ,
    #${printer_name[*]}"

    case ${#printer_name[*]} in
        0) echo "Aucune imprimante détectée !
           Êtes vous sùr de l' avoir connectée au port USB de votre ordinateur ou à votre reseau local ?"
           # on repars donc avec les questions de base : modele etc ...
            ;;
        1)  echo "une seule imprimante détectée"
            modelName=${printer_name[0]##* } # ! printer_name != printerName
            if [[ ${printer_name[0]} =~ "^réseau" ]]
            then
                IP=${printer_IP[0]}
            else
                nolan=1
            fi
            # pas besoin de poser de question , il ne reste plus qu ' a installer
            ;;
        *)  echo "plusieurs imprimantes ont été détectées"
            # il faut presenter sous forme de liste les éléments recupérés :
            # modele du materriel : IP ou USB
            # et demander à l' utilisateur de choisir un numero dans cette liste
            n_print=$(("${#printer_name[@]}"))
            for n in "${!printer_name[@]}"; do
                echo " $((n+1))  ⇒  ${printer_name[$n]} ${printer_IP[$n]}"
            done
            while test -z "$choix"; do
                read -rp "Choisissez le numero qui correspond à l' imprimante que voulez installer" choix
                if ! ((choix > 0 && choix <= n_print)); then
                    echo "choix invalide !"
                    unset choix
                fi
            done
            modelName="${printer_name[$((choix-1))]##* }"
            if [[ ${printer_name[$((choix-1))]} =~ "^réseau" ]]
            then
                IP=${printer_IP[$((choix-1))]}
            else
                nolan=1
            fi
            ;;
    esac
else
    ##########################
     # gestion des arguments #
    ##########################
    # if test -n "$modelName"; then
    #     modelName="${modelName^^}"
    # else
    #     declare -u modelName=$1
    # fi
    until test -n "$modelName"
    do
        read -rp 'Entrez le modèle de votre imprimante : ' modelName
    done
fi
printerName="${modelName//-/}" # ! printer_name != printerName
#check IP
if ! test "$nolan" -eq 1
then
    echo "Installation en USB."
else
    until test -n "$IP"
    do
        read -rp "Voulez-vous configurer votre imprimante pour qu'elle fonctionne en réseau ? [o/N]: "
        [[ $REPLY == [YyOo] ]] || break
        if test -n "$2"
        then
            IP=$2
            shift $#
        else
            read -rp "Entrez l'adresse IP de votre imprimante : " IP
        fi
        IFS='.' read -ra ip <<< "$IP"
        for i in "${ip[@]}"
        do
            ((n++ ? i >=0 && i<=255 : i>0 && i<=255)) || err+="1"
        done
        if (( ${#ip[*]} != 4 )) || ((err)) || ! ping -qc2 "$IP"
        then
            err=0
            unset IP
        fi
    done
fi

###################################################
 # initialisation du tableau associatif `printer' #
###################################################
…

 

On pourrait même mettre dans la section # quelques vérifications # un test de présence d’un deuxième argument et mettre nolan=1 si non présent.

Dernière modification par nany (Aujourd'hui à 11:05)

Hors ligne

#262 Aujourd'hui à 11:00

iznobe

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

j ' ai rectifié le tir pour $printer info , mais ca oblige de faire un wget supplémentaire .
de tout façon , je ne vois pas pourquoi on pourrait utiliser une variable si on ne l' a pas renseigné avant ...

###################################################
 # initialisation du tableau associatif `printer' #
###################################################
# creation $Url_PrinterInfo
wget -q "$Url_Info/$printerName" -O "$F_P_fichier_Info"
if ! test "$(grep PRINTERNAME "$F_P_fichier_Info" | cut -d= -f2)" == "$printerName"; then
    errQuit "les données du fichier info recupéré et le nom de l'imprimante ne correspondent pas."
elif test "$(grep LNK "$F_P_fichier_Info" | cut -d= -f2)"; then
    Url_PrinterInfo="$Url_Info/$(grep LNK "$F_P_fichier_Info" | cut -d= -f2)"
fi
#echo "$Url_PrinterInfo"
while IFS='=' read -r k v
do
    printer[$k]=$v
done < <(wget -qO- "$Url_PrinterInfo" | sed '/\(]\|rpm\|=\)$/d')

#########################################################
 # vérification de variables disponibles dans `printer' #
#########################################################
# if test "${printer[PRINTERNAME]}" != "$printerName"
# then
#     echo "${printer[PRINTERNAME]} ......$printerName"
#     errQuit "les données du fichier info recupéré et le nom de l'imprimante ne correspondent pas."
# fi
if test -n "${printer[SCANNER_DRV]}"
then
...

je regarde , ton code @nany , le teste et te dis ça .
Merci .

PS : tu as recopié le code avec :

iznobe@iznobe-pc:~$ sudo bash Scripts/Watael_brprinter_install.sh
Connection to brother.com (13.248.151.157) 80 port [tcp/http] succeeded!

Aucune imprimante détectée !
           Êtes vous sùr de l' avoir connectée au port USB de votre ordinateur ou à votre reseau local ?
Scripts/Watael_brprinter_install.sh: ligne 254 : test:  : nombre entier attendu comme expression
Voulez-vous configurer votre imprimante pour qu'elle fonctionne en réseau ? [o/N]:

big_smile big_smile

suite du retour :

Voulez-vous configurer votre imprimante pour qu'elle fonctionne en réseau ? [o/N]: 
pas de pilote pour le scanner.
E: Impossible de trouver le paquet multiarch-support
dpkg: erreur: --install a besoin d'au moins un fichier archive de paquet comme paramètre

Tapez dpkg --help pour obtenir de l'aide sur l'installation et la désinstallation des paquets [*] ;
Utilisez « apt » ou « aptitude » pour une gestion conviviale des paquets ;
Tapez dpkg -Dhelp pour obtenir une liste des valeurs des drapeaux de débogage de dpkg ;
Tapez dpkg --force-help pour une liste d'options de forçage ;
Tapez dpkg-deb --help pour obtenir de l'aide sur la manipulation des fichiers *.deb ;

Les options marquées [*] produisent beaucoup de données de sortie – passez-les dans « less » ou « more » !
more than one ppd
lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS.
lpadmin : L’attribut « printer-uri » doit se présenter sous la forme « ipp://HOSTNAME/printers/PRINTERNAME ».
"SCANNER" is already registered.
iznobe@iznobe-pc:~$ 

je regarderai ça a tête reposée , lundi , quand je pourrai tester avec une imprimante au moins et même 2 ( la meme en reseau et en USB ) , histoire d' etre sur du coup .

Bon weekend wink

Dernière modification par iznobe (Aujourd'hui à 11:17)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#263 Aujourd'hui à 12:01

nany

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

iznobe a écrit :

PS : tu as recopié le code avec :

J’ai recopié le code en #255.
Où récupérer la dernière version ?

iznobe a écrit :

Scripts/Watael_brprinter_install.sh: ligne 254 : test:  : nombre entier attendu comme expression

Oui, il y a un problème avec la variable nolan.
Je vais regarder mais il faudrait que je récupère la dernière version pour ne pas faire d’erreur.

Hors ligne