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.

#201 Hier à 16:09

Watael

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

zenity est incompatible avec KDE ?


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

Hors ligne

#202 Hier à 16:44

iznobe

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

freechelmi a écrit :

D'autre part ,

est ce que pour l'instant ce script apporte vraiment plus que l'outil de brother qui demande le modèle et installe les drivers ?

Pour savoir , il faudrait " décortiquer "  et tester ce que fait le script brother .
Hors mis le fait , que le script brother gere les langues , les licences , et qu ' il est en anglais , je ne suis pas certain qu ' il y ait une grande difference .
Voire , le script de brother , ne demandera pas a etre reactualisé , a chaque modification que fera brother sur leur serveur ou autre ...
Le script de demonipuch , en 3 / 4ans , avait perdu de sa valeur , puisqu ' en plus de comporter des bugs , il y a eu entre temps des changements chez brother :
+ adresse qui changent ( info et dl )
+ sortie de nouvelle version d' ubuntu , avec des repertoires qui changent
+ plus de arch en 32 bits
+ un nouveau brscan(x) le 5 actuellement
+ les fichiers lpd
+ les regles udev ( qui manque encore au script actuel )
+ d' autres choses que j ' ai du oubliées .

freechelmi a écrit :

- qu'il detecte l'imprimante connecté en USB ou sur réseau ( plus dur ) et installe le bon driver

je ne sais pas si on peut géneralisé , mais :

iznobe@k-pi3:~ $ nmap -sn 192.168.1.* | grep -i brother
Nmap scan report for brother.home (192.168.1.84)
iznobe@k-pi3:~ $ 

on peut donc recuperé l ' ip de l' imprimante facilement .
si l ' utilisateur indique le modele , alors on a le " biercé " gagnant big_smile
si il yen a plusieurs , il faudra faire intervenir l' utilisateur pour lui demander quelle IP il veut utiliser pour l '   imprimante qu ' il veut installer .

Pour l' USB , peut etre avec lsusb ?

Donc on pourrait se passer facilement de demander comment est connectée l' imprimante , si on a soit un retour en reseau soit en USB et qu ' il y en qu ' une .
Pas tres compliqué a coder je pense .
Dans le cas ou on a plusieurs imprimantes , plus le choix , l ' utilisateur devra repondre aux questions .
Eventuellement on pourrait alors " simplifier " en proposant un choix de couple du genre :
choix 1 : model name   : USB
choix 2 : model_name : IP 192.168.1.84
etc ...
ce qui du coup , apporterait un " vrai " plus par rapport au script de brother qui lui , demande tout à l' utilisateur .

---------------------------------------------------------

Question subsidiaire a ceux / celles qui aident au dev du code :
je suppose que le script n' est compatible qu ' avec bash non ?
je pensais justement ajouter un controle pour $SHELL , bonne idée ou inutile ?

Dernière modification par iznobe (Hier à 17:08)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#203 Hier à 17:01

Watael

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

nmap -sn -oG - 192.168.1.0/24 | gawk 'tolower($3) ~ /brother/{print $2}'

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

Hors ligne

#204 Hier à 17:10

freechelmi

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

eric63 a écrit :

le script de brother ne fait pas que demander le modèle et basta: pour un néophyte c’est de la ligne de commande donc très obscur à priori

J'ai du raté quelque chose car les 2 scripts demandent le modèle en CLI

Hors ligne

#205 Hier à 17:18

iznobe

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

freechelmi a écrit :
eric63 a écrit :

le script de brother ne fait pas que demander le modèle et basta: pour un néophyte c’est de la ligne de commande donc très obscur à priori

J'ai du raté quelque chose car les 2 scripts demandent le modèle en CLI

Actuellement les 2 scripts demandent :
le modele et le type de connexion .

le script de brother , demande bien plus de choses :
l' accord de licence , la validation , le type de connexion , mais il permet aussi des options plus fines pour le reseau avec des choix plus precis et detaillé ( 13 choix , je ne les connais pas tous peut etre avec des sous choix ... )  que ne fait pas le script de demonipuch , ni celui reactualisé .

l ' avantage indeniable du script ici , c' est qu ' il est en francais , et qu ' il ne pose que peu de questions ( ce qui peut etre ramené a une seule question dans le cas ou une seul imprimante , et 2 questions pour le cas de plusieurs imprimantes )
et qu ' il affiche des infos claires que tout le monde comprend aisément ( et un fichier de log le cas echeant qui ne sera pas effacé malencontreusement ) et donc qu ' on peut demander à produire sur le forum avec un simple commande :

cat brprinter_install.log 

je ne sais pas comment faire ni si il est possible de recuperer le nom du modele de l' imprimante avec une connexion reseau et USB .
faudrait que je regarde ça ...

Merci @Watael pour la commande wink

Dernière modification par iznobe (Hier à 17:26)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#206 Hier à 17:30

eric63

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

kdialog est fournit de base avec kde/plasma
zenity peut être installé en plus mais demande des dépendances gnome

nmap n’est pas installé par défaut et c’est un snap

kubu@kubu-System-Product-Name:~$ nmap
Command 'nmap' not found, but can be installed with:
sudo snap install nmap
kubu@kubu-System-Product-Name:~$ 

si je force en deb

kubu@kubu-System-Product-Name:~$ sudo apt install nmap
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
  gir1.2-rsvg-2.0                  linux-image-6.14.0-24-generic          linux-tools-6.14.0-24
  linux-headers-6.14.0-24          linux-modules-6.14.0-24-generic        linux-tools-6.14.0-24-generic
  linux-headers-6.14.0-24-generic  linux-modules-extra-6.14.0-24-generic  luckybackup-data
Veuillez utiliser « sudo apt autoremove » pour les supprimer.

Installation de :
  nmap

Installation de dépendances : 
  liblinear4  nmap-common

Paquets suggérés :
  liblinear-tools  liblinear-dev  ncat  ndiff  zenmap

Sommaire :
  Mise à niveau de : 0. Installation de : 3Supprimé : 0. Non mis à jour : 0
Taille du téléchargement : 6103 kB
  Espace nécessaire : 27,1 MB / 12,8 GB disponible
Continuer ? [O/n] 
…
kubu@kubu-System-Product-Name:~$ 

nmap -sn -oG - 192.168.1.0/24 | gawk 'tolower($3) ~ /brother/{print $2}'

kubu@kubu-System-Product-Name:~$  nmap -sn 192.168.1.* | grep -i brother
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

#207 Hier à 17:43

Watael

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

ah ? enlève le pipe qu'on voit la sortie de nmap...


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

Hors ligne

#208 Hier à 17:54

iznobe

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

j ' ai trouvé un cable USB wink
et donc :

iznobe@k-pi3:~ $ lsusb | grep -i brother
Bus 001 Device 006: ID 04f9:04fb Brother Industries, Ltd DCP-L3560CDW series
iznobe@k-pi3:~ $ 

on obtient donc facilement le modele utilisé .
faudrait voir comment faire pour obtenir le modele en reseau , si c' est possible .

Dernière modification par iznobe (Hier à 17:57)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#209 Hier à 17:58

iznobe

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

Watael a écrit :

ah ? enlève le pipe qu'on voit la sortie de nmap...

inutile , c ' est simplement que le reseau local de eric63 n ' est pas en 192.168.1.0/24 ...

avant de faire nmap .... , il faut d' abord recuperer le reseau local utilisé => " ip a " peut etre ? mais sur qu ' il doit y avoir bien mieux pour cela ...

mais j' en suis pas là , j ' essaie de voir si on peut recuperer le nom du modele via le reseau tongue

@watael : une commande pour recuperer une page internet sur l' IP 192.168.1.84 port 80 ?
c' est quoi la commande pour " sniffer " un site dejà , j ' ai un trou là ...

EDIT : on peut faire ça avec wget apparemment :

iznobe@k-pi3:~ $ wget -E "192.168.1.84"
--2025-08-14 18:04:57--  http://192.168.1.84/
Connexion à 192.168.1.84:80… connecté.
requête HTTP transmise, en attente de la réponse… 301 Moved Permanently
Emplacement : /home/status.html [suivant]
--2025-08-14 18:04:57--  http://192.168.1.84/home/status.html
Connexion à 192.168.1.84:80… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : 5138 (5,0K) [text/html]
Sauvegarde en : « index.html.1.html »

index.html.1.html                     100%[========================================================================>]   5,02K  --.-KB/s    ds 0s      

2025-08-14 18:04:57 (31,8 MB/s) — « index.html.1.html » sauvegardé [5138/5138]

iznobe@k-pi3:~ $ cat index.html.1.html
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html lang="en-gb" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb"><head><meta http-equiv="Content-Script-Type" content="text/javascript" /><meta http-equiv="content-style-type" content="text/css" /><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><meta http-equiv="X-UA-Compatible" content="IE=edge"><script type="text/javascript" src="/common/js/ews.js"></script><link rel="stylesheet" type="text/css" href="../common/css/mobile_common.css" />
<link rel="stylesheet" type="text/css" href="../common/css/mobile_ews.css" />
<script type="text/javascript" src="../common/js/cookie.js"></script>
<script type="text/javascript" src="../common/js/language.js"></script>
<script type="text/javascript" src="../common/js/lcddisplay.js"></script>
<title>Brother DCP-L3560CDW series</title>
....

Bon , et bien voilà , si pas mieux que wget , " yapuka ! " big_smile on peut donc se passer de poser des questions à l' utilisateur ( si une seule imprimante ) .

Dernière modification par iznobe (Hier à 18:16)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#210 Hier à 18:08

ylag

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

Bonjour,

eric63 a écrit :

nmap n’est pas installé par défaut et c’est un snap

il y a un paquet deb nmap dans les dépôts réguliers.

apt policy nmap

A+

Hors ligne

#211 Hier à 18:11

iznobe

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

pas grave qu ' il ne soit pas installé par defaut , on a prevu le cas dans le script , il suffit de rajouter nmap à la liste des paquets pre requis et voilou .
et bien sur pas de snap big_smile cela va de soi tongue

et pour trouver l' IP :

hostname -I | cut -d ' ' -f1

suffit de rajouter " /24 " à la fin  et le tour est joué pour nmap big_smile

Dernière modification par iznobe (Hier à 18:20)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#212 Hier à 18:30

diesel

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

iznobe a écrit :

pas grave qu ' il ne soit pas installé par defaut , on a prevu le cas dans le script , il suffit de rajouter nmap à la liste des paquets pre requis et voilou .
et bien sur pas de snap big_smile cela va de soi tongue

et pour trouver l' IP :

hostname -I | cut -d ' ' -f1

suffit de rajouter " /24 " à la fin  et le tour est joué pour nmap big_smile

Et pour les "c.ns" qui sont en ipv6 ?

Et ça vaut pour le reste du script.

Amicalement.

Jean-Marie

Dernière modification par diesel (Hier à 20:43)


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#213 Hier à 18:33

Watael

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

une commande pour recuperer une page internet sur l' IP 192.168.1.84 port 80 ?
c' est quoi la commande pour " sniffer " un site dejà , j ' ai un trou là ...

pour quoi faire ?
quel est le but réél ?


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

Hors ligne

#214 Hier à 18:40

iznobe

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

bon , faut que je rentre là :
pour le moment ça donne :

#!/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

#########################
 # gestion des arguments
#########################
declare -u modelName=$1
until test -n "$modelName"
do
    read -rp 'Entrez le modèle de votre imprimante : ' modelName
done
printerName="${modelName//-/}"
#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

#################
 # 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

my_IP="$(hostname -I | cut -d ' ' -f1)"
printer_IP="$(nmap -sn -oG - "$my_IP"/24 | gawk 'tolower($3) ~ /brother/{print $2}')"
USB_printer_name= ???
NET_prineter_name= ???

##################################################
 # 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
    printerInf="$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
    mv -v "$Logfile" "$Logfile.$date"
fi
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" "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
#restauration fichier conf


############################
 # 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

ligne 132 .


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#215 Hier à 18:42

iznobe

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

Watael a écrit :

une commande pour recuperer une page internet sur l' IP 192.168.1.84 port 80 ?
c' est quoi la commande pour " sniffer " un site dejà , j ' ai un trou là ...

pour quoi faire ?
quel est le but réél ?

recuperer le nom du modele de l ' imprimante connectée au reseau local .


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#216 Hier à 19:00

Watael

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

il ne semble pas être question de "sniffer" le serveur, mais uniquement accéder à la page d'accueil du serveur HTTP de l'imprimante.
wget est alors le bon outil.
ou curl

Dernière modification par Watael (Hier à 19:01)


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

Hors ligne

#217 Hier à 19:36

iznobe

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

la commande :

nmap -sn -oG - 192.168.2.84/24 | gawk 'tolower($3) ~ /brother/{print $2}'

fonctionne pas big_smile
le retour est vide .

et pourtant :

iznobe@iznobe-pc:~$ nmap -sn 192.168.2.84/24
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-08-14 19:44 CEST
Nmap scan report for 192.168.2.1
Host is up (0.068s latency).
Nmap scan report for 192.168.2.10
Host is up (0.069s latency).
Nmap scan report for 192.168.2.11
Host is up (0.061s latency).
Nmap scan report for 192.168.2.12
Host is up (0.060s latency).
Nmap scan report for 192.168.2.15
Host is up (0.062s latency).
Nmap scan report for 192.168.2.20
Host is up (0.070s latency).
Nmap scan report for 192.168.2.21
Host is up (0.055s latency).
Nmap scan report for 192.168.2.24
Host is up (0.057s latency).
Nmap scan report for 192.168.2.25
Host is up (0.059s latency).
Nmap scan report for 192.168.2.30
Host is up (0.064s latency).
Nmap scan report for 192.168.2.31
Host is up (0.059s latency).
Nmap scan report for 192.168.2.34
Host is up (0.061s latency).
Nmap scan report for 192.168.2.35
Host is up (0.061s latency).
Nmap scan report for 192.168.2.40
Host is up (0.060s latency).
Nmap scan report for 192.168.2.48
Host is up (0.061s latency).
Nmap scan report for 192.168.2.49
Host is up (0.057s latency).
Nmap scan report for 192.168.2.50
Host is up (0.058s latency).
Nmap scan report for 192.168.2.51
Host is up (0.057s latency).
Nmap scan report for 192.168.2.60
Host is up (0.068s latency).
Nmap scan report for 192.168.2.61
Host is up (0.071s latency).
Nmap scan report for 192.168.2.81
Host is up (0.063s latency).
Nmap scan report for 192.168.2.82
Host is up (0.071s latency).
Nmap scan report for 192.168.2.84
Host is up (0.069s latency).
Nmap scan report for 192.168.2.91
Host is up (0.064s latency).
Nmap scan report for 192.168.2.108
Host is up (0.068s latency).
Nmap scan report for 192.168.2.112
Host is up (0.070s latency).
Nmap scan report for 192.168.2.132
Host is up (0.060s latency).
Nmap done: 256 IP addresses (27 hosts up) scanned in 2.73 seconds
iznobe@iznobe-pc:~$ 

pourquoi avoir mis " tolower " ??

Dernière modification par iznobe (Hier à 19:49)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#218 Hier à 20:30

Watael

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

"pourtant" quoi ? je ne vois pas de "brother" dans la sortie de nmap. Ça fonctionne très bien : ça n'invente pas une ligne qui n'existe pas. lol

le tolower() est l'équivalent (ou presque. si, si, de loin. wink ) du -i de "ton" grep : on met la colonne en minuscule et on compare avec une chaîne en minuscule.


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

Hors ligne

#219 Hier à 22:10

lynn

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

Bonjour,

On peut utiliser avahi-browse pour récupérer le nom et le modèle de l'imprimante. Exemple avec une Canon en wifi sur une Freebox :

avahi-browse --all -t | awk 'BEGIN{IGNORECASE=1}
/Canon|MF[0-9]+C|LBP|iR-ADV|imageRUNNER/ {
    for(i=1;i<=NF;i++) if($i=="IPv4"||$i=="IPv6"){p=i;break}
    name=""
    for(j=p+1;j<NF;j++) {
        if ($j ~ /^(Web|FTP|AirPlay|Device|Microsoft|Secure|_)/) break
        name = name ? name FS $j : $j
    }
    if (name) print name
}'
Canon MF620C Series

«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#220 Hier à 22:56

iznobe

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

ok , merci .

" brother  " n ' apparait pas parceque le nmap ne fait pas apparaître le DNS local , parceque là , je suis en VPN tailscale , pas en local ...
par contre si je fais :

iznobe@iznobe-pc:~$ nmap="$(nmap -sn -oG - 192.168.1.2/24 | gawk 'tolower($3) ~ /iznobe/{print $2}')"
iznobe@iznobe-pc:~$ echo "$nmap"
192.168.1.2
iznobe@iznobe-pc:~$ 

ca renvoie bien l' IP donc c' est bon big_smile

maintenant comment je fais pour recuperer le nom du modele de l ' imprimante donnée par le fichier recuperé avec wget stp ?

iznobe@k-pi3:~ $ wget -E "192.168.1.84"
--2025-08-14 18:04:57--  http://192.168.1.84/
Connexion à 192.168.1.84:80… connecté.
requête HTTP transmise, en attente de la réponse… 301 Moved Permanently
Emplacement : /home/status.html [suivant]
--2025-08-14 18:04:57--  http://192.168.1.84/home/status.html
Connexion à 192.168.1.84:80… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : 5138 (5,0K) [text/html]
Sauvegarde en : « index.html.1.html »

index.html.1.html                     100%[========================================================================>]   5,02K  --.-KB/s    ds 0s      

2025-08-14 18:04:57 (31,8 MB/s) — « index.html.1.html » sauvegardé [5138/5138]

iznobe@k-pi3:~ $ cat index.html.1.html
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html lang="en-gb" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb"><head><meta http-equiv="Content-Script-Type" content="text/javascript" /><meta http-equiv="content-style-type" content="text/css" /><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><meta http-equiv="X-UA-Compatible" content="IE=edge"><script type="text/javascript" src="/common/js/ews.js"></script><link rel="stylesheet" type="text/css" href="../common/css/mobile_common.css" />
<link rel="stylesheet" type="text/css" href="../common/css/mobile_ews.css" />
<script type="text/javascript" src="../common/js/cookie.js"></script>
<script type="text/javascript" src="../common/js/language.js"></script>
<script type="text/javascript" src="../common/js/lcddisplay.js"></script>
<title>Brother DCP-L3560CDW series</title>
....

là j ' avoue que je seche un peu ... :

wget -E "$printer_IP" -O "$tmpDir/index.html"
# et ensuite le nom du modele se trouve dans la partie " <title>Brother DCP-L3560CDW series</title> "
# il vaut mieux utiliser quelle commande ? un sed ?

Dernière modification par iznobe (Hier à 23:05)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#221 Hier à 23:21

Watael

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

w3m --dump peut afficher la page en mode textuel (pas le code, le texte de la page)
il faut voir comment ça se présente, si on peut faire un grep efficace dessus...


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

Hors ligne

#222 Hier à 23:27

iznobe

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

on pourrait pas utiliser une regex avec un champ de capture directement dans le fichier html ca me parait presque plus simple .
ou bien utiliser un : IFS read -ra  sur la partie comprise entre la balise title ?


je ne sais pas de quoi tu parles :
" w3m --dump "
c' est une commande ça ?

Peut etre du navigateur ? : https://w3m.sourceforge.net/

en faisant genre :

w3m $printer_IP -dump

on ne va pas faire installer ce navigateur juste pou recuperer le nom du modele de l' imprimante , alors qu ' on l' a avec wget ou curl ...
tant pis si il faut mettre 4 lignes de code de plus tongue

Dernière modification par iznobe (Hier à 23:33)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#223 Hier à 23:29

Watael

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

on ne traite pas le HTML en shell. Il faut utiliser un parser HTML.

oui. w3m est une commande.

man -k w3m a écrit :
w3m (1)              - a text based web browser and pager

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

Hors ligne

#224 Hier à 23:47

iznobe

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

je suis certain que tu vas adorer tongue
https://openclassrooms.com/forum/sujet/ … tres-24684


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#225 Aujourd'hui à 00:26

Watael

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

grrrrrrr...

smile


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

Hors ligne