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."
Enviado em 06/09/2009 - 22:41h
A julgar o nome "bantex" e a estrutura, creio que tenha usado o livro do Aurélio Marinho.Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)