View Full Version : Ajuda em shell script !!


XTeRmlnAtOR
09-11-2007, 22:17
Alguem sabe como fazer uma verificaçao do tipo ...
Que verifique se os números introduzidos so sejam zeros ou uns.... tipo introduzir numeros em binario e se o utilizador meter numeros diferetes de zeros e uns dar erro?


Abraço!!

whitehatg
09-11-2007, 22:24
usa o case ou o if :P
já nao escrevo bash alguns anos mas podes tirar duvidas e aprender bastante por estes scripts que fiz para as SP´s

projecto: http://forunsbb.com/forum/viewtopic.php?f=145&t=6155

MKPSYBNC.SH

#/bin/sh

################################################## ###################################
# Criado por whitehatg@gmail.com #
# 10/2/04 #
################################################## ###################################
clear

echo "
mkpe versão 1.1

+-+-+-+-+-+-+-+-+-+ +-+-+-+ +-+-+-+-+-+-+-+-+
|m|k|e|g|g|d|r|o|p| |a|n|d| |m|k|p|s|y|b|n|c|
+-+-+-+-+-+-+-+-+-+ +-+-+-+ +-+-+-+-+-+-+-+-+
"
mkdir -p ~/psybncs

# NOME DO PSYBNC
echo -n "Nome (nick) do psyBNC: "
read -e NICK

# COPIA O NECESSARIO PARA A USER DIR
if [ -d ~/psybncs/$NICK ]
then
sfd="sdf" # do nothing
else
cp -r /usr/share/psybnc_default/psybnc ~/psybncs/$NICK
fi
cd ~/psybncs/$NICK

# PARTYLINE PORT
PARTYLINEPORT=1024

while [ $PARTYLINEPORT -ge 50000 ] || [ $PARTYLINEPORT -le 1024 ]
do
echo -n "Indique a porta que deseja para aceder ao psyBNC (tem de ser maior que 1024 e menor que 50000): "
read -e PARTYLINEPORT

if [ $PARTYLINEPORT -lt 50000 ] && [ $PARTYLINEPORT -gt 1024 ] && [ -n $PARTYLINEPORT ]
then
TEMP=`netstat -al | grep -c ":$PARTYLINEPORT "`
if [ $TEMP -gt 0 ]
then
echo "Porta ocupada, escolha outra."
PARTYLINEPORT=1024
fi
else
PARTYLINEPORT=1024
fi

done

echo "PSYBNC.SYSTEM.PORT1=$PARTYLINEPORT" > $NICK.conf
echo "PSYBNC.SYSTEM.HOST1=*" >> $NICK.conf
echo "PSYBNC.HOSTALLOWS.ENTRY0=*;*" >> $NICK.conf

# CRONTAB
echo -n "Deseja adicionar o psyBNC ao crontab? [S/N]: "
read -e CONTINUAR

while [ $CONTINUAR = "S" ] || [ $CONTINUAR = "s" ]
do
cp /usr/share/psybnc_default/psybnc/*.tempfile ~/psybncs/$NICK
cat 1.tempfile > psybncchk
DIR=`pwd`
echo "PSYBNCPATH=$DIR" >> psybncchk
cat 2.tempfile >> psybncchk
echo "./psybnc $NICK.conf &>/dev/null" >> psybncchk
chmod 700 psybnc
chmod 700 psybncchk
chmod 700 $NICK.conf
echo "0,10,20,30,40,50 * * * * $DIR/psybncchk >/dev/null 2>&1" >> ~/cron
crontab ~/cron

echo "adicionado ao crontab."

CONTINUAR="N"
done

rm -f *.tempfile

echo "feito."
echo ""
echo "################################################## ###############"
echo ""
echo "Para activar o psyBNC agora basta executar os seguintes comandos:"
echo "1 - cd ~/psybns/$NICK"
echo "2 - ./psybnc $NICK.conf"
echo ""
echo "Para se ligar ao psyBNC basta entrar no seu client de IRC habitual (ex. mIRC) e fazer:"
echo "1 - /server xx.server.org:$PARTYLINEPORT:Password_pretendida"
echo ""
echo "Se encontrar algo erro no script por favor, mande um mail para whitehatg@gmail.com"
echo ""
echo "################################################## ###############"
echo ""





MKEGGDROP.SH
#/bin/sh

################################################## ###################################
# Criado por whitehatg@gmail.com #
# 10/2/04 #
################################################## ###################################
clear

echo "
mkpe versão 1.1

+-+-+-+-+-+-+-+-+-+ +-+-+-+ +-+-+-+-+-+-+-+-+
|m|k|e|g|g|d|r|o|p| |a|n|d| |m|k|p|s|y|b|n|c|
+-+-+-+-+-+-+-+-+-+ +-+-+-+ +-+-+-+-+-+-+-+-+
"

# COPIA O NECESSARIO PARA A USER DIR
if [ -d ~/eggdrops ]
then
cp /usr/share/eggdrop_default/eggdrop/*.tempfile ~/eggdrops
else
cp -r /usr/share/eggdrop_default/eggdrop ~/eggdrops
fi

cd ~/eggdrops

# NICK DO EGGDROP
echo -n "Nick do eggdrop que deseja (ex. O_Meu_Bot): "
read -e NICK

# CRIA A CONF
cat 1.tempfile > $NICK.conf
echo "set nick \"$NICK\"" >> $NICK.conf
mkdir -p $NICK

# NICK ALTERNATIVO
echo -n "Nick alternativo do eggdrop que deseja (ex. O_Meu_Bot2): "
read -e ALTNICK
echo "set altnick \"$ALTNICK\"" >> $NICK.conf

# PASSWORD DO NICK
echo -n "Password do Nickserv do nick do eggdrop: "
read -e PASS

# REALNAME
echo -n "Realname do eggdrop que deseja (ex. O Bot do Joao): "
read -e REALNAME
echo "set realname \"$REALNAME\"" >> $NICK.conf

# USERNAME
echo -n "Username do eggdrop que deseja (ex. O_Meu_Bot): "
read -e USERNAME
echo "set username \"$USERNAME\"" >> $NICK.conf

# DONO DO NICK
echo -n "Nick do Owner (Dono) do eggdrop (ex. O_Meu_Nick): "
read -e OWNER
echo "set admin \"$OWNER\"" >> $NICK.conf

# SERVIDOR DE IRC(S)
echo "set servers {" >> $NICK.conf
CONTINUAR="S"
while [ $CONTINUAR = "S" ] || [ $CONTINUAR = "s" ]
do
echo -n "Indique o server de IRC para o eggdrop se ligar (ex. irc.ptnet.org:6667): "
read -e SERVER
echo "$SERVER" >> $NICK.conf

echo -n "Quer adicionar mais algum server? [S/N]: "
read -e CONTINUAR
done
echo "}" >> $NICK.conf
echo "set network \"PTshells\"" >> $NICK.conf
echo 'set botnet-nick "$nick"' >> $NICK.conf
echo "set owner \"$OWNER\"" >> $NICK.conf
echo "set confvar \"$NICK\"" >> $NICK.conf

# VHOST
echo -n "Quer utilizar vhost no eggdrop? [S/N]: "
read -e CONTINUAR

while [ $CONTINUAR = "S" ] || [ $CONTINUAR = "s" ]
do
echo -n "Indique o vhost (ex. ptshells.com): "
read -e VHOST
echo "set my-hostname \"$VHOST\"" >> $NICK.conf

echo -n "Indique o ip do vhost (ex. 123.45.67.89): "
read -e IPVHOST
echo "set my-ip \"$IPVHOST\"" >> $NICK.conf
CONTINUAR="N"
done

# PARTYLINE PORT
cat 2.tempfile >> $NICK.conf
PARTYLINEPORT=1024

while [ $PARTYLINEPORT -ge 50000 ] || [ $PARTYLINEPORT -le 1024 ]
do
echo -n "Indique a porta que deseja para aceder ao egddrop (tem de ser maior que 1024 e menor que 50000): "
read -e PARTYLINEPORT

if [ $PARTYLINEPORT -lt 50000 ] && [ $PARTYLINEPORT -gt 1024 ] && [ -n $PARTYLINEPORT ]
then
TEMP=`netstat -al | grep -c ":$PARTYLINEPORT "`
if [ $TEMP -gt 0 ]
then
echo "Porta ocupada, escolha outra."
PARTYLINEPORT=1024
fi
else
PARTYLINEPORT=1024
fi

done
echo "listen $PARTYLINEPORT all" >> $NICK.conf


# CANAIS PARA O EGGDROP
cat 3.tempfile >> $NICK.conf
echo -n "Quer adicionar algum canal ao eggdrop? [S/N]: "
read -e CONTINUAR

while [ $CONTINUAR = "S" ] || [ $CONTINUAR = "s" ]
do
echo -n "Indique o canal (ex. #o_meu_canal): "
read -e CANAL

echo "channel add $CANAL {" >> $NICK.conf
echo " chanmode \"+nt-likm\"" >> $NICK.conf
echo "}" >> $NICK.conf
echo "channel set $CANAL +statuslog" >> $NICK.conf

echo -n "Quer adicionar mais algum canal? [S/N]: "
read -e CONTINUAR
done

cat 4.tempfile >> $NICK.conf
echo "set nickpass \"$PASS\"" >> $NICK.conf
cat 5.tempfile >> $NICK.conf

# CRONTAB
echo -n "Deseja adicionar o eggdrop ao crontab? [S/N]: "
read -e CONTINUAR

while [ $CONTINUAR = "S" ] || [ $CONTINUAR = "s" ]
do
cat 6.tempfile > $NICK.botchk
DIR=`pwd`
echo "botdir=\"$DIR\"" >> $NICK.botchk
echo "botscript=\"eggdrop $NICK.conf\"" >> $NICK.botchk
echo "nick=\"$NICK\"" >> $NICK.botchk
echo "confvar=\"\$nick\"" >> $NICK.botchk
cat 7.tempfile >> $NICK.botchk
chnod 700 eggdrop
chmod 700 $NICK.botchk
chmod 700 $NICK.conf
echo "0,10,20,30,40,50 * * * * $DIR/$NICK.botchk >/dev/null 2>&1" >> ~/cron
crontab ~/cron

echo "adicionado ao crontab."

CONTINUAR="N"
done


rm -f *.tempfile

echo "feito."
echo ""
echo "################################################## ###############"
echo ""
echo "Para activar o eggdrop agora basta executar os seguintes comandos:"
echo "1 - cd ~/eggdrops"
echo "2 - ./eggdrop -m $NICK.conf"
echo ""
echo "Quando o eggdrop estiver no irc basta entrar no seu client de IRC habitual (ex. mIRC) e fazer:"
echo "1 - /msg $NICK hello"
echo "2 - /msg $NICK pass_que_deseja"
echo "e para aceder a party-line do eggdrop basta:"
echo "1 - /chat $NICK"
echo ""
echo "Se encontrar algo erro no script por favor, mande um mail para whitehatg@gmail.com"
echo ""
echo "################################################## ###############"
echo ""

slack_guy
10-11-2007, 01:31
Pode ser assim?

#!bin/sh
clear;
echo -n "Introduza uma sequencia de 0s e 1s: " && read;
echo $REPLY | perl -lne 'print $_ =~ /^[0|1]+$/ ? "OK" : "NOT OK"';

XTeRmlnAtOR
12-11-2007, 02:59
ok tks ppl ;)