Установка:
Я использую свой ноутбук в двух местах. В каждом местоположении компьютер получает IP-адрес через DHCP. Этот IP-адрес зависит от местоположения, но является постоянным для каждого местоположения со временем. Кроме того, в каждом местоположении существует принтер.
Задача:
Я настроил оба принтера и хотел бы установить принтер по умолчанию согласно IP. К этой цели я записал сценарий и поместил ее под /etc/network/if-up.d/set-default-printer
, использование lpoptions -d
на самом деле устанавливать принтер по умолчанию.
Сценарий:
#!/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
Проблема:
К сожалению, принтер по умолчанию не изменяется сценарием (может быть проверен через lpoptions
без дальнейших аргументов).
Дальнейшая диагностика:
if-up
- механизм, который проверяется созданием файлов /home/user/(A|B)
.По-видимому, lpoptions
потребности, которые будут выполняться как локальный пользователь. Следовательно, замена
lpoptions -d $pr
sudo -H -u user lpoptions -d $pr
для обоих принтеров $pr
решает проблему.
Принятие, user
Ваше имя пользователя, полный сценарий /etc/network/if-up.d/set-default-printer
теперь:
#!/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