Script fixed.

* Duplicity rule test
* color loging
pull/16/head
schizza 2024-04-28 02:35:04 +02:00
parent 6b3e83f4ca
commit fa6caf4c22
1 changed files with 72 additions and 49 deletions

View File

@ -1,62 +1,85 @@
#!/bin/zsh #!/bin/bash
# Script pro přesměrování portu pro stanici SWS12500 # Script pro přesměrování portu pro stanici SWS12500
STATION_IP = 192.168.2.95 # set -e
HA = 192.168.2.219
SRC_PORT = 80
DST_PORT = 8123
INSTALL_IPTABLES = 0 STATION_IP=192.168.2.95
APK_MISSING = 0 HA=192.168.2.219
SRC_PORT=80
DST_PORT=8123
echo "Spoštím iptables pro 80 -> 8123 přesměrování" INSTALL_IPTABLES=0
APK_MISSING=0
# Máme nainstalované iptables? RED_COLOR='\033[0;31m'
GREEN_COLOR='\033[0;32m'
GREEN_YELLOW='\033[1;33m'
NO_COLOR='\033[0m'
echo -n "Kontrola zda jsou dostupné iptable ... "
IPTABLES='$(type -p "iptables")'
if ! [ -f "$IPTABLES" ]; then
echo "chybí"
INSTALL_IPTABLES = 1
else
echo "OK"
fi
# Máme apk? function info () { echo -e "${GREEN_COLOR}INFO: $1${NO_COLOR}";}
echo -n "Kontrola zda je dostupný apk ..." function warn () { echo -e "${GREEN_YELLOW}WARN: $1${NO_COLOR}";}
APK='$(type -p "apk")' function error () { echo -e "${RED_COLOR}ERROR: $1${NO_COLOR}"; if [ "$2" != "false" ]; then exit 1;fi; }
if ! [ -f "$APK" ]; then
echo "chybí"
APK_MISSING = 1
else
echo "OK"
fi
if [ APK_MISSING == 1 -a INSTALL_IPTABLES == 1 ] function check () {
echo "Nelze nakonfigurovat IP Tables. iptables chybí a chybí i instalační aplikace apk!!" echo -n "Kontrola dostupnosti $1 ... "
exit 1 if [ -z "$(command -v "$1")" ]; then
fi error "'$1' není nainstalován." $2
return 1
if [ INSTALL_IPTABLES == 1 -a APK_MISSING == 0]
runinstall=(apk add iptables)
echo -n "Spouštím instalaci iptables ... ${runinstall[@]} ... "
${runinstall[@]}
EXIT_STATUS=$?
if [ $EXIT_STATUS -ne 0 ]
echo "Instalace iptables se nezdařila!"
exit $EXIT_STATUS
fi fi
runiptables=(iptables -t nat -I PREROUTING --src $STATION_IP --dst $HA -p tcp --dport $SRC_PORT -j REDIRECT --to-ports $DST_PORT) info "OK."
echo -n "Spouštím iptables ... ${runiptables[@]} ..." return 0
${runiptables[@]} }
echo
echo "**************************************************************"
echo "* *"
echo -e "* ${GREEN_YELLOW}Spouštím iptables přesměrování pro port $SRC_PORT -> $DST_PORT ${NO_COLOR} *"
echo "* *"
echo "**************************************************************"
echo
# Máme nainstalované iptables a apk?
check "iptables" false
INSTALL_IPTABLES=$?
check "apk" false
APK_MISSING=$?
if [ $APK_MISSING -eq 1 ] && [ $INSTALL_IPTABLES -eq 1 ]; then
error "Nelze nakonfigurovat IP Tables. \n'iptables' chybí a chybí i instalační aplikace 'apk'!!\n"
fi
if [ $INSTALL_IPTABLES -eq 1 ] && [ $APK_MISSING -eq 0 ]; then
declare -a RUNINSTALL=(apk add iptables)
echo -n "Spouštím instalaci iptables ... ${RUNINSTAll[@]} ... "
${RUNINSTALL[@]}
EXIT_STATUS=$? EXIT_STATUS=$?
if [ $EXIT_STATUS -ne 0 ] if [ $EXIT_STATUS -ne 0 ]; then
echo "Přidní pravidla do iptables se nezdařilo!" warn "Chybový kód instalace: $EXIT_STATUS"
exit $EXIT_STATUS error "Instalace iptables se nezdařila!"
else
info "'iptables' úspěšně nainstalovány."
fi fi
fi fi
echo "iptables jsou nastaveny na přesměrování portu $SRC_PORT -> $DST_PORT pro stanici na IP: $STATION_IP" declare -a RULE=(PREROUTING -t nat -s $STATION_IP -d $HA -p tcp -m tcp --dport $SRC_PORT -j REDIRECT --to-ports $DST_PORT)
exit echo -ne "Spouštím iptables ... "
$(iptables -C ${RULE[@]} 2>/dev/null)
if [ $? -eq 0 ]; then
warn "Pravidlo je již v iptables zapsáno."
else
$(iptables -I ${RULE[@]})
fi
EXIT_STATUS=$?
if [ $EXIT_STATUS -ne 0 ]; then
warn "Chybový kód iptables: ${EXIT_STATUS} "
error "Přidání pravidla do iptables se nezdařilo!"
fi
info "iptables jsou nastaveny na přesměrování portu $SRC_PORT -> $DST_PORT pro stanici na IP: $STATION_IP"