Установите принтер по умолчанию согласно IP

Установка:

Я использую свой ноутбук в двух местах. В каждом местоположении компьютер получает 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 без дальнейших аргументов).

Дальнейшая диагностика:

  1. Сценарий работает, когда я или вставляю содержание к или просто называю его из командной строки.
  2. Сценарий выполняется if-up- механизм, который проверяется созданием файлов /home/user/(A|B).
  3. В частности, следуя 1 или 2, сам файл сценария является исполняемым файлом.
1
задан 15 May 2018 в 14:24

1 ответ

По-видимому, 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
1
ответ дан 7 December 2019 в 15:19

Другие вопросы по тегам:

Похожие вопросы: