Enviado em 18/04/2009 - 17:12h
estou fazendo um programinha pra bloquear portas no sistema. no momento, não estou conseguindo inserir nada no arquivo portas.txt, que está no mesmo diretório dos scrips fireslack e bantex. primeiramente, quero escrever no arquivo portas, todas as portas que serão bloqueadas, para só a partir daí inserir as regras de bloqueio. porém, qd coloco um número e escolho bloquear, o shell fecha, junto com o programa. podem me ajudar a descobrir o erro?#!/bin/bash
#fireslack.sh - provê uma interface gráfica para a #ferramenta iptables
#Autor: Paulo Vitor <opalaruby@pop.com.br>
#Este programa recebe como parâmetro uma informação do usuário a respeito
# de uma porta, vindo a retornar o bloqueio ou liberação desta.
#Histórico:
#v.0.1 2008-10-02, Paulo Vitor:
# -Versão de testes, iniciando apenas as interfaces gráficas,
# sem inserção/remoção de dados
#v.0.2 2009-01-05, Paulo Vitor:
# -Versão de testes, com mais recursos gráficos,
# ainda sem inserção/remoção de dados; troca do nome SlackWall (já existente em outro programa) por FireSlack
#Licença: GPL
#mostra uma caixa com essa mensagem
#dialog --msgbox 'Olá, bem vindo ao Slackwall' 5 40
#primeira interface inicial
#dialog --title "Slackwall"\
# --menu "O que deseja fazer?" 0 0 0 Listar "Lista portas bloqueadas"\
# Bloquear "Bloqueia portas" Liberar "Libera portas"
#o comando a seguir define o arquivo portas (no mesmo diretório que o script principal) como nosso banco de dados, ou seja, a base onde serão armazenados esses dados
BANCO=portas.txt
#o comando source busca o script bantex.sh, que será o gerenciador do banco de dados textual
source bantex.sh || {
echo "Ocorreu algum erro ao buscar o script bantex"
return 1
}
#primeiramente, usamos o while para transformar o programa num loop, ou seja, para que o programa não seja finalizado após cada ação do usuário e sim, volte ao menu principal
#while :
#do
#primeira janela do programa a seguir
acao=$(dialog --stdout --menu "Bem vindo ao FireSlack! O que deseja fazer?" 0 0 0\
Bloquear "Bloqueia uma porta do sistema"\
Liberar "Libera uma porta do sistema"\
Listar "Lista as portas bloqueadas")
#o bloco a seguir se aplica quando o usuário escolhe a opção Bloquear
case "$acao" in
Bloquear)
xlogin = $(dialog --title "Bloquear Porta" --stdout --inputbox "Digite o número da porta:" 0 0)
[ "$xlogin" ] || exit 1
#o trecho a seguir confere se a porta já não está bloqueada; se estiver, mostra um aviso.
tem_chave "$xlogin" && {
msg = "A porta '$xlogin' já está bloqueada."
dialog --msgbox "$msg" 6 40
exit 1
}
;;
#o bloco a seguir se aplica quando o usuário escolhe a opção Listar
Listar)
#lista das portas (apaga a primeira linha)
temp=$(mktemp -t lixo.XXXXXX)
pega_campo 1 | sed 1d > "$temp"
dialog --title "Portas Bloqueadas" --textbox "$temp" 13 40
rm $temp
;;
esac
#done
#!/bin/bash
#bantex.sh - Gerenciador do Banco Textual
#Biblioteca de funções para gerenciar os dados no banco textual
#2009-01-07, Paulo Vitor
# -Primeiros códigos, para inserção, exclusão e listagem.
#a seguir, é definido o separador padrão, caso seja necessário usar, no futuro
SEP=:
#a seguir, é definido um arquivo temporário
TEMP=temp.$$
#a seguir, o primeiro teste, para definição da relação entre o arquivo texto e o banco.
[ "$BANCO" ] || {
echo "Ocorreu algum erro na relação entre o banco de dados e o arquivo de gravação dos dados."
return 1
}
#a função a seguir é pra verificar se a chave $1 já existe no banco de dados
tem_chave() {
grep -i -q "^$1$SEP" "$BANCO"
}
#o trecho a seguir apaga o registro (chave $1) do banco, verificando se a chave existe
apaga_registro() {
tem_chave "$1" || return #se não tem, ele volta, sem tentar apagar
grep -i -v "^$1$SEP" "$BANCO" > "$TEMP" #apagando a chave
mv "$TEMP" "$BANCO" #regravando o banco
}
#o trecho a seguir cuida da inserção do registro $* no banco, verificando se não já existe no banco
insere_registro() {
local chave = $(echo "$1" | cut -d $SEP -f1) #pegando o primeiro campo
if tem_chave "$chave"; then #se tiver, ele retorna, mostrando uma mensagem
echo "A porta '$chave' já está bloqueada."
return 1
else
echo "$*" >> "$BANCO" #gravando o registro, mostrando uma mensagem
echo "Porta '$chave' bloqueada com sucesso!"
fi
return 0
}
#o trecho a seguir verifica a questão das permissões de leitura e escrita
#[ -r "$BANCO" -a -w "$BANCO" ] || {
# echo "Confira as permissões de leitura e escrita"
# return 1
#} #nesse, caso, se o arquivo do banco não existir, ou não tiver permissões de acesso, será exibida uma msg
echo "Script chegou a linha final sem erros aparentes."
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta