セットアップ:
私は2つの場所でノートブックを使用しています。各場所で、コンピューターはDHCPを介してIPアドレスを受け取ります。この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
_- mechanismによって実行され、ファイル/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