Phielo
Anmeldungsdatum: 13. April 2007
Beiträge: Zähle...
|
Hallo Leute, ich möchte ping auf der Shell aus einem Skript heraus ausführen.
Gebe ich ping manuell in der Shell ein, egal in welchem Verzeichnis, führt der Befehl genau das aus, was ich will.
Starte ich das Skript heißt es "Command not found".
Anscheinend hat das was mit der Variable PATH zu tun. Da ich aber ziemlich Neuling in Sachen Linux bin, weis ich leider nicht genau, wo ich da was eintragen muss, damit BASH den ping command ausführt. Danke für Eure Hilfe!
|
snafu1
Anmeldungsdatum: 5. September 2007
Beiträge: 2133
Wohnort: Gelsenkirchen
|
|
wildwaldbiberhirte
Anmeldungsdatum: 29. Dezember 2006
Beiträge: 309
Wohnort: München
|
Probier mal, den gesamten Pfad anzugeben. Also /bin/ping
|
Maduser
Anmeldungsdatum: 3. Mai 2005
Beiträge: 1238
|
Wenn du im Verzeichnis bist wo das Programm liegt startest du es mit
./script
Also Punkt steht für das aktuelle Verzeichnis. Normalerweise wird nur in Verzeichnissen gesucht die in der PATH-Variable sind ( echo $PATH ).
|
Phielo
(Themenstarter)
Anmeldungsdatum: 13. April 2007
Beiträge: 28
|
Hier der Code if ping -c 1 <ip-adresse> >/dev/null 2>&1; then echo vorhanden; fi mit Angabe des Pfades von ping /bin/ping funzt es auch nicht. Habe mein Skript mal in das Verzeichnis von Ping kopiert (/bin) und ausgeführt. Bringt aber auch keine Lösung. Habe im Verzeichnis von ping das Skript pingtest2.sh mit ./pingtest2.sh ausgeführt. Dann muss ich aber ein Passwort eingeben. Das kann es aber ja wohl nicht sein, wenn ich den Befehl in der Batchdatei ohne Passwort aufrufen kann.
|
linopolus
Anmeldungsdatum: 21. Juli 2008
Beiträge: 986
Wohnort: Ottendorf-Okrilla
|
Es gibt 2 Möglichkeiten:
Du gibst /bin/ping ein, wie schon gesagt oder
2. Du schaust, was bei dir in $PATH drin steht, und machst in deinem Script die Variable $PATH so wie sie auch außerhalb ist.
|
Phielo
(Themenstarter)
Anmeldungsdatum: 13. April 2007
Beiträge: 28
|
Du gibst /bin/ping ein, wie schon gesagt oder
Auch dabei heißt "command not found"
Du schaust, was bei dir in $PATH drin steht, und machst in deinem Script die Variable $PATH so wie sie auch außerhalb ist.
Bei mir sind folgende Paths registriert: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games Habe meine .sh um folgende Zeile im Kopf erweitert
PATH=$PATH:/bin/:/home/server/ Läuft aber immer noch nicht.
|
Maduser
Anmeldungsdatum: 3. Mai 2005
Beiträge: 1238
|
Also ich habe jetzt testweise
if ping -c 1 192.168.1.1 >/dev/null 2>&1; then echo vorhanden; fi
in eine test.sh geschrieben. Habe es ausfürhbar mit chmod +x test.sh
gemacht und ein
$ ./test.sh
vorhanden
geht.
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4673
Wohnort: Berlin
|
@Phielo: Könntest Du nochmal das Skrip zeigen und die genaue Fehlermeldung per kopieren und einfügen!?
|
Phielo
(Themenstarter)
Anmeldungsdatum: 13. April 2007
Beiträge: 28
|
Hier noch mal das Skript if /bin/ping -c 1 192.168.1.1 >/dev/null 2>&1; then echo vorhanden; fi nach dem Aufruf erscheint bash: pingtest2.sh: command not found Habe jetzt aber herausgefunden, dass es mit dem Aufruf bash pingtest2.sh funktioniert. Habe es auch mal mit chmod +x pingtest2.sh ausführbar gemacht. Geht aber nicht.
Na ja. Geht jetzt zwar, aber ich würde wirklich gerne wissen, warum es bei mir nur mit dem Zusatz bash geht. Vielleicht fällt Euch ja noch was ein.
|
linopolus
Anmeldungsdatum: 21. Juli 2008
Beiträge: 986
Wohnort: Ottendorf-Okrilla
|
Hast du am Anfang #!/bin/sh oder #!/bin/bash? Bei manchen Skripten musst du bash nehmen weil dash ein Problem hat(mehr im Wiki).
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4673
Wohnort: Berlin
|
@Phielo: Wenn Du nur den Namen eingibst, wird nicht im aktuellen Verzeichnis danach gesucht, sondern nur in denen, die in der Umgebungsvariable PATH stehen. Du kannst auch ./pingtest2.sh eingeben, also mit expliziter Pfadangabe. Und Du hättest gleich am Anfang deutlicher machen können, dass das Skript selber nicht gefunden wurde, und nicht ping innerhalb des Skripts.
|
Phielo
(Themenstarter)
Anmeldungsdatum: 13. April 2007
Beiträge: 28
|
linopolus schrieb: Hast du am Anfang #!/bin/sh oder #!/bin/bash? Bei manchen Skripten musst du bash nehmen weil dash ein Problem hat(mehr im Wiki).
Ja hatte ich eingefügt. Funktioniert aber nicht. @Phielo: Wenn Du nur den Namen eingibst, wird nicht im aktuellen Verzeichnis danach gesucht, sondern nur in denen, die in der Umgebungsvariable PATH stehen. Du kannst auch ./pingtest2.sh eingeben, also mit expliziter Pfadangabe. Und Du hättest gleich am Anfang deutlicher machen können, dass das Skript selber nicht gefunden wurde, und nicht ping innerhalb des Skripts.
Wegen der Path-Variablen habe ich das Skript testweise auch mal in einen der Pfade kopiert. Ging aber nicht.
Das er das Skript nicht findet und nicht das Kommando habe ich auch erst die Tage herausgefunden. Wie gesagt. Da es ja mit dem Aufruf bash pingtest2.sh geht, bin ich eigentlich schon ganz zufrieden und habe wieder etwas dazu gelernt.
|
DrScott
Ehemalige
Anmeldungsdatum: 7. Juli 2005
Beiträge: 6018
Wohnort: Nürnberg
|
Ich vermute mal, dass die Partition, auf der pingtest2.sh gespeichert ist, mit dem noexec-Attribut gemountet ist. Zeich doch mal deine /etc/fstab und schreib' dazu, auf welcher Partition das Skript liegt...
|
raleeha
Anmeldungsdatum: 27. April 2010
Beiträge: 75
|
Hallo liebe Leute ☺ folgendes Problem: möchte gerne lernen wie man skripte schreibt, aber bekomme es leider nicht hin das mein skript gestartet wird mit : bash skripttest.sh läuft es wie ich aus dem obigen beitrag entnommen habe... der gedanke das es evt. an meiner fstab liegen könnte hat sich bei mir aufgetan deswegen folgender codeblock... # /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sda3
UUID=b4c8b873-7690-4c4c-a61c-36beb2eee892 / ext3 relatime,errors=remount-ro 0 1
# /dev/sda1
UUID=fa26ced6-acf7-4f0e-b566-d139b481b21f /boot ext3 relatime 0 2
# /dev/sda5
UUID=808b0d95-53cc-46aa-aed2-a7245341c0eb none swap sw 0 0
# /dev/sdb1
UUID=c41c42d6-4fc4-4526-a5ea-d843a8ab5314 /media/Backup ext3 relatime,errors=remount-ro 0 1
#/dev/sdc
UUID="A8A0-A4D5" / fat32
# /dev/sdd
UUID=2ef7e1ee-06dd-4967-845b-9e3111dfea76 / reiserfs
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8
/dev/scd1 /media/cdrom1 udf,iso9660 user,noauto,exec,utf8 das skript welches ich geschrieben hab lautet wie folgt: #Mein erstes Skript
echo "ach ja"
ls
echo "soso" wäre sehr nett, wenn mir jemand einen tip geben könnte woran es liegen könnte...achso das skript hab ich mit chmod 755 skripttest ausführbar gemacht lg knut
Moderiert von DrScott: Codeblock ergänzt
|