0

ラップトップがネットワークに接続されている場合にのみ、notify-OSD を使用して通知を出力する bash スクリプトがあります。そのため、bash スクリプトを /etc/network/if-up.d に配置しました。

スクリプトが実際に実行されていることを確認するために、いくつかのログ メッセージをファイルに出力しました。ただし、通知は機能していないようです。この行をファイルに追加しました

 notify-send -u 'critical' -i /home/vivek/Downloads/proxy.ico 'SetProxy Status' 'proxy set to auto'

ただし、そのスクリプトを(ダブルクリックするか、または)ターミナルから次のように明示的に実行すると:

cd /etc/network/if-up.d
./setproxy

setproxy は bash ファイルの名前です。通知が完全に機能していることがわかります。なぜこの振る舞いをするのですか?どうすればこれを修正できますか? 私はubuntu 12.04を使用しています

/tmp/trace に出力:

+ nmcli con status
+ grep -q 'Hostel\|IITD'
+ '[' 1 -eq 0 ']'
+ gsettings set org.gnome.system.proxy mode none

** (process:12320): WARNING **: Command line `dbus-launch     --autolaunch=673e71ca3fc5f402403d22380000000a --binary-syntax --close-stderr' exited with non-zero exit status 1: Autolaunch error: X11 initialization failed.\n

** (process:12320): WARNING **: Command line `dbus-launch --autolaunch=673e71ca3fc5f402403d22380000000a --binary-syntax --close-stderr' exited with   non-zero exit status 1: Autolaunch error: X11 initialization failed.\n
+ echo 'You are outside college! No Proxy'
+ notify-send -u critical -i /home/vivek/Downloads/proxy.ico 'SetProxy Status' 'You are outside college, proxy set to none'
4

3 に答える 3

1

環境問題だと思います。

したがって、スクリプトに次のように記述します。

#!/bin/bash -x

source ~/.bashrc || source /etc/profile
exec &>/tmp/trace
# rest of the script there

何が起こっているのか教えてください。

編集:スクリプトは次で始まる必要があります:

#!/bin/bash

source ~/.bashrc || source /etc/profile
export DISPLAY=:0
# rest of the script there
于 2012-12-30T16:45:52.517 に答える
0

実行しているプログラムに X が必要な場合、X なしでは実行できません。何らかの方法で X セッションへの接続を許可するか、X セッション内から実行してください。

于 2012-12-30T18:35:27.903 に答える