Iniciando Script com o Sistema - Configuração no Debian Wheezy

Publicado por Roselio em 02/06/2014

[ Hits: 9.300 ]

 


Iniciando Script com o Sistema - Configuração no Debian Wheezy



Dica para quem está colocando seus arquivos na pasta /etc/init.d/ e não está conseguindo carregar seus scripts na inicialização dos derivados do Debian Wheezy.

O segredo está na primeira linha, que tem que começar por #! /bin/sh, exemplo:

#! /bin/sh
start(){
echo "Firewall iniciando..........[OK]";
echo -e "\nPermitindo roteamento de Pacotes: \n";
echo "1" > /proc/sys/net/ipv4/ip_forward
echo -e "\nRoteamento de Pacotes............ [OK] \n";
echo -e "Limpa as regras\n";
iptables -F
iptables -X
iptables -Z
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -Z
echo -e "Política padrão ACCEPT\n";
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#coloca suas regras de liberação dos serviços necessários da rede
echo -e "\nLiberando destino Conexoes necessarias \n";
iptables -A FORWARD -i $WAN -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $LAN -o $WAN -j ACCEPT
#iptables -A FORWARD -i $WAN -o $LAN -j ACCEPT
iptables -A FORWARD -j LOG
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
echo -e "\nCompartilhamento da rede ativo………………….[OK]\n";
echo -e "\nConexoes necessarias OK ............ [OK] \n";
echo -e "\nRedirecionando dados para porta do Proxy\n";
iptables -t nat -A PREROUTING -s 192.168.7.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 192.168.7.0/24 -p udp --dport 80 -j REDIRECT --to-port 3128
echo -e "\nRedirecionando dados............ [OK] \n";
echo -e "\nBloqueando conexoes de intrusos............ \n";
iptables -A FORWARD -m mac --mac-source 5c:c9:d3:21:b0:2d -j DROP
echo -e "\nBloqueando conexoes de intrusos............ [OK] \n";
echo -e "\nFrewall inicializado.\n";
}
stop(){
echo -e "\nParando firewall\n";
echo -e "limpando as regras\n";
iptables -F
iptables -X
iptables -Z
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -Z
echo -e "setando em DROP/n";
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
echo "Firewall desativado!.............[OK]";
}
case "$1" in
"start") start ;;
"stop") stop ;;
"reload") stop; start ;;
*)
echo "Use parâmetros start|stop|reload";
;;
esac

Outras distros usam também:

#!/bin/bash
...seu script

Já tava ficando maluco aqui. Resolvi pesquisar na documentação do Debian sobre inicialização de scripts na /init.d/, então, encontrei isto:
Debian Policy dictates that /etc/init.d/*.sh scripts must work properly
when sourced.  The following additional rules apply:

* /etc/init.d/*.sh scripts must not rely for their correct functioning
  on their being sourced rather than executed.  That is, they must work
  properly when executed too. They must include "#!/bin/sh" at the top.
  This is useful when running scripts in parallel.

* /etc/init.d/*.sh scripts must conform to the rules for sh scripts as
  spelled out in the Debian policy section entitled "Scripts" (§10.4).

Use the update-rc.d command to create symbolic links in the /etc/rc?.d
as appropriate. See that man page for more details.

Talvez muita gente já saiba disto mas eu não sabia, pesquisei e não achei muito sobre o assunto.

Mesmo eu usando o rcconf e o chkconfig, meus scripts não iniciavam junto!

Mais uma coisa: para quem não gosta de colocar seus scripts na pasta do sistema (/etc/init.d/seu_script.sh) para inicializar automático, no Debian Wheezy, você pode colocar o caminho do seu script (exemplo: /home/usuario/seu_script.sh) no arquivo rcS e não no rc.local, como estávamos acostumados nas versões anteriores.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Somar variáveis nos shells BASH e sh

Variáveis compostas em shell script

Endereço IP como variável

Hora no prompt do terminal

Usando variáveis para alterar arquivos com sed, *grep e outros

  

Comentários
[1] Comentário enviado por ricardoolonca em 03/06/2014 - 14:11h

Na verdade, a primeira linha diz ao shell qual o interpretador que será usado para executar o script. Esse linha nunca deve ter espaços.

#!/bin/bash

ou

#!/bin/sh

ou

#!/bin/perl

Também é necessário dar permissão de execução.

# chmod +x script

Após a primeira linha (também chamada de Shebang) é recomendável colocar as seguintes linhas:

### BEGIN INIT INFO
# Provides: programa
# Required-Start: scripts_que_precisam_ser_executados_antes_deste
# Required-Stop: scripts_que_precisam_ser_parados_antes_deste
# Default-Start: 2 3 4 5 (runlevels em que o script deverá ser usado)
# Default-Stop: 0 1 6 (runlevels em que o script deverá estar parado)
# Short-Description: Uma breve descrição do programa.
### END INIT INFO

Agora, habilite o programa como o comando abaixo:

# chkconfig script on

[2] Comentário enviado por roselio_jantara em 04/06/2014 - 21:11h


[1] Comentário enviado por ricardoolonca em 03/06/2014 - 14:11h:

Na verdade, a primeira linha diz ao shell qual o interpretador que será usado para executar o script. Esse linha nunca deve ter espaços.

#!/bin/bash

ou

#!/bin/sh

ou

#!/bin/perl

Também é necessário dar permissão de execução.

# chmod +x script

Após a primeira linha (também chamada de Shebang) é recomendável colocar as seguintes linhas:

### BEGIN INIT INFO
# Provides: programa
# Required-Start: scripts_que_precisam_ser_executados_antes_deste
# Required-Stop: scripts_que_precisam_ser_parados_antes_deste
# Default-Start: 2 3 4 5 (runlevels em que o script deverá ser usado)
# Default-Stop: 0 1 6 (runlevels em que o script deverá estar parado)
# Short-Description: Uma breve descrição do programa.
### END INIT INFO

Agora, habilite o programa como o comando abaixo:

# chkconfig script on

Com certeza meu caro!
Excelente complemento ricardoolonca. Valeu!!!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts