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."
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Não consigo instalar linux mint [RESOLVIDO] (8)
Melhorando a precisão de valores flutuantes em python[AJUDA] (14)
Instalação Uefi com o instalador clássico do Mageia [RESOLVIDO] (2)