Ayuda con un script


  • 0

    Bueno, pues mi problema es que no se hacer un script.

    Para que mi pc-router haga nat tengo que ejecutar unas pocas lineas. Entonces he leido que se metan en un script y se enlace en los directorios /etc/rd5.d/S98nombre_fichero y en el /etc/rc3.d tambien para evitar problemas.

    Pues por lo que he leido sobre script sería crear un archivo de texto plano con el vim por ejemplo en el que he incluido:

    #! /bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    cat /proc/sys/net/ipv4/ip_forward
    
    # Limpiaremos las reglas del iptables:
    
    /sbin/iptables --flush
    /sbin/iptables --table nat --flush
    # Activaremos el NAT con enmacaramiento en las reglas del iptables:
    
    /sbin/iptables --table nat --append POSTROUTING \
              --out-interface eth0 -j MASQUERADE
    /sbin/iptables --append FORWARD --in-interface eth1 -j  ACCEPT
    
    

    Y esto en teoria se podría ejecutar pero al hacerlo me da errores. Que está mal escrito de ese archivo??

    Esque sino cada vez que arranca el pc tengo que meter todo eso a mano y es un coñazo.



  • 1

    Que errores te da??



  • 2

    Bueno, pues aquí está el resultado:

    # ./archivo_proxy
    : command not found
    : command not found
    : No existe el fichero o el directorio
    : command not found
    : command not found
    'ptables v1.2.6a: Unknown arg `--flush
    Try `iptables -h' or 'iptables --help' for more information.
    'ptables v1.2.6a: Unknown arg `--flush
    Try `iptables -h' or 'iptables --help' for more information.
    : command not found
    'ad argument `
    Try `iptables -h' or 'iptables --help' for more information.
    ./archivo_proxy: --out-interface:command not found
    'ptables v1.2.6a: Invalid target name `ACCEPT
    Try `iptables -h' or 'iptables --help' for more information.
    : command not found
    : command not found
    
    

    Es como si no lo pillase bien porque a veces es como si intentase ejecutar "ptables" en vez de "iptables"

    No se, como si se comiese la primera línea.



  • 3

    yo eske hace mucho k no miro lo de los scripts pero para ejecutar comandos externos se podia usar el comando "exec " mira a ver si encuentras asi algo (man exec)

    Igual no te sirve de nada, no se!

    porcierto, si la aplicacion solo puede ser usada por el root para un user corriente (una aplicacion que ejecuta un comando no es root, no tiene su uid) dicha aplicacion aparece oculta al usuario normal y la muestra como "comando no encontrado"

    no se, mira algo de eso igual el problema del PATH que no esta la aplicacion en el lugar adecudao (aunque veo que pones la ruta)….. en fin yo doi opiniones, igual no te sirven de nada, pero oye pasas un buen rato leyendo jejejeje



  • 4

    Bueno, ahora miraré un poco mas a ver si averiguo algo pero joer, ninguno teneis un pc haciendo de router????

    Esque tendreis que haber echo esto no?????



  • 5

    Bueno, pues no entiendo nada.

    Resulta que me he creado otro archivo y he puesto nada mas:

    #! /bin/bash
    echo hola

    Y funcionaba.
    Entonces he ido añadiendo lineas y probando y al final he escrito un fichero idéntico al que tenia y funciona.

    He mirado y tenian los mismos permisos de ejecucion/lectura/escritura. Y pertenecian al mismo usuario/grupo asique NPI de que pasaba.

    Ahora solo me falta el tema de los enlaces, que tengoq ue reiniciar para ver si lo he echo bien. Sino ya os daré el coñazo un poco.:D



  • 6

    Vale, pues no funciona.

    Arranco el Pc y no me hace NAT. He ejecutado el script y funcionaba el NAT asique el script está perfecto.

    Entonces: ¿Como hago para que me lo ejecute al inicio solo?
    Hize lo siguiente:

    ln -s arrancar_proxy /etc/rd5.c/S98arrancar_proxy
    ln -s arrancar_proxy /etc/rd3.c/S99arrancar_proxy

    Como ví en una web, pero por lo que veo no lo ejecuta al inicio.

    Help please.



  • 7

    En debian:
    Lo metes todo en un script, colocas el script en /etc/init.d y ejecutas:
    _update-rc.d _



  • 8

    Publicado originalmente por josefu
    En debian:
    Lo metes todo en un script, colocas el script en /etc/init.d y ejecutas:
    _update-rc.d _



  • 9

    Primero ejecuta esto:
    update-rc.d -f proxy remove
    Para quitar los posibles enlaces que hayas puesto en los rcx, si no te funciona, quitalos a mano.

    Luego ejecuta:

    /etc/init.d/iptables clear
    Para limpiar las posibles reglas que existiesen

    /etc/init.d/iptables save inactive
    Para guardar una configuración 'virgen' de reglas por si alguna vez quieres que iptables deje de actuar

    Ejecuta las reglas que necesites en tu caso

    y finalmente ejecutas:
    /etc/init.d/iptables save active

    Lee los comentarios en /etc/default/iptables, dan buena información sobre el funcionamiento de este script

    Luego, para activar el ipforwarding, en vez de hacer un echo "1" > … (que tb valdría), ves al archivo /etc/network/options y pon el valor ip_forward activado:

    ip_forward=yes
    
    


  • 10

    Se me olvidaba, luego tienes que hacer que el script /etc/init.d/iptables se ejecute siempre al arrancar con:

    update-rc.d iptables defaults



  • 11

    Bueno, casi casi está.

    Funcionar no funciona, pero si tras el reinicio hago:
    "echo 1 > /proc/sys/net/ipv4/ip_forward" entonces sí.

    Y tengo puesta la variable "ip_forward" de /etc/network/options a "on".

    Osea, que las reglas si que las ha pillado ya bien, pero no activa la variable esta bien, por lo que sea.



  • 12

    No se si se puede poner 'on' o 'yes' (como te he dicho antes), pero a mi con un 'yes' si que me funciona



  • 13

    Efectivamente tengo puesto "yes". Lo de "on" me lo he inventado. Pero no va…:llorar: :llorar: :llorar:



  • 14

    Es un poco extraño eso, pero como solución provisional, deja el 'echo 1 > …' en un script y haz que se ejecute ese script de la misma manera que has hecho con el anteriormente mencionado 'iptables' (update-rc.d ...)





Has perdido la conexión. Reconectando a Hardlimit.