B
Blubb..Blubb
Grünschnabel
Hey Leute, ich hänge ein wenig an einem Problem.
Der User kann einen port frei wählen.
Also SSH_USERPORT=""
Nun habe ich aber eine.hand voll ports, die nicht genutzt werden dürfen wie
22,443,53,80 etc.
Das heißt ich muss jetzt fragen ob der $SSH_USERPORT = $PORTS_IN_USE ist.
Dazu wollte ich gern ein Array nutzen. Logisch.
Danach soll entschieden werden, ob der port frei ist bzw. Verwendet werden darf oder nicht.
Falls nicht, soll er generiert werden.
Ich werd einfach mal hin, was ich habe und hoffe, dass mir da einer auf die Sprünge helfen kann:
Das ist meine test.sh da experimentiere ich schon seit Tagen an dem Problem rum...Hat jemand einen Tipp?
Zusammengefasst will ich das:
Wenn user nix angibt > generiere
Wenn user angibt > prüfe
> wenn port frei > nutze
>wenn port nicht frei > generiere
Aber irgendwie Sitz ich da auf dem Schlauch habe mit while und for experimentiert aber sehe den Wald vor Bäumen nicht.
Puh
Der User kann einen port frei wählen.
Also SSH_USERPORT=""
Nun habe ich aber eine.hand voll ports, die nicht genutzt werden dürfen wie
22,443,53,80 etc.
Das heißt ich muss jetzt fragen ob der $SSH_USERPORT = $PORTS_IN_USE ist.
Dazu wollte ich gern ein Array nutzen. Logisch.
Danach soll entschieden werden, ob der port frei ist bzw. Verwendet werden darf oder nicht.
Falls nicht, soll er generiert werden.
Ich werd einfach mal hin, was ich habe und hoffe, dass mir da einer auf die Sprünge helfen kann:
Code:
#!/bin/bash
#------------------------------------------------
----------------------
#################################################
######################
#------------------------------------------------
----------------------
SSH_PORT_TO_USE=$(( RANDOM % (1 - 1024 + 1 ) + 5
))
echo $SSH_PORT_TO_USE
echo "-------------------------------------------
"
# Read the elements into bash array, with IFS bei
ng the de-limiter for input
#21, 25, 53, 80, 143, 443, 587, 990, 993, 2008, 8
000, 10011, 30033, 41144
IFS="," read -ra randomNos <<< "436,345,437,568,9
85,68,89,74,15,2,4,5,6,7,8,9,156,1001,1002,999"
# Print the random numbers using the '$RANDOM' va
riable built-in modulo with
# array length.
printf "%s\n" "${randomNos[ $RANDOM % ${#randomNo
s[@]}]}"
echo "-------------------------------------------
"
PORT_NUMBER=$({$randomNos[ $RANDOM % ${#randomNos
[@]}]})
echo $PORT_NUMBER
echo "-------------------------------------------
#eh so is kacke
if [ ${SSH_PORT} == '21' ] || [ ${SSH_PORT} == '25' ] || [ ${SSH_PORT} == '53' ] || [ ${SSH_PORT} == '80' ] || [ ${SSH_PORT} == '143' ] || [ ${SSH_PORT} == '443' ] || [ ${SSH_PORT} == '587' ] || [ ${SSH_PORT} == '990' ] || [ ${SSH_PORT} == '993' ] || [ ${SSH_PORT} -gt 1024 ] || [ ${SSH_PORT} -le 0 ]; then
#naja klappt.nicht richtig
if [ ${SSH_PORT} == ''suchdumireinen'' ]; then
#Generate SSH Port
declare -A ignoreList='(
[21]="1"
[22]="1"
[25]="1"
[53]="1"
[80]="1"
[143]="1"
[587]="1"
[990]="1"
[993]="1"
[443]="1"
[2008]="1"
[10011]="1"
[30033]="1"
[41144]="1")'
randomNumber="$(($RANDOM % 1023))"
#return a string
SSH_PORT=$([[ ! -n "${ignoreList["$randomNumber"]}" ]] && printf "%s\n" "$randomNumber")
sed -i "s/SSH_PORT=\"generateport\"/SSH_PORT=\"$SSH_PORT\"/g" /root/userconfig.cfg
sed -i "s/^Port 22/Port ${SSH_PORT}/g" /etc/ssh/sshd_config
fi
Das ist meine test.sh da experimentiere ich schon seit Tagen an dem Problem rum...Hat jemand einen Tipp?
Zusammengefasst will ich das:
Wenn user nix angibt > generiere
Wenn user angibt > prüfe
> wenn port frei > nutze
>wenn port nicht frei > generiere
Aber irgendwie Sitz ich da auf dem Schlauch habe mit while und for experimentiert aber sehe den Wald vor Bäumen nicht.
Puh