Skript im Terminal direkt aufrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Nikolas
User
Beiträge: 102
Registriert: Dienstag 25. Dezember 2007, 22:53
Wohnort: Freiburg im Breisgau

Skript im Terminal direkt aufrufen

Beitragvon Nikolas » Samstag 28. Juni 2008, 16:01

Hallo

Ich habe mir ein kleines Programm geschrieben, dass auf traceroute basiert, mir aber durch ein paar whois anfragen noch ausgibt, in welcher Stadt der gerade besuchte Server steht.

Jetzt würde ich gerne mein Programm so verändern, dass ich nur noch den Namen und die ZielAdresse eingebe, also genau so, wie beim originalen traceroute. Jetzt muss ich mich noch in das verzeichniss cden und dort dann noch das "python traceEnhanced.py 127.0.0.1" aufrufen, und nicht einfach "traceEnhanced 127.0.0.1" was doch bedeutend einfacher wäre.

Kennt da jemand eine Möglichkeit?

Nikolas
Erwarte das Beste und sei auf das Schlimmste vorbereitet.
DasIch
User
Beiträge: 2423
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Samstag 28. Juni 2008, 16:43

Das Skript muss in einem Ordner sein der in der PATH Variable steht oder du fügst den Ordner in dem es liegt der Variable hinzu. Das ist allerdings Betriebssystem abhängig. Unter Linux würde es reichen das Skript nach /usr/bin oder /usr/local/bin zu kopieren oder dort eine Verknüpfung/Symlink anzulegen.
Nikolas
User
Beiträge: 102
Registriert: Dienstag 25. Dezember 2007, 22:53
Wohnort: Freiburg im Breisgau

Beitragvon Nikolas » Samstag 28. Juni 2008, 17:18

Ich arbeite mit Mac OS 10.5. Sprechen wir auch gerade vom gleichen? Mit geht es darum, dass ich nicht mehr das 'python' vor das skript setzen muss. (und das .py)

Im Endeffekt soll ein Nutzer nichts mehr davon merken, dass dieses Programm von mir selbst geschrieben wurde, und nicht eines der vorinstallierten Programme ist.
Erwarte das Beste und sei auf das Schlimmste vorbereitet.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Beitragvon audax » Samstag 28. Juni 2008, 17:37

Code: Alles auswählen

ln -s `pwd`/meinscript.py /usr/bin/meinscript
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 28. Juni 2008, 17:39

Shebang muss richtig eingestellt sein und das Executable Bit muss gesetzt sein. Dann kann man es mit ``./dein_programm`` aufrufen und wenn es im PATH ist, dann reicht auch ein ``dein_programm``-Aufruf.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Nikolas
User
Beiträge: 102
Registriert: Dienstag 25. Dezember 2007, 22:53
Wohnort: Freiburg im Breisgau

Beitragvon Nikolas » Samstag 28. Juni 2008, 17:56

Meinst du mit dem executable Bit einfach die Ausführerlaubnis? also chmod +x?
Wenn ich das Programm in meinem Eclipse-Workspace belasse und das ./tracePlus(.py) versuche, bekomme ich die Fehlermeldung, dass diese Datei nicht existiert.

Shebang ist richtig gesetzt.
Erwarte das Beste und sei auf das Schlimmste vorbereitet.
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Samstag 28. Juni 2008, 19:04

chmod +x setzt das exec Bit, ja ;)

Wenn du die Fehlermeldung bekommst solltest mal per `ls` schaun, ob sie denn da is ;) ./ refenziert das aktuelle Verzeichnis ;)
Nikolas
User
Beiträge: 102
Registriert: Dienstag 25. Dezember 2007, 22:53
Wohnort: Freiburg im Breisgau

Beitragvon Nikolas » Sonntag 29. Juni 2008, 08:35

für den Aufruf "ls -alF" in meinem workspace bekomme ich ein
-rwxr--r--@ (...) tracePlus.py*. (chmod 744)

Laut man ls steht das * am Ende für eine ausführbare Datei. Was das @ bedeutet, weiss ich nicht.
Die shebang ist #! usr/bin/python, was der Antwort auf "whereis python" entspricht.

Als nächstes habe ich die .py nach usr/bin/ gelegt, wo die anderen Terminal-Programme liegen. Ein Aufruf "tracePlus.py www.web.de" gab dann erst mal ein "Permission denied", was aber durch chmod 744 gelöst werden konnte. Deswegen bin ich mir auch sicher, dass jetzt diese Datei betrachtet wird. Als nächstes kommt ein
- bash: /usr/bin/tracePlus.py: usr/bin/python: bad interpreter: No such file or directory.

ls -alF liefert aber:
lrwxr-xr-x 1 root wheel 72 21 Feb 17:29 python@ -> ../../System/Library/Frameworks/Python.framework/Versions/2.5/bin/python

wobei das @ hier auf einen link hinweist. Der link verweist auf einen anderen Link, der dann auf python2.5 zeigt.


Hat da noch jemand eine Idee?
Erwarte das Beste und sei auf das Schlimmste vorbereitet.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Sonntag 29. Juni 2008, 08:54

Nikolas hat geschrieben:Ich arbeite mit Mac OS 10.5. Sprechen wir auch gerade vom gleichen? Mit geht es darum, dass ich nicht mehr das 'python' vor das skript setzen muss. (und das .py)

Im Endeffekt soll ein Nutzer nichts mehr davon merken, dass dieses Programm von mir selbst geschrieben wurde, und nicht eines der vorinstallierten Programme ist.

Drei Dinge:
  1. Wie deine Datei heißt, ist egal, das ".py" ist nur eine Konvention. Du braucht in der ersten Zeile ein "shebang", also `#!/usr/bin/python`.
  2. Die Datei muss ausführbar sein, also `chmod +x` auf deine Datei ausführen.
  3. Die Datei muss im PATH stehen, also nach `/usr/bin` oder `/usr/local/bin`kopieren oder die PATH-Variable anpassen.

Stefan
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Beitragvon Pekh » Sonntag 29. Juni 2008, 09:04

Nikolas hat geschrieben:Die shebang ist #! usr/bin/python, was der Antwort auf "whereis python" entspricht.


Es sollte nicht 'usr/bin/python' sonder '/usr/bin/python' heißen.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Beitragvon Darii » Sonntag 29. Juni 2008, 09:19

Nikolas hat geschrieben:für den Aufruf "ls -alF" in meinem workspace bekomme ich ein
-rwxr--r--@ (...) tracePlus.py*. (chmod 744)

Laut man ls steht das * am Ende für eine ausführbare Datei. Was das @ bedeutet, weiss ich nicht.
Das bedeutet, dass im Dateisystem noch Metainformationen für diese Datei hinterlegt sind. Die könntest du dir mit

Code: Alles auswählen

xattr -l datei
angucken, hat aber keinen Einfluss auf dein Problem.
Nikolas
User
Beiträge: 102
Registriert: Dienstag 25. Dezember 2007, 22:53
Wohnort: Freiburg im Breisgau

Beitragvon Nikolas » Sonntag 29. Juni 2008, 10:28

Wunderbar :)

Das / hat gefehlt :roll:

Also nochmal zum mitschreiben:

-> shebang: #!/usr/bin/python
-> unter Mac: PATH anpassen (nicht getestet) oder nach /usr/bin/ kopieren.
Wenn man diesen Ordner nicht findet TinkerTool benutzen, um auch versteckte Dateien zu finden.
-> Name: beliebig. Wenn man das .py im Finder entfernt, aufpassen, dass die Endung wirklich weg ist, per cmd-I noch mal überprüfen
-> executive Bit: per chmod 744 oder +x setzen

Danke euch allen. Ich werde den Code in einem eigenen Thread veröffentlichen.
klick
Erwarte das Beste und sei auf das Schlimmste vorbereitet.

Wer ist online?

Mitglieder in diesem Forum: jan.b