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."
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Como gerar um podcast a partir de um livro em PDF
Organizando seus PDF com o Zotero
Erro no realm join [Resolvido]
Um programa para baixar vídeos: Parabolic
Como Definir o Painel Principal em Múltiplos Monitores no Linux Mint
BlueMail não abre no Kubuntu 25.04 (8)
Não consigo montar meu cartão SD (6)
Sempre que vou baixar algum pacote acontece o erro dpkg (4)
aplicativos criados com webapp-manager não aparecem no menu do xfce (1)