parent
6b3e83f4ca
commit
fa6caf4c22
|
|
@ -1,7 +1,9 @@
|
||||||
#!/bin/zsh
|
#!/bin/bash
|
||||||
|
|
||||||
# Script pro přesměrování portu pro stanici SWS12500
|
# Script pro přesměrování portu pro stanici SWS12500
|
||||||
|
|
||||||
|
# set -e
|
||||||
|
|
||||||
STATION_IP=192.168.2.95
|
STATION_IP=192.168.2.95
|
||||||
HA=192.168.2.219
|
HA=192.168.2.219
|
||||||
SRC_PORT=80
|
SRC_PORT=80
|
||||||
|
|
@ -10,53 +12,74 @@ DST_PORT = 8123
|
||||||
INSTALL_IPTABLES=0
|
INSTALL_IPTABLES=0
|
||||||
APK_MISSING=0
|
APK_MISSING=0
|
||||||
|
|
||||||
echo "Spoštím iptables pro 80 -> 8123 přesměrování"
|
RED_COLOR='\033[0;31m'
|
||||||
|
GREEN_COLOR='\033[0;32m'
|
||||||
|
GREEN_YELLOW='\033[1;33m'
|
||||||
|
NO_COLOR='\033[0m'
|
||||||
|
|
||||||
# Máme nainstalované iptables?
|
|
||||||
|
|
||||||
echo -n "Kontrola zda jsou dostupné iptable ... "
|
function info () { echo -e "${GREEN_COLOR}INFO: $1${NO_COLOR}";}
|
||||||
IPTABLES='$(type -p "iptables")'
|
function warn () { echo -e "${GREEN_YELLOW}WARN: $1${NO_COLOR}";}
|
||||||
if ! [ -f "$IPTABLES" ]; then
|
function error () { echo -e "${RED_COLOR}ERROR: $1${NO_COLOR}"; if [ "$2" != "false" ]; then exit 1;fi; }
|
||||||
echo "chybí"
|
|
||||||
INSTALL_IPTABLES = 1
|
function check () {
|
||||||
else
|
echo -n "Kontrola dostupnosti $1 ... "
|
||||||
echo "OK"
|
if [ -z "$(command -v "$1")" ]; then
|
||||||
|
error "'$1' není nainstalován." $2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
info "OK."
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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
|
fi
|
||||||
|
|
||||||
# Máme apk?
|
if [ $INSTALL_IPTABLES -eq 1 ] && [ $APK_MISSING -eq 0 ]; then
|
||||||
echo -n "Kontrola zda je dostupný apk ..."
|
declare -a RUNINSTALL=(apk add iptables)
|
||||||
APK='$(type -p "apk")'
|
echo -n "Spouštím instalaci iptables ... ${RUNINSTAll[@]} ... "
|
||||||
if ! [ -f "$APK" ]; then
|
${RUNINSTALL[@]}
|
||||||
echo "chybí"
|
|
||||||
APK_MISSING = 1
|
|
||||||
else
|
|
||||||
echo "OK"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ APK_MISSING == 1 -a INSTALL_IPTABLES == 1 ]
|
|
||||||
echo "Nelze nakonfigurovat IP Tables. iptables chybí a chybí i instalační aplikace apk!!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ INSTALL_IPTABLES == 1 -a APK_MISSING == 0]
|
|
||||||
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 "Instalace iptables se nezdařila!"
|
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
|
||||||
|
declare -a RULE=(PREROUTING -t nat -s $STATION_IP -d $HA -p tcp -m tcp --dport $SRC_PORT -j REDIRECT --to-ports $DST_PORT)
|
||||||
|
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
|
fi
|
||||||
runiptables=(iptables -t nat -I PREROUTING --src $STATION_IP --dst $HA -p tcp --dport $SRC_PORT -j REDIRECT --to-ports $DST_PORT)
|
|
||||||
echo -n "Spouštím iptables ... ${runiptables[@]} ..."
|
|
||||||
${runiptables[@]}
|
|
||||||
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 iptables: ${EXIT_STATUS} "
|
||||||
exit $EXIT_STATUS
|
error "Přidání pravidla do iptables se nezdařilo!"
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
echo "iptables jsou nastaveny na přesměrování portu $SRC_PORT -> $DST_PORT pro stanici na IP: $STATION_IP"
|
|
||||||
exit
|
|
||||||
|
|
||||||
|
info "iptables jsou nastaveny na přesměrování portu $SRC_PORT -> $DST_PORT pro stanici na IP: $STATION_IP"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue