Pular para o conteúdo

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

Dica publicada em Shell Script / Variáveis
Roselio Roselio_Jantara
Hits: 10.124 Categoria: Shell Script Subcategoria: Variáveis
  • Indicar
  • Impressora
  • Denunciar

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.

Nenhuma dica encontrada.

Somar variáveis nos shells BASH e sh

Variáveis compostas em shell script

Hora no prompt do terminal

Achar ip válido e jogar para uma variável

Script IP Válidos na rede interna

#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

Entre na sua conta para comentar.