Hi Leute,
wie der Titel verrät habe ich Schwierigkeiten mit einem Shell-Skript, welches ich gerne ausführen lassen möchte. Vorab die Info: Ich bin bei weitem kein Experte was solche Skripte betrifft und habe nur bedingt Erfahrungen sammeln können.
Das Skript heißt fritzbox-vert-update.sh - Ziel dieses Skripts soll es sein, das von Letsencrypt erstellte Zertifikat (in drei Teile unterteilt), in eine *.cert-Datei zu konvertieren und auf die Fritzbox zu laden.
Das Skript sieht wie folgt aus (Quelle):
Wenn ich jetzt das Skript in Bash bzw. in der Shell starte, erhalte ich jedes mal die folgende Fehlermeldung:
Ich vermutete irgendeinen Fehler in besagtem iconv und habe iconv so gestartet, mit ähnlicher Fehlermeldung:
Nun stoße ich jedoch an meine Grenzen, den Fehler weiterhin zu beheben. Ich hoffe, ihr könnt mir weiterhelfen
wie der Titel verrät habe ich Schwierigkeiten mit einem Shell-Skript, welches ich gerne ausführen lassen möchte. Vorab die Info: Ich bin bei weitem kein Experte was solche Skripte betrifft und habe nur bedingt Erfahrungen sammeln können.
Das Skript heißt fritzbox-vert-update.sh - Ziel dieses Skripts soll es sein, das von Letsencrypt erstellte Zertifikat (in drei Teile unterteilt), in eine *.cert-Datei zu konvertieren und auf die Fritzbox zu laden.
Das Skript sieht wie folgt aus (Quelle):
PHP:
#!/bin/bash
# parameters
USERNAME="maybe empty"
PASSWORD="fritzbox-password"
CERTPATH="path to cert eg /etc/letsencrypt/live/domain.tld/"
CERTPASSWORD="cert password if needed"
HOST=http://fritz.box
# make and secure a temporary file
TMP="$(mktemp -t XXXXXX)"
chmod 600 $TMP
# login to the box and get a valid SID
CHALLENGE=`wget -q -O - $HOST/login_sid.lua | sed -e 's/^.*<Challenge>//' -e 's/<\/Challenge>.*$//'`
HASH="`echo -n $CHALLENGE-$PASSWORD | iconv -f ASCII -t UTF16LE |md5sum|awk '{print $1}'`"
SID=`wget -q -O - "$HOST/login_sid.lua?sid=0000000000000000&username=$USERNAME&response=$CHALLENGE-$HASH"| sed -e 's/^.*<SID>//' -e 's/<\/SID>.*$//'`
# generate our upload request
BOUNDARY="---------------------------"`date +%Y%m%d%H%M%S`
printf -- "--$BOUNDARY\r\n" >> $TMP
printf "Content-Disposition: form-data; name=\"sid\"\r\n\r\n$SID\r\n" >> $TMP
printf -- "--$BOUNDARY\r\n" >> $TMP
printf "Content-Disposition: form-data; name=\"BoxCertPassword\"\r\n\r\n$CERTPASSWORD\r\n" >> $TMP
printf -- "--$BOUNDARY\r\n" >> $TMP
printf "Content-Disposition: form-data; name=\"BoxCertImportFile\"; filename=\"BoxCert.pem\"\r\n" >> $TMP
printf "Content-Type: application/octet-stream\r\n\r\n" >> $TMP
cat $CERTPATH/privkey.pem >> $TMP
cat $CERTPATH/fullchain.pem >> $TMP
printf "\r\n" >> $TMP
printf -- "--$BOUNDARY--" >> $TMP
# upload the certificate to the box
wget -q -O - $HOST/cgi-bin/firmwarecfg --header="Content-type: multipart/form-data boundary=$BOUNDARY" --post-file $TMP | grep SSL
# clean up
rm -f $TMP
Wenn ich jetzt das Skript in Bash bzw. in der Shell starte, erhalte ich jedes mal die folgende Fehlermeldung:
Rich (BBCode):
bash-4.4# fritzbox-cert-update.sh
/bin/fritzbox-cert-update.sh: line 17: /opt/bin/iconv: No such file or directory
Ich vermutete irgendeinen Fehler in besagtem iconv und habe iconv so gestartet, mit ähnlicher Fehlermeldung:
Rich (BBCode):
-bash: /opt/bin/iconv: No such file or directory