Fedora alternativa ao comando post-up

2

O Fedora suporta algo semelhante ao comando post-up ( como no Ubuntu ou tem alguma outra alternativa para esse comando?

Eu quero rodar um script personalizado depois de ativar a interface de rede, mas não tenho idéia de como gerenciar isso no 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.
    
por Kalvis K 14.06.2015 / 02:43

1 resposta

2

Uma ideia seria colocar um script neste diretório: /etc/NetworkManager/dispatcher.d . O NetworkManager executará scripts em ordem alfabética quando ocorrerem vários eventos de rede.

trecho: da página do manual :

NetworkManager will execute scripts in the /etc/NetworkManager/dispatcher.d directory in alphabetical order in response to network events. Each script should be (a) a regular file, (b) owned by root, (c) not writable by group or other, (d) not set-uid, (e) and executable by the owner. Each script receives two arguments, the first being the interface name of the device just activated, and second an action.

Com base na página man, há os seguintes "eventos": cima, baixo, vpn-up, vpn-down, nome do host, dhcp4-change, & dhcp6-change.

Eu suspeito que você poderia fazer o que quiser usando o evento "up". Esta postagem do blog, intitulada: " Use o NetworkManager para iniciar scripts baseados em scripts na localização de rede ", mostra como você pode construir um script de shell para ser executado quando uma interface (eth0) sobe.

Por exemplo (código "emprestado" da postagem do blog):

#!/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

Este exemplo deve ser suficiente para você começar a fazer o que está tentando fazer.

    
por 14.06.2015 / 03:29