Seite 1 von 1

Skript im Terminal direkt aufrufen

Verfasst: Samstag 28. Juni 2008, 16:01
von Nikolas
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

Verfasst: Samstag 28. Juni 2008, 16:43
von DasIch
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.

Verfasst: Samstag 28. Juni 2008, 17:18
von Nikolas
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.

Verfasst: Samstag 28. Juni 2008, 17:37
von audax

Code: Alles auswählen

ln -s `pwd`/meinscript.py /usr/bin/meinscript

Verfasst: Samstag 28. Juni 2008, 17:39
von Leonidas
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.

Verfasst: Samstag 28. Juni 2008, 17:56
von Nikolas
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.

Verfasst: Samstag 28. Juni 2008, 19:04
von cofi
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 ;)

Verfasst: Sonntag 29. Juni 2008, 08:35
von Nikolas
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?

Verfasst: Sonntag 29. Juni 2008, 08:54
von sma
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

Verfasst: Sonntag 29. Juni 2008, 09:04
von Pekh
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.

Verfasst: Sonntag 29. Juni 2008, 09:19
von Darii
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.

Verfasst: Sonntag 29. Juni 2008, 10:28
von Nikolas
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