+ Responder ao Tópico



  1. #1

    Padrão script

    Galera!

    To querendo criar um script para colocar as minhas regras do firewall (na verdade estou iniciando em firewall tb, vamos falar em algumas regras de iptables vai), pois quero limpar o meu "rc.local", já criei o arquivo com nome de rc.firewall, dei o chmod +x (verifiquei com "ls -la" e o mesmo já está como executável). Só que quando vou executá-lo com "./rc.firewall" )estou executando dentro do próprio diretório do arquivo e tb já estou como root)dá a seguinte mensagem de erro:
    bash: ./rc.firewall: No such file or directory

    Como executar este arquivo da forma correta? Será que ele não está encontrando onde está o meu interpretador de comandos? O que tá errado?
    As linhas do meu script estão assim:

    #!/bin/bash
    #Descricao: minhas regras iptables

    #adicionando modulos
    modprobe ip_conntrack
    modprobe ipt_MASQUERADE
    modprobe ipt_LOG
    modprobe iptable_nat
    modprobe ip_nat_ftp
    modprobe iptable_filter

    #ativando roteamento de ip
    echo 1 > /proc/sys/net/ipv4/ip_forward

    #regras de iptables
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    iptables -A FORWARD -s 172.16.64.0/32 -j ACCEPT
    iptables -A FORWARD -d 172.16.64.0/32 -j ACCEPT
    iptables -A FORWARD -i eth0 -j ACCEPT
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to 3128

    Observações:
    - Minha distro = CL8;
    - as regras acima já estão rolando só que no meu rc.local, quero tirar de lá.
    - Já li algumas docs sobre script e pelo que entendi é só eu colocar a primeira linha do script com a seguinte sintaxe: #!/bin/bash e depois colocar as demais obsevações ou linhas.

    O que está errado?

    Agradeço antecipadamente as dicas!

    Abraços.

  2. #2

    Padrão script

    Colegas do Underlinux!

    Ninguém me ajuda nesta?

    Obrigado.

  3. #3
    Abutre
    Visitante

    Padrão script

    Wal,
    Coloque o seu arquivo em /etc/init.d Ok ??
    De qualquer diretório , rode com #service <nome do arquivo> start, ou stop pra parar...
    Ex: # service rc.firewall start .....blz ???
    Qualquer coisa, postta ae !

    Abutre

  4. #4
    Administrador Avatar de Fernando
    Ingresso
    Jul 2001
    Localização
    Campinas Area
    Posts
    4.996
    Posts de Blog
    4

    Padrão script

    Voce nao deu ao arquivo permissao de execucao:

    chmod 755 rc.firewall
    ./rc.firewall

  5. #5
    Visitante

    Padrão script

    parece q a mensagem de erro esta vindo de dentro do rc.firewall

    faça assim:

    sh -x rc.firewall

    ai ele mostra linha por linha da execução do arquivo <IMG SRC="images/forum/icons/icon_smile.gif">


    surf3r

  6. #6

    Padrão script

    Psy!: o comando chmod +x = chmod 755; o arquivo já está como x;

    Abutre!: ou fazendo conforme vc me falou ocorre o seguinte erro:
    /sbin/service: /etc/init.d/rc.firewall: Arquivo ou diretório nao encontrado.

    Anonimo: eu fazendo assim: sh x rc.firewall não dá erro algum e todas as linhas do meu firewall saem com um mais "+" na frente conforme abaixo:

    Todas as linhas ficam assim:
    +modprobe ip_conntrack
    +modprobe ipt_MASQUERADE
    +modprobe ipt_LOG
    +modprobe iptable_nat
    +modprobe ip_nat_ftp
    +modprobe iptable_filter

    Quando acontece isso é porque todas as linhas foram executadas? Correto?
    Como eu faço para colocar esse "bendito arquivo" para ser executado na inicialização do sistema?

    Obrigado galera!

  7. #7

    Padrão script

    voce tem que colocar ele no
    /etc/rc.d/initd
    existe um comando., que nao me lembro agora, que adiciona o seu arquivo a inicializacao do sistema....
    tente rodar o ntsysv
    ele esta em
    /sbin
    ou em
    /usr/sbin
    la vc encontra todos os executaveis que estao disponiveis para a execucao na inicializacao

  8. #8
    replicante
    Visitante

    Padrão script

    coloque esse seu rc.firewall dentro do /bin e adicione esta linha do rc.local

    . /bin/rc.firewall

    naum sei no Conectiva mas se fosse no slack era só colocar esse rc.firewall na pasta /etc/rc.d que ele iniciava normalmente, vc tem que ver se na inicialização ele não está subindo antes de algum processo que o firewall usa... tipo a conexão da net... saca? pq no rc.local ele sempre era a ultima coisa a ser executada...

    é isso,

  9. #9
    Abutre
    Visitante

    Padrão script

    Wal,
    Acrescente isso no início do seu arquivo rc.firewall abaixo de #descrição, pra ele criar o arquivo dentro de /etc/rc.d/init.d, e rode como eu te falei,

    . /etc/rc.d/init.d/functions
    . /etc/sysconfig/network

    Posta pra gente saber...

    Abutre

  10. #10

    Padrão script

    ok!

    vou testar e colocar o resultado aqui!!!
    Valeu abutre.

  11. #11

    Padrão script

    Abutre! e caros colegas do fórum!

    continua dando o mesmo erro!

    <IMG SRC="images/forum/icons/icon27.gif"> <IMG SRC="images/forum/icons/icon27.gif"> <IMG SRC="images/forum/icons/icon27.gif">

    Help-me!

  12. #12

    Padrão script

    vonlinkerstain

    O comando para incluir e selecionar determinado serviço no comando ntsysv:

    #chkconfig --add firewall

    Mas dá o seguinte erro:
    O serviço rc.firewall nao tem suporte ao chkconfig

    Que parto isso colegas, será que não vai rolar?

    Aguardo mais ajudas!
    Obrigado.
    <IMG SRC="images/forum/icons/icon27.gif"> <IMG SRC="images/forum/icons/icon27.gif"> <IMG SRC="images/forum/icons/icon27.gif">

  13. #13

    Padrão script

    Olha se vc nao conseguir resolver isso... bom meu amigo sinceramente coloque essa parada no rc.local e depois vc cria um script para por no chkconfig.


    /bin/rc.fw

    ---- seu arquivo de rc.fw

    chmod 600 /bin/rc.fw

    /etc/rc.d/rc.local

    adiciona a linha

    /bin/rc.fw

    no final.


    deve funcionar no boot sem problemas.


  14. #14

    Padrão script

    Galera!

    Era mais simples do que eu pensava...agora tá funfando!

    coloquei o arquivo firewall dentro de /bin e inseri no final do arquivo /etc/rc.d/rc.local a linha /bin/firewall(conforme a dica do mistymst).

    Era exatamente o que eu queria, estava indo pelo caminho mais difícil, ou seja eu estava tentando criar um script e tb adicioná-lo ao menu ntsysv (colocá-lo como serviço).

    Do jeito que está está ótimo; enquanto isso eu ganho tempo testando como fazer para colocar o script no ntsysv e tb adicioná-lo como um serviço.


    p.s.: agora se eu digito #./firewall -> o script é executado sem problemas.

    Obrigado pessoal!

    Ser Linux é ser Livre, Ser livre é trocar conhecimentos!
    <IMG SRC="images/forum/icons/icon_biggrin.gif"> <IMG SRC="images/forum/icons/icon_wink.gif">