Aqui o container de forma simplificada ... Você precisa preencher o código que você quer
#!/bin/bash
#
# ----------------------------------------------------------------------- #
# Here below it prints the help function #
# Each time in printf #
# (-) "\n" is a newline #
# (-) "\t" is tab (some spaces) #
# $0 is the the name that you give to the script #
# $1 is the 1st parameter passed to script or function. In this case: #
# (+) Out of any function $1 is the 1st parameter given to the script #
# (+) Inside a function $1 is the 1st given to the function #
# #
# ------------------------- # ------------------------------------------- #
# #
Print_Help(){ # Here it starts the function Print_Help() #
printf "\n$1\n\n" # Here you are inside a function and $1 is #
printf "SYNOPSIS \n" # the 1st parameter given to the function #
#------------------------# #
printf "\t $0 [OPTION] [IP]\n\n" # ------------------ #
printf "\t $0 -a 127.0.0.1 # to add \n" # <- hash(#) chars #
printf "\t $0 -r 127.0.0.1 # to remove\n\n" # <- out of the #
} # ^ # "double quote" #
# --- | ---------------- # ----------------- #
# +-- those hash(#) chars are inside the #
# "double quote" and they will be #
# printed as normal letters. #
# ------------------------------------------- #
Add_Function(){
echo $IP # Put here the code to add rule
# iptables -I INPUT 1 -p tcp -s $IP --dport 22 -m comment --**comment "testing for user1" -j ACCEPT.
service iptables reload # you need to run as root (or with sudo)
exit 0
}
Remove_Function(){
echo $IP # Put here the code to remove rule
service iptables reload # you need to run as root (or with sudo)
exit 0
}
if [[ $# != 2 ]] ;then #if the number of parameter is not 2
# Here we call the help function with
#+ "a single parameter in double quote" in this case:
#+ "Error wrong number of parameters for $0"
Print_Help "Error wrong number of parameters for $0"
exit 1
fi
IP=$2
if [[ "$1" == "-a" ]] ; then Add_Function ; fi
if [[ "$1" == "-r" ]] ; then Remove_Function ; fi
# Here below we call again the help function with
# "another single parameter in double quote" in this case
# "Error Unknown option $1 for $0 "
# In the "main" $1 is the 1st parameter that you pass to the script
Print_Help "Error Unknown option $1 for $0 "
exit 2
Este é apenas um exemplo para se familiarizar com o shell script e as seleções. Você pode executá-lo com uma linha de comando como sudo /bin/bash script.sh -a nnn.mmm.ooo.ppp
ou -r
, onde nnn.mmm.ooo.ppp é o IP que você deseja usar. Se você alterar a permissão (por exemplo, chmod u+x script.sh
), poderá executar com sudo ./script.sh -a nnn.mmm.ooo.ppp
.
Você tem que preencher a função com o código que você precisa.
Você pode adicionar outras funções relativas a outras opções. Nesse caso, talvez seja mais limpo usar a construção case ... esac
, como no código proposto por Cristopher, que inclui alguns recursos que você achará úteis ao concluir a fase de teste. A partir do cheque para ver se o script é executado pelo root, em um shell interativo ou não, para decidir onde redirecionar mensagens, a definição da data atual ... Comece verificando o que você precisa e adicione todos os opcionais < Passo a passo.
Atualizar
De man bash
você pode obter muitas dicas interessantes.
Da seção COMENTÁRIOS:
COMMENTS
In a non-interactive shell, or an interactive shell in which the interactive_comments option to the shopt builtin is enabled (see
SHELL BUILTIN COMMANDS below), a word beginning with # causes that word and all remaining characters on that line to be ignored.
An interactive shell without the interactive_comments option enabled does not allow comments. The interactive_comments option is
on by default in interactive shells.
Da seção QUOTING:
...
Words of the form $'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as
specified by the ANSI C standard. Backslash escape sequences, if present, are decoded as follows:
...
**\n new line**
**\t horizontal tab**
\v vertical tab
\ backslash
\' single quote
\" double quote
...