Gentoo Logo

1.  Ganchos de função padrão

Quatro funções podem ser definidas que serão chamadas em torno das operações start/stop. As funções são chamadas com o nome da interface primeiro para que uma função possa controlar múltiplos adaptadores.

Os valores de retorno para as funções preup() e predown devem ser 0 (sucesso) para indicar que a configuração ou desconfiguração da interface pode continuar. Se preup() retornar um valor não-nulo, então a configuração de interface será abortada. Se o predown() retornar um valor não-nulo, então a interface não poderá continuar a desconfiguração.

Os valores de retorno para as funções postup() e postdown são ignorados, já que não há nada a fazer se eles indicarem falhas.

${IFACE} é configurado para a interface ser levantada/abaixada. ${IFVAR} é ${IFACE} convertido para um nome de variável permitido pelo bash

Listagem de código 1.1: exemplos de função pre/post up/down

preup() {
  # Testar link na interface antes de levantá-la. Isto
  # só funciona com alguns adaptadores de rede e precisa de que o pacote
  # mii-diag esteja instalado.
  if mii-tool ${IFACE} 2> /dev/null | grep -q 'no link'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  Testar link na interface antes de levantá-la. Isto
  # só funciona com alguns adaptadores de rede e precisa de que o pacote
  # ethtool esteja instalado.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Lembre-se de retornar 0 em caso de sucesso
  return 0
}

predown() {
  # O padrão no script é testar por raiz de NFS e proibir
  # abaixar interfaces no caso. Note que se você especificar uma
  # função predown() você irá sobrepor a lógica. Aqui está, em
  # caso que você ainda queira...
  if is_net_fs /; then
    eerror "sistema de arquivos raiz está montado em rede -- ${IFACE} não pode ser parada"
    return 1
  fi

  # Lembre-se de retornar 0 em caso de sucesso
  return 0
}

postup() {
  # Esta função pode ser usada, por exemplo, para registrar com
  # um serviço de DNS dinâmico. Outra possibilidade seria
  # enviar/receber correio uma vez que a interface for configurada.
  return 0
}

postdown() {
  # Esta função está aqui para ser completo... Não
  # pensei de nada interessante para fazer com ela ainda ;-)
  return 0
}

1.  Ganchos de função para ferramentas wireless

Nota: Isto não irá funcionar com WPA suplicante - mas as variáveis ${ESSID} e ${ESSIDVAR} estão disponíveis na função postup().

Duas funções podem ser definidas que irão ser chamadas em torno da função associada. As funções são chamadas com o nome da interface primeiro para que uma função possa controlar múltiplos adaptadores.

Os valores de retorno para uma função preassociate() devem ser 0 (sucesso) para indicar que a configuração ou desconfiguração da interface pode continuar. Se preassociate() retornar um valor não-nulo, então a configuração de interface será abortada.

O valor de retorno para a função postassociate() é ignorado já que não há nada a fazer se indicar falha.

${ESSID} é configurado como o ESSID exato do AP a que você está se conectando. ${ESSIDVAR} é ${ESSID} convertido para um nome de variável permitido pelo bash

Listagem de código 1.1: funções pre/post association

preassociate() {
  # Abaixo são adicionadas duas variáveis de configuração leap_user_ESSID
  # e leap_pass_ESSID. Quando as duas são configuradas para o ESSID
  # sendo conectado, então nós rodamos o script CISCO LEAP

  local user pass
  eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
  eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"

  if [[ -n ${user} && -n ${pass} ]]; then
    if [[ ! -x /opt/cisco/bin/leapscript ]]; then
      eend "Para suporte a LEAP support, por favor faça emerge net-misc/cisco-aironet-client-utils"
      return 1
    fi
    einfo "Esperando autenticação de LEAP em \"${ESSID//\\\\//}\""
    if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
      ewarn "Login falhou para ${user}"
      return 1
    fi
  fi

  return 0
}

postassociate() {
  # Esta função está aqui para ser completo... Não
  # pensei de nada interessante para fazer com ela ainda ;-)

  return 0
}

Nota: ${ESSID} e ${ESSIDVAR} não estão disponíveis nas funções predown() e postdown().

Atualizado 22 de dezembro de 2005

A versão original deste documento foi atualizada em 30 de outubro de 2011

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.