내 스크립트가 if.up에서 실행되지 않는 이유는 무엇입니까?

내 스크립트가 if.up에서 실행되지 않는 이유는 무엇입니까?

synergy내 노트북 ​​Wi-Fi 카드가 네트워크에 연결될 때마다 시작되는 스크립트를 실행하고 싶습니다 (지금은 누구든지 나중에 필터를 추가하겠습니다). 그래서 다음과 같이 "/etc/network/if-up.d/999startsynergy" 스크립트를 작성했습니다.

#!/bin/bash
########################################################################
# script to start synergy 
# for remote mouse & keyboard control
# from my Desktop PC & work laptop
# script by: Ron Eggler 11/05/2016
#
########################################################################
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
########################################################################
#
# Configuration:
#
host1='DesktopHome'
host2='GEnotebook'
bin='/usr/bin/synergyc'

case $1 in
        up)
        sleep 5
        $bin $host1
        $bin $host2
        ;;
        *) exit 0
esac
exit 0

하지만 네트워크 카드를 비활성화했다가 다시 활성화하면 아무 일도 일어나지 않지만 ./999startsynergy up수동으로 수행하면 제대로 작동합니다! 또한 5초 지연을 적용하거나 적용하지 않고 시도했습니다. 마찬가지입니다. 여기서 무슨 일이 일어날지 아시나요?

답변1

시너지X11 서버(디스플레이)에 대한 액세스가 필요하며 일반적으로 일반 사용자로도 실행해야 합니다.

스크립트는 다음 위치에 있습니다./etc/network/if-up.d/다음과 같이 순차적으로 실행뿌리, X11 디스플레이에 액세스할 수 없으므로 작동하지 않습니다.

당신이 할 수있는 일은 구성하는 것뿐입니다시너지올바른 X11 디스플레이에 연결하십시오(이것은:0, 일반적으로) DISPLAY 환경 변수를 설정하거나 "--display" 옵션을 제공하여시너지.

당신은 또한 사용할 수 있습니다스도올바른 사용자로 시작하십시오(꼭 필요한 것은 아니지만 어쨌든 좋은 생각일 것입니다).

다음은 실험해 볼 수 있는 작은 테스트 스크립트입니다.

#!/bin/sh
[ "$IFACE" = "wlan0" ] || exit 0
export DISPLAY=:0
sudo -u YOUR_USER_NAME xclock &

바꾸다당신의 사용자 이름일반 계정 사용자 이름을 사용하고무선랜 0Wi-Fi 인터페이스 이름(다른 경우)을 입력하고시계설치하고(보통 x11-apps 패키지의 일부임)/etc/network/if-up.d/을 누른 다음 네트워크 인터페이스를 열고 닫아 보십시오.

모든 일이 잘된다면시계인터페이스로 올라갈 때마다 팝업이 표시되며 이를 수정하여 시작할 수 있습니다.시너지대신에.

관련 정보