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.

#226 Hier à 09:30

iznobe

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

Salut .
Bon j' ai trouvé un truc qui marche , reste à fignoler ... :

#!/bin/bash

tmpDir="/tmp/packages"
file="$tmpDir/index.html"
wget -E "192.168.2.84" -O "$file"
tt="$(grep -oP '(?<=<title>).*?(?=</title>)' $file)"
echo "$tt"

ce qui donne :

iznobe@iznobe-pc:~$ bash Scripts/testeur.sh
--2025-08-15 09:30:21--  http://192.168.2.84/
Connexion à 192.168.2.84:80… connecté.
requête HTTP transmise, en attente de la réponse… 301 Moved Permanently
Emplacement : /home/status.html [suivant]
--2025-08-15 09:30:21--  http://192.168.2.84/home/status.html
Connexion à 192.168.2.84:80… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : 5138 (5,0K) [text/html]
Enregistre : ‘/tmp/packages/index.html’

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

2025-08-15 09:30:21 (93,4 KB/s) - ‘/tmp/packages/index.html’ enregistré [5138/5138]

Brother DCP-L3560CDW series
iznobe@iznobe-pc:~$ 

EDIT : github branche " Watael " actualisé avec le nouveau code pour USB et NET printer_name: blob:https://github.com/44cd499c-65be-4bd3-868b-c816252c7fa1
je sais pas si ce lien fonctionnera pour vous , au pire : https://github.com/iznobe/brother_printer_install/

Ou vous preferez que je continue de poster le code ici ?

Dernière modification par iznobe (Hier à 10:50)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#227 Hier à 10:03

geole

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

Bonjour
Un test réussi.

a@b:~$ wget https://raw.githubusercontent.com/iznobe/brother_printer_install/refs/heads/main/brprinter_install.sh
--2025-08-15 09:53:07--  https://raw.githubusercontent.com/iznobe/brother_printer_install/refs/heads/main/brprinter_install.sh
Résolution de raw.githubusercontent.com (raw.githubusercontent.com)… 2606:50c0:8000::154, 2606:50c0:8001::154, 2606:50c0:8002::154, ...
Connexion à raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8000::154|:443… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : 21086 (21K) [text/plain]
Enregistre : ‘brprinter_install.sh’

brprinter_install.sh             100%[==========================================================>]  20,59K  --.-KB/s    ds 0,009s  

2025-08-15 09:53:08 (2,25 MB/s) - ‘brprinter_install.sh’ enregistré [21086/21086]

a@b:~$ sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/iznobe/brother_printer_install/refs/heads/main/brprinter_install.sh)"
[sudo] Mot de passe de a : 
Connection to brother.com (13.248.151.157) 80 port [tcp/http] succeeded!
Entrez votre modèle d' imprimante : HL-L3230CDW
Sélectionner le type de connectivité : [0] USB - [1] Réseau , votre choix : 0
                      2025-08-15_09:53:38
			# Ubuntu Codename : noble
			# Architecture : x86_64
			# Modèle de l'imprimante : HL-L3230CDW
			# Type de connexion : USB
			# Adresse IP : 
			# Repertoire courant : /tmp/packages
			# Repertoire de telechargement des pilotes : /tmp/packages
			# Fichier d'informations : https://download.brother.com/pub/com/linux/linux/infs/HLL3230CDW
			# page de telechargement des pilotes : https://support.brother.com/g/b/downloadtop.aspx?c=fr&lang=fr&prod=HLL3230CDW_us_eu_as 
 initialisation du script. 
 * Recherche du dossier ' /tmp/packages ' sur votre système...                                                               [fail] 
 * Creation du dossier ' /tmp/packages '...                                                                                  [ OK ] 
 * Obtention des infos de l' imprimante...                                                                                   [ OK ] 
 * Vérification du fichier obtenu...                                                                                         [ OK ] 
 Vérification des pré-requis 
 * Mise à jour de la liste des paquets...                                                                                    [ OK ] 
 * installation des paquets requis...                                                                                                * Recherche du paquet : ' multiarch-support ' sur votre système...                                                          [fail] 
 * Installation du paquet : ' multiarch-support ' sur votre système...                                                       [fail] 
 * Recherche du paquet : ' lib32stdc++6 ' sur votre système...                                                               [ OK ] 
 * Recherche du paquet : ' cups ' sur votre système...                                                                       [ OK ] 
 * Recherche du paquet : ' curl ' sur votre système...                                                                       [ OK ] 
 * Recherche du paquet : ' wget ' sur votre système...                                                                       [ OK ] 
 * Recherche du paquet : ' gawk ' sur votre système...                                                                       [ OK ] 
 * Recherche du dossier ' /usr/share/cups/model ' sur votre système...                                                       [ OK ] 
 * Recherche du dossier ' /var/spool/lpd ' sur votre système...                                                              [ OK ] 
 Recherche des pilotes 
 * Recherche des pilotes pour l' imprimante...                                                                               [ OK ] 
 Pas de scanner détecté 
                                                                                                                             [fail]
 Téléchargement des pilotes 
 * Téléchargement du paquet : hll3230cdwpdrv-1.0.2-0.i386.deb...                                                             [ OK ] 
 Installation des pilotes 
 * Installation du paquet : hll3230cdwpdrv-1.0.2-0.i386.deb...                                                               [ OK ] 
 Configuration de l'imprimante 
 * Recherche d'un fichier PPD sur votre système...                                                                           [ OK ] 
 * Ajout de l'imprimante HL-L3230CDW...                                                                                      [ OK ] 
 Configuration du scanner 
 Configuration de votre imprimante Brother HL-L3230CDW terminée. Bye :D 
 Vous pouvez supprimer le dossier /tmp/packages avec la commande suivante :  rm -r /tmp/packages 
a@b:~$

Il y a bien écrit: "Bye:D"

Dernière modification par geole (Hier à 12:31)


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

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

Hors ligne

#228 Hier à 10:14

nany

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

Bonjour,



iznobe a écrit :

Bon j' ai trouvé un truc qui marche

Il y a un point d’interrogation inutile dans ton grep.

grep -oP '(?<=<title>).*(?=</title>)' $file

 

Et puis,

Watael a écrit :

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

https://shinyu.org/en/bash/html-and-the … sing-html/

Hors ligne

#229 Hier à 10:53

iznobe

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

ce n' est pas ce que dit exactement la page que tu as mise en lien :

Bash isn’t the go-to for parsing HTML, but it can be done with tools like grep, awk, sed, or external utilities like

certes c' est pas le top , mais ça marche , si il y a des ratés , on sera toujours à temps d ' y revenir plus tard non ?
je doute qu ' il soit utile de se compliquer plus que ca , juste pour recuperer le nom du modele , si il n' y a pas de raté .
Ce n' est pas une information cruciale , dans le sens où , si on ne recupere pas le nom , on demandera à l' utilisateur de le mettre .

Dernière modification par iznobe (Hier à 10:56)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#230 Hier à 11:14

iznobe

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

@diesel
l' IPV6 c' est bien pour internet , quel interet de n ' avoir que de l' ipv6 en local ?
tu comptes dépasser le nombre de périphérique que t ' offre la capacité de l' IPV4 sur ton réseau local ?
dans 10 ans , il y aura encore de l' IPV4 , je te rassure tongue
et celui qui sait supprimer l' IPV4 de son ordi , il n' a pas besoin de ce script .

Dernière modification par iznobe (Hier à 11:22)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#231 Hier à 11:34

nany

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

iznobe a écrit :

ce n' est pas ce que dit exactement la page que tu as mise en lien :

Bash isn’t the go-to for parsing HTML, but it can be done with tools like grep, awk, sed, or external utilities like

La page dit aussi que xmllint est plus robuste.

Ceci dit, si tu veux utiliser une autre solution que xmllint, et à supposer que <title>…</title> soit sur une seule ligne et que le titre commence systématiquement par Brother suivi du nom de modèle tu peux utiliser awk :

awk '/<title>/ {print $2}' "$file"

Hors ligne

#232 Hier à 11:42

iznobe

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

libxml2-utils est installé par défaut ?
si oui autant l ' utilisé ..

EDIT : j ' ai ajouté le paquet aux pre-requis , comme ça pas de soucis ...
et modifier le code .

Dernière modification par iznobe (Hier à 11:53)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#233 Hier à 11:52

nany

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

iznobe a écrit :

libxml2-utils est installé par défaut ?

Non, il faut l’installer.

Hors ligne

#234 Hier à 11:54

iznobe

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

le code du script , je le met ici ou sur github ?

une version " awk " de :

USB_printer_name="$(lsusb | grep 04f9: | cut -c 58- | cut -d ' ' -f2)"

c' est possible ?
c' est pour recuperer le nom de l' imprimante connectée en USB qui donne :

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

Sachant qu ' il faudra gerer cela en tableau , dans le cas ou plusieurs imprimantes / scanners peuvent etre connectés en USB .

pour le moment , j' en suis à :

# NET_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 :
    NET_printer_name+="$(xmllint --html --xpath '//title/text()' "$tmpDir/index.html" 2>/dev/null | cut -d ' ' -f2)"
    #echo "NET_printer_name == ${NET_printer_name[*]}"
done
echo "NET_printer_name RESULT == 
TAB printer_IP == ${printer_IP[*]}
TAB NET_printer_name == ${NET_printer_name[*]}"

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

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


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#235 Hier à 12:26

nany

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

iznobe a écrit :
… cut -c 58- …

Es-tu certain d’avoir toujours le même nombre de caractères ?

~$ echo "Bus 001 Device 006: ID 04f9:04fb Brother Industries, Ltd DCP-L3560CDW series" | cut -d"," -f2 | cut -d" " -f3
DCP-L3560CDW
~$

Et si tu tiens à awk (mais je n’en vois pas l’intérêt) :

~$ echo "Bus 001 Device 006: ID 04f9:04fb Brother Industries, Ltd DCP-L3560CDW series" | awk -F"," '{print $2 | "cut -d\" \" -f3"}'
DCP-L3560CDW
~$

Mais, de même, peut-on être certain qu’il y aura une virgule ?

Hors ligne

#236 Hier à 12:29

iznobe

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

malheureusement non , je pense pas que ce sera toujours : ' Brother Industries, Ltd ' qui separera le nom du modele de l' identifiant vendeur:model ...
le soucis c' est que pour le moment , on a pas enorme de " testeur " .
seuls @eric63 et @geole sont presents dans le fil en plus de moi .

on peut toujours aller regarder dans la section imprimantes => brother , et chercher des lsusb , mais bon , ca va etre chronophage ...

Dernière modification par iznobe (Hier à 12:31)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#237 Hier à 13:02

RaphaelG

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

diesel a écrit :
iznobe a écrit :

...........
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 ?
................
Jean-Marie

diesel a raison.

Je ne sais pas traiter le cas IP v6.

Mais même si on se cantonne à IP v4, on peut avoir un réseau local privé avec des adresses non routables commençant par 10.0.0.0/8 ou 172.16.0.0/12 avec donc un masque de sous réseau pas obligatoirement codé sur 24 bits.
Même les adresses commençant par 192.168 n'ont pas obligatoirement un masque de sous réseau de 24 bits.
Je pense qu'il faut obligatoirement en passer par "ip a".

ip a | grep $(hostname -I | cut -d ' ' -f1) | awk '{print $2}'

Dernière modification par RaphaelG (Hier à 13:25)

Hors ligne

#238 Hier à 13:24

eric63

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

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 ??)

 kubu@kubu-System-Product-Name:~$ sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/iznobe/brother_printer_install/refs/heads/main/brprinter_install.sh)"
[sudo] password for kubu: 
Connection to brother.com (13.248.151.157) 80 port [tcp/http] succeeded!
Entrez votre modèle d' imprimante : mfc-j4510dw
Sélectionner le type de connectivité : [0] USB - [1] Réseau , votre choix : 1
 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 
Entrez l'adresse IP de votre imprimante : 192.168.1.180
 * Controle de l' adresse IP entrée...                                                                                      PING 192.168.1.180 (192.168.1.180) 56(84) bytes of data.

--- 192.168.1.180 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 3.277/3.314/3.351/0.037 ms
                                                                                                                     [ OK ]
 
                # 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 : /tmp/packages
                # 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...                                                       [fail] 
 * Creation du dossier ' /tmp/packages '...                                                                          [ OK ] 
 * Obtention des infos de l' imprimante...                                                                           [ OK ] 
 * Vérification du fichier obtenu...                                                                                 [ OK ] 
 Vérification des pré-requis 
 * Mise à jour de la liste des paquets...                                                                            [ OK ] 
 * installation des paquets requis...                                                                                        * Recherche du paquet : ' multiarch-support ' sur votre système...                                                  [fail] 
 * Installation du paquet : ' multiarch-support ' sur votre système...                                               [fail] 
 * Recherche du paquet : ' lib32stdc++6 ' sur votre système...                                                       [ OK ] 
 * Recherche du paquet : ' cups ' sur votre système...                                                               [ OK ] 
 * Recherche du paquet : ' curl ' sur votre système...                                                               [ OK ] 
 * Recherche du paquet : ' wget ' sur votre système...                                                               [ OK ] 
 * Recherche du paquet : ' gawk ' sur votre système...                                                               [ OK ] 
 * Recherche du dossier ' /usr/share/cups/model ' sur votre système...                                               [ OK ] 
 * Recherche du dossier ' /var/spool/lpd ' sur votre système...                                                      [fail] 
 * Creation du dossier ' /var/spool/lpd '...                                                                         [ OK ] 
 Recherche des pilotes 
 * Recherche des pilotes pour l' imprimante...                                                                       [ OK ] 
 * Recherche des pilotes pour le scanner...                                                                          [ OK ] 
 Téléchargement des pilotes 
 * Téléchargement du paquet : brscan4-0.4.11-1.amd64.deb...                                                          [ OK ] 
 * Téléchargement du paquet : brscan-skey-0.3.4-0.amd64.deb...                                                       [ OK ] 
 * Téléchargement du paquet : mfcj4510dwlpr-3.0.1-1.i386.deb...                                                      [ OK ] 
 * Téléchargement du paquet : brother-udev-rule-type1-1.0.2-0.all.deb...                                             [ OK ] 
 * Téléchargement du paquet : mfcj4510dwcupswrapper-3.0.1-1.i386.deb...                                              [ OK ] 
 Configuration de l'imprimante 
 * Recherche d'un fichier PPD sur votre système...                                                                   [ OK ] 
 * Ajout de l'imprimante MFC-J4510DW...                                                                              [fail] 
 Configuration du scanner 
 * Configuration du scanner réseau...                                                                                [fail] 
 No config binary found. 
 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 
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

#239 Hier à 14:58

iznobe

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

eric63 a écrit :

d’ailleurs comment différencier une ip non fixe d’une fixe ??

c' est tres simple , si tu n' as rien fait en ce sens , tu as une ip qui changera ( pas fixe donc ) .
si tu as une IP fixe , tu es au courant car tu as fait une manipulation expres pour qu ' elle le soit , soit dans ta box ( ou ton routeur ) : attribué un bail statique ( par exemple ) soit tu as modifié dans ton imprimante la façon dont celle-ci otient son adresse ip et donc tu as mis un masque de reseau , une passerrelle , et une adresse ip qu ' elle demande au serveur DHCP de ton reseau de lui fournir .


le script de demonipuch ( remanié ) , celui qui est en page 1 de cette discussion , n ' est pas le script que l' on travaille en ce moment .
c' est le script pour les utilisateurs " courants " qui veulent installer leur imprimante , en attendant que le script que l' on travaille soit finalisé .
c' est la version " stable " dirons nous .

Celui que l' on travaille , c ' est la version " beta " .

je vais ajouter le script et la commande en 1ere page pour les testeurs . ca sera plus clair roll

Dernière modification par iznobe (Hier à 15:00)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#240 Hier à 15:55

iznobe

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

voici , le code en question du coup , ca vous semble comment comme approche ?

# printer_name= ???
declare -i 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"
        # on affiche un message à l' utilisateur pour lui demander de connecter son imprimante
        # si elle est bien connectée alors on lui pose la question classique
        ;;
    1)  echo "une seule imprimante"
        printer_name=${printer_name[0]}
        # il n' y a plus qu ' a executer l' installation standard , voir demander une confirmation des elements trouvés ?
                ;;
    *)  echo "plus d' une imprimante a été détectée"
        # 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
        ;;
esac

retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#241 Hier à 16:47

Watael

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

un serveur doit avoir une IP fixe. Mme Michu et son mari sauront-ils configurer leur boxe dans ce sens ?
sans IP fixe toute la configuration "en dur" finira par ne plus fonctionner.

voici , le code en question du coup , ca vous semble comment comme approche ?

  • declare -i : les variables déclarées ne sont pas des entiers.

  • printer_IP n'est pas un tableau.

  • je suis surpris que xmllint ne puissse pas nous dispenser de cut (je ne pratique pas assidûment*)

  • pas grep | cut | cut grrr!!

  • pense à écrire ton raisonnement avant d'écrire du code; ça servira de commentaire pour qu'on voit l'articulation du code.
    ça aide bien aussi lors de la maintenance.

  • case $v in *) est équivalent au else de if...then...

--
* tu as essayé w3m ? et alors, peut-on voir le texte de la page d'accueil de l'imprimante, stp ?

Dernière modification par Watael (Hier à 16:48)


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

Hors ligne

#242 Hier à 17:30

lynn

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

Et avahi-browse ne convient pas pour découvrir le nom et modèle de son imprimante réseau sans avoir à s'occuper de son I.P ? Non ?
Je me permettais une redite car il semblerait que mon post précédent soit passé inaperçu. Après, ce n'était peut-être pas une bonne idée... tongue

N.B : Je n'ai pas de modèle Brother sous la main mais le principe est le même avec une autre marque.


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

Coluche

Hors ligne

#243 Hier à 18:07

iznobe

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

Watael a écrit :

voici , le code en question du coup , ca vous semble comment comme approche ?

  • declare -i : les variables déclarées ne sont pas des entiers.

  • printer_IP n'est pas un tableau.

  • je suis surpris que xmllint ne puissse pas nous dispenser de cut (je ne pratique pas assidûment*)

  • pas grep | cut | cut grrr!!

  • pense à écrire ton raisonnement avant d'écrire du code; ça servira de commentaire pour qu'on voit l'articulation du code.
    ça aide bien aussi lors de la maintenance.

  • case $v in *) est équivalent au else de if...then...

--
* tu as essayé w3m ? et alors, peut-on voir le texte de la page d'accueil de l'imprimante, stp ?

non pas encore , je me suis surtout occupé d' ecrire la structure du code et de le remanié de façon a incorporer la suggestion de @freechelmi .
+ declare rectifié .
+ printer IP est bien un tableau ( enfin c' est l' idée du moins , de façon a recuperer plusieurs IP le cas echeant ) .
+ xmlint : je suis allé au plus simple tongue

Watael a écrit :

[*]pas grep | cut | cut grrr!![/*]

ca avait l' air de ne pas deranger @nany tongue , je me suis pas pris la tete , privilegiant la structure dans un 1er temps .

Pour le raisonnement , il me semble que c' est ce que j' ai fais voir message precedent ou les commentaires sont explicites . fallait que j' avance un peu pour ca s' eclaire dans ma tete big_smile

case 
...
*)

j ' avais bien compris , qu ' est ce qui ne va pas ?
soit on a pas d' imprimante detecté
soit on en a une
soit on en a plusieurs


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#244 Hier à 18:13

iznobe

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

je vois pas trop comment éviter , avec les nouvelles modifs , de remettre une variable " connection " ...
le code , qui commence a être compréhensible maintenant tongue :
j ' ai du deplacer la partie " controle des arguments " apres la detection automatique , bien entendu .

#!/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 "plus d' une imprimante a été détectée"
        # 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^^}"
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

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


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#245 Hier à 18:26

iznobe

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

lynn a écrit :

Et avahi-browse ne convient pas pour découvrir le nom et modèle de son imprimante réseau sans avoir à s'occuper de son I.P ? Non ?
Je me permettais une redite car il semblerait que mon post précédent soit passé inaperçu. Après, ce n'était peut-être pas une bonne idée... tongue

N.B : Je n'ai pas de modèle Brother sous la main mais le principe est le même avec une autre marque.

je ne connais pas du tout, mais si tu peux mettre ce que tu obtiens chez toi avec , ca nous eclairerais bien sur les possibilités offertes , ca a l' air inintéressant à 1ere vue wink

EDIT : je n' ai peut etre pas mis les bonnes options , mais moi qui trouvait que 4 secondes pour nmap c' etait long , là , ca fait plus de 5 minutes qu ' il scanne ...

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


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#246 Hier à 19:19

lynn

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

Il faut juste installer le paquet avahi-utils et ça donne ça en brut :

avahi-browse --all -t
+   eno1 IPv6 BRAVIA 4K VH2                                 AirPlay Remote Video local
+   eno1 IPv4 BRAVIA 4K VH2                                 AirPlay Remote Video local
+   eno1 IPv6 BRAVIA 4K VH2                                 _androidtvremote2._tcp local
+   eno1 IPv4 BRAVIA 4K VH2                                 _androidtvremote2._tcp local
+   eno1 IPv6 adb-a064be005011114                           _adb._tcp            local
+   eno1 IPv4 adb-a064be005011114                           _adb._tcp            local
+   eno1 IPv6 freebox                                       FTP File Transfer    local
+   eno1 IPv4 freebox                                       FTP File Transfer    local
+   eno1 IPv6 BRAVIA-4K-VH2-38f80db9924ded0e2411b63d6bfdf5c7 _googlecast._tcp     local
+   eno1 IPv4 BRAVIA-4K-VH2-38f80db9924ded0e2411b63d6bfdf5c7 _googlecast._tcp     local
+   eno1 IPv4 freebox                                       Microsoft Windows Network local
+   eno1 IPv4 freebox                                       Secure Web Site      local
+   eno1 IPv4 freebox                                       _fbx-api._tcp        local
+   eno1 IPv4 freebox                                       Web Site             local
+   eno1 IPv4 Canon MF620C Series                           Web Site             local

Y a plus qu'à toper l'imprimante avec le pattern voulu. Un exemple en #219


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

Coluche

Hors ligne

#247 Hier à 19:22

iznobe

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

ha , c' est plus rapide que nmap ( avec les bonnes options big_smile ) , manqe plus que l ' IP ( V4 tongue ) et c' est parfait .


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#248 Hier à 19:26

diesel

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

Chez moi :

jean-marie@jean-marie:~$ avahi-browse --all -t
+ enp25s0 IPv6 Brother HL-L3230CDW series                    Internet Printer     local
+ enp25s0 IPv4 Brother HL-L3230CDW series                    Internet Printer     local
+ enp25s0 IPv6 E393930EE393                                  iPod Touch Music Library local
+ enp25s0 IPv4 E393930EE393                                  iPod Touch Music Library local
+ enp25s0 IPv4 Brother HL-L3230CDW series                    Web Site             local
+ enp25s0 IPv6 Brother HL-L3230CDW series                    Web Site             local
jean-marie@jean-marie:~$

Amicalement.

Jean-Marie


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

#249 Hier à 19:35

iznobe

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

To resolve a hostname to an IPv4 address with avahi-resolve:

avahi-resolve -n -4 <host>.local

effectivement , c' est bien plus propre et plus rapide que nmap , du coup et evolutif , pour ceux qui voudront s' y coller pour l' IPV6 tongue

iznobe@iznobe-pc:~$ avahi-resolve-host-name M-PI3.local
m-pi3.local	fe80:xxxxxxxxx:c227
iznobe@iznobe-pc:~$ avahi-resolve -n -4 M-PI3.local
m-pi3.local	192.168.1.132
iznobe@iznobe-pc:~$ avahi-resolve -n -6 M-PI3.local
m-pi3.local	fe80:xxxxxxxxx:c227
iznobe@iznobe-pc:~$ 

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


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#250 Hier à 20:37

Watael

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

+ printer IP est bien un tableau ( enfin c' est l' idée du moins , de façon a recuperer plusieurs IP le cas echeant ) .

alors

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

pas besoin de guillemets : on sait que le $2 de awk est insécable.

pour le case, c'est moi qui ait mal lu « plus d'une imprimante » roll

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

--
* pareil pour sed wink

Dernière modification par Watael (Hier à 20:38)


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

Hors ligne