我在“/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
;;