网络管理器 dispatcher.d 脚本错误

网络管理器 dispatcher.d 脚本错误

我在“/etc/NetworkManager/dispatcher.d”中编写了一个脚本,以便每当我连接到特定网络(大学 wifi)时打开 Firefox 首选项对话框,因为我必须启用代理。

脚本在记录器中返回“错误代码 1”。如果我注释掉“firefox --preferences”行,脚本将运行,并在记录器中显示“FIREFOX SCRIPT EXECUTED”文本。我该如何纠正?以下是脚本:

#!/bin/sh -e

if [ -z "$1" ]; then
    echo "$0: called with no interface" 1>&2 
    exit 1;
fi


case "$2" in
    up|vpn-up)
    if [ "$CONNECTION_UUID" = "6e7f613f-5563-48f7-892d-655e95c0b834" ]; then
        firefox -preferences
        logger -s "FIREFOX SCRIPT EXECUTED"
    fi
    ;;
   down|vpn-down)
    ;;
   hostname)
   # Do nothing
   exit 0
       ;;
   hostname|dhcp4-change|dhcp6-change)
       # Do nothing
   ;;
   *)
    echo "$0: called with unknown action \`$2'" 1>&2
    exit 1
    ;;
esac

答案1

第一个问题是调用会firefox --preferences停止脚本。第二个问题是脚本是以 root 身份执行的,而不是以登录用户身份执行的。第三:Firefox 需要用户环境以及显示号码。

将脚本中的“up”部分更改如下:

case "$2" in
    up|vpn-up)
    if [ "$CONNECTION_UUID" = "6e7f613f-5563-48f7-892d-655e95c0b834" ]; then
        export HOME=/home/user
        export DISPLAY=:0
        nohup sudo -u user firefox --preferences &
        logger -s "FIREFOX SCRIPT EXECUTED"
    fi
    ;;

相关内容