4 votos

Añadir una entrada ARP estática en el arranque

Soy nuevo en Mac OS X. En Linux lo haría:

append to /etc/rc.local
arp -i eth0 -s 192.168.1.1 00:00:00:00:00:00

He descubierto cómo hacerlo en la Terminal:

sudo arp -s 192.168.1.1 00:00:00:00:00:00

Pero me gustaría que esto ocurriera automáticamente, preferiblemente en el arranque. Además, ¿es necesario especificar una interfaz cuando se utiliza arp ?

Leí algunas otras respuestas de SE que mencionaban el launchd, pero no tengo ni idea de qué es eso.

2voto

Biggie Puntos 111

Me costó mucho la solución de Matthieu ya que me causó dos problemas en mi Mac OS X 10.9.2:

  1. Trabajos en el LaunchAgents se ejecutan con el usuario actual. Sin embargo, arp debe ejecutarse con root .
  2. El arp -El comando se ejecuta demasiado pronto, cuando la red no está activa. Pero la red es necesaria para el arp -comando.

El primer problema se puede resolver almacenando el .plist archivo en LaunchDaemons en lugar de LaunchAgents . Esto asegurará que el comando se ejecute como Root.

El segundo problema es un poco complicado. Dado que launchd no maneja las dependencias, tenemos que escribir nuestro propio shell script que primero espera hasta que la red esté lista y luego ejecuta el arp comando. (Ver aquí )

Así que aquí está mi solución:
Primero cree/abra el archivo plist usando un editor de texto:

sudo nano /Library/LaunchDaemons/local.arpentries.plist

A continuación, pegue el siguiente contenido:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>local.arpentries</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/arpentries</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
</dict>
</plist>

El propietario del conjunto, etc:

sudo chown root:wheel /Library/LaunchDaemons/local.arpentries.plist
sudo chmod 0644 /Library/LaunchDaemons/local.arpentries.plist

Ahora crea/abre el shell script utilizando un editor de texto

sudo nano /usr/local/bin/arpentries

Pega lo siguiente:

#!/bin/bash

# max number of retries
retries=10

# include Startup commons
. /etc/rc.common

# wait for network to become available
CheckForNetwork

while [ "$NETWORKUP" != "-YES-" ]
do
        retries=$((retries - 1))
        if [ $retries -le 0 ] ; then
                exit 1
        fi
        sleep 2
        NETWORKUP=
        CheckForNetwork
done

# set the static arp entries
arp -s 192.168.1.111 xx:xx:xx:xx:xx:xx

exit 0

Y los derechos:

sudo chmod 0744 /usr/local/bin/arpentries

1voto

Satanicpuppy Puntos 4902

Launchd es un demonio que inicia, detiene y gestiona demonios, aplicaciones, procesos y scripts en OSX. Está pensado para sustituir a cron de unix.

Crear un nuevo .plist archivo :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>local.arpentry</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/arp</string>
        <string>-s</string>
        <string>192.168.1.1</string>
        <string>00:00:00:00:00:00</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>Nice</key>
    <integer>10</integer>
    <key>KeepAlive</key>
    <false/>
</dict>
</plist>

A continuación, mueva su nuevo .plist a ~/Library/LaunchAgents para que se cargue cada vez que te conectes a tu sesión y, por lo tanto, ejecute tu comando cada vez que te conectes.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X