Configuration:
J'utilise mon ordinateur portable à deux endroits. À chaque emplacement, l'ordinateur reçoit une adresse IP via DHCP. Cette adresse IP dépend de l'emplacement, mais est constante pour chaque emplacement dans le temps. De plus, il y a une imprimante à chaque endroit.
Tâche:
J'ai configuré les deux imprimantes et souhaite définir l'imprimante par défaut en fonction de l'adresse IP. À cette fin, j'ai écrit un script et l'ai placé sous /etc/network/if-up.d/set-default-printer
, en utilisant lpoptions -d
pour définir réellement l'imprimante par défaut.
Script:
#!/bin/sh
ip_A="1.1.1.1"
ip_B="2.2.2.2"
pr_A="Printer-A"
pr_B="Printer-B"
ip=$(hostname -I | cut -d " " -f 1)
if [ $ip = $ip_A ]; then
lpoptions -d $pr_A
touch /home/user/A
fi
if [ $ip = $ip_B ]; then
lpoptions -d $pr_B
touch /home/user/B
fi
Problème:
Malheureusement, l’imprimante par défaut n’est pas modifiée par le script (vous pouvez la vérifier via lpoptions
sans autres arguments).
Diagnostics supplémentaires:
if-up
-, vérifié par la création de fichiers /home/user/(A|B)
.Apparemment, la lpoptions
doit être exécutée en tant qu'utilisateur local. Par conséquent, remplacer
lpoptions -d $pr
par
Sudo -H -u user lpoptions -d $pr
pour les deux imprimantes $pr
résout le problème.
En supposant que user
soit votre nom d'utilisateur, le script complet /etc/network/if-up.d/set-default-printer
est maintenant:
#!/bin/sh
ip_A="1.1.1.1"
ip_B="2.2.2.2"
pr_A="Printer-A"
pr_B="Printer-B"
ip=$(hostname -I | cut -d " " -f 1)
if [ $ip = $ip_A ]; then
Sudo -H -u user lpoptions -d $pr_A
fi
if [ $ip = $ip_B ]; then
Sudo -H -u user lpoptions -d $pr_B
fi