[Gelöst] -sh not found

doktorknow

Neuer User
Mitglied seit
16 Okt 2008
Beiträge
76
Punkte für Reaktionen
0
Punkte
0
Moin moin,

sorry, dass ich hier so ne Anfängerfrage stelle, aber ich finde im Moment keine Lösung.
Ich habe ein Skript auf einem Stick der FritzBox und habe "bash" mit in Freetz einkompiliert.
Dennoch will das Skript nicht gestartet werden:
root@fritz:/var/media/ftp/stick# ./check_dns.sh
-sh: ./check_dns.sh: not found

Das Skript sieht so aus:
#!/bin/sh
# dyndns check


if [ "$(ping -c4 "google.de" | grep -c "seq")" -eq 4 ]; then

if [ "$(ping -c4 "dein.dyndns.org" | grep -c "seq")" -ne 4 ]; then

echo "$(date) => DSL restart - DynDNS Problem" >> /var/media/ftp/uStor01/logs/all_check.log

killall dsld
sleep 10;
dsld -i -n
fi
fi

exit 0

Muss dort irgendwie bash auf etwas anderes verlinkt werden?
MfG
doktorknow
 
Zuletzt bearbeitet:
Dennoch will das Skript nicht gestartet werden:
Wie sind auf deiner Box die Ausgabe von:
Code:
# find / -name 'check_dns.sh'
Code:
root@fritz:/var/media/ftp/stick# sh -x ./check_dns.sh
Code:
root@fritz:/var/media/ftp/stick# ls -la check_dns.sh
 
Moin sf3978,

hier die Ausgaben:

root@fritz:/var/mod/root# find / -name 'check_dns.sh'
/var/media/ftp/stick/check_dns.sh

root@fritz:/var/media/ftp/stick# sh -x ./check_dns.sh
+
: not found.sh: line 1:
+
: not found.sh: line 1:
./check_dns.sh: line 17: syntax error: unexpected end of file (expecting "then")

root@fritz:/var/media/ftp/stick# ls -la check_dns.sh
-rwxr-xr-x 1 boxusr80 root 321 Mar 5 19:52 check_dns.sh
root@fritz:/var/media/ftp/stick#

MfG
doktorknow
 
Code:
config FREETZ_PATCH_BASH_LOGIN_SHELL
	bool "add bash to the list of login shells"
	depends on FREETZ_PACKAGE_BASH
	default n
	help
		Add bash to /etc/shells. This allows bash to be used as a login shell.
Ist die bash jetzt deine Login shell. Was steht bei dir in
Code:
cat /etc/shells
und in der /etc/passwd, bei deinen user?
Das shebang "#!/bin/sh" des Scriptes, dürfte mit der bash kompatibel sein.
 
root@fritz:/var/media/ftp/stick# cat /etc/shells
/bin/sh
/bin/ash

und in der passwd
root:x:0:0:root:/mod/root:/bin/sh
nobody:x:100:1000:nobody:/home/nobody:/bin/false
ftp:x:101:1:FTP account:/home/ftp:/bin/false
boxusr80:any:1080:0:box user:/home-not-used:/bin/sh

MfG
doktorknow
 
Ist "/bin/sh" bei dir ein symlink auf die bash oder auf die busybox oder auf ...? ;-)
Wie ist die Ausgabe von:
Code:
# ls -la /bin/sh
 
Hast Du die bash mit dieser Option (... siehe die Datei .config) in deinem Freetz-Image:
Code:
FREETZ_PATCH_BASH_LOGIN_SHELL=y
?
 
hm, nein:

FREETZ_PACKAGE_BASH=y
# FREETZ_PACKAGE_BASH_MINIMAL is not set
FREETZ_PACKAGE_BASH_READLINE=y
# FREETZ_PATCH_BASH_LOGIN_SHELL is not set

Das muss dann wohl, was?
MfG
doktorknow
 
Versuch mal dein Script mit der bash im shebang ( #!/bin/bash ), auszuführen.
 
leider immer noch kein Erfolg:
root@fritz:/var/media/ftp/stick# cat /etc/shells
/bin/sh
/bin/ash
/bin/bash
root@fritz:/var/media/ftp/stick# ./check_dns.sh
-sh: ./check_dns.sh: not found
root@fritz:/var/media/ftp/stick#

Hm, komisch.
MfG
doktorknow
 
Okay, ich habe es jetzt hinbekommen.

Es scheint irgendwie am Skript gelegen zu haben - obwohl ich es mit UltraEdit gemacht hatte.

Habe dann noch einmal ein einfachen "Hallo World" Skript erstellt und aufgerufen - das funktionierte auch. Danach habe ich das eigentliche Skript in gedit kopiert und unter einem anderen Namen gespeichert. Zurück auf die Box und siehe da... nun geht es.

Sorry, war scheinbar ein dummer Fehler von mir!
Danke für die Hilfestellung!
MfG
doktorknow
 
... - obwohl ich es mit UltraEdit gemacht hatte.

... habe ich das eigentliche Skript in gedit kopiert und ...
Mit _nano_ im Freetz-Image bzw. auf der Box, kann man betr. Editieren der Scripte für Linux, fast keinen Fehler machen.
 
Danke,

werde ich zukünftig versuchen.
MfG
doktorknow
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.