Executando um comando na mudança de estado do link no freebsd

3

No freebsd quando um cabo é conectado / desconectado, as seguintes linhas são gravadas no buffer do dmesg:

em0: estado do link alterado para DOWN em0: estado do link alterado para UP

Eu gostaria de executar um script quando ambos acontecem, mas não consigo encontrar nada expondo essas alterações de estado programaticamente. Nem mesmo APIs C.

Eu vejo que o ifconfig imprime "status: no carrier" e "status: active" dependendo se um cabo está conectado. Mas eu preferiria evitar polling como 1) ele queima o tempo de CPU que é importante em um laptop e 2) pode perder mudanças se o intervalo de polling for muito longo.

Existe alguma maneira de ser notificado quando um cabo é conectado e desconectado?

    
por Josh 22.01.2014 / 02:24

1 resposta

3

Você provavelmente desejará verificar /etc/devd.conf . devd é a principal maneira de o FreeBSD reagir a eventos do kernel / hardware.

Há um exemplo que mostra como corresponder a um evento UP / DOWN da rede e executar uma tarefa, conforme abaixo, e a página man tem boas informações.

notify 0 {
    match "system"          "IFNET";
    match "type"            "LINK_UP";
    media-type              "ethernet";
    action "/etc/rc.d/dhclient quietstart $subsystem";
};

link

    
por 22.01.2014 / 13:29