Fedora는 이와 같은 기능을 지원합니까?우편주문하다(우분투에서와 마찬가지로) 또는 이 명령에 대한 다른 옵션이 있습니까?
네트워크 인터페이스를 활성화한 후 사용자 정의 스크립트를 실행하고 싶지만 Fedora에서 이를 관리하는 방법을 모르겠습니다.
post-up command Run command after bringing the interface up. If this command fails then ifup aborts, refraining from marking the interface as configured (even though it has really been configured), prints an error message, and exits with status 0. This behavior may change in the future.
답변1
한 가지 아이디어는 다음 디렉터리에 스크립트를 넣는 것입니다 /etc/NetworkManager/dispatcher.d
. NetworkManager는 다양한 네트워크 이벤트가 발생할 때 알파벳 순서로 스크립트를 실행합니다.
NetworkManager는 네트워크 이벤트에 대한 응답으로 /etc/NetworkManager/dispatcher.d 디렉토리에 있는 스크립트를 알파벳순으로 실행합니다. 각 스크립트는 (a) 일반 파일이어야 하고, (b) 루트가 소유해야 하며, (c) 그룹이나 다른 사람이 쓸 수 없고, (d) uid로 설정할 수 없으며, (e) 소유자가 실행할 수 있어야 합니다. 각 스크립트는 두 개의 매개변수를 받습니다. 첫 번째는 방금 활성화한 장치의 인터페이스 이름이고 두 번째는 작업입니다.
매뉴얼 페이지에 따르면 up, down, vpn-up, vpn-down, 호스트 이름, dhcp4-change 및 dhcp6-change와 같은 "이벤트"가 있습니다.
"up" 이벤트를 사용하여 원하는 것을 할 수 있을지 의심됩니다. 이 블로그 게시물의 제목은 "NetworkManager를 사용하여 네트워크 위치에 따라 스크립트 실행”에서는 인터페이스(eth0)가 시작될 때 실행할 쉘 스크립트를 작성하는 방법을 보여줍니다.
예를 들어(이 블로그 게시물에서 "빌려온" 코드):
#!/bin/sh
IF=$1
STATUS=$2
USER=justintime
wait_for_process() {
PNAME=$1
PID=`/usr/bin/pgrep $PNAME`
while [ -z "$PID" ]; do
sleep 3;
PID=`/usr/bin/pgrep $PNAME`
done
}
start_synergy() {
wait_for_process nm-applet
/bin/su $USER -c "/usr/bin/synergyc $1"
}
if [ "$IF" = "eth0" ] && [ "$STATUS" = "up" ]; then
#LAN Subnet at work
NETMASK="10.0.0.0/8"
if [ -n "`/sbin/ip addr show $IF to $NETMASK`" ]; then
ARGS="jentoo.bucklehq.com"
start_synergy $ARGS
exit $?
fi
fi
이 예는 원하는 작업을 시작하는 데 충분할 것입니다.