IPに応じてデフォルトのプリンターを設定する


1

セットアップ:

私は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追加の引数なしで確認できます)。

さらなる診断:

  1. スクリプトは、コンテンツを貼り付けるか、コマンドラインから呼び出すだけで機能します。
  2. スクリプトは、if-up-mechanism によって実行されます/home/user/(A|B)。これは、filesの作成によって検証されます。
  3. 特に、1または2に続くスクリプトファイル自体は実行可能です。

回答:


0

どうやら、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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.