user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
Baschdi schrieb: Hi, Heißt dass jetzt, so wie die Datei jetzt aussieht funktioniert es? Oder verstehe ich jetzt etwas falsch?
Oder muss ich an den Skript noch etwas ändern? #!/usr/bin/env bash/selfhostlogin.sh
#############################################
/bin/bash/xmcroplay -d 5000 :0.0 < selfhost-login
Ich krieg die Krise! Was scheibe ich denn die ganze Zeit? Hast Du den Wikiartikel shebang gelesen? Beschreib mal mit eigenen Worten, wozu die Zeile #!/usr/bin/env bash/selfhostlogin.sh
Deiner Meinung nach da ist und was sie genau bewirkt.
|
Baschdi
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2013
Beiträge: 63
Wohnort: Sinsheim
|
Hi, das heißt das ein Script mit #!/bin/bash beginnen soll und das diese Datei auführbar ist. also so: | #!/bin/bash/selfhostlogin.sh
#############################################
/home/raspberry/xmcroplay -d 5000 :0.0 < selfhost-login
|
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
Hast Du den Wikiartikel shebang gelesen?
|
Baschdi
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2013
Beiträge: 63
Wohnort: Sinsheim
|
user_unknown schrieb: Hast Du den Wikiartikel shebang gelesen?
Ja hab ich. Faustregeln
Soweit nicht anders verordnet, nimmt man
#!/bin/bash
als erste Zeile des Skripts. Das bedeutet:
| #!/bin/bash/selfhostlogin.sh <---- wie im Text beschrieben
#############################################
/home/raspberry/xmacroplay -d 5000 :0.0 < selfhost-login
|
Skriptname:
Hat das derart vorbereitete Skript Ausführungsrechte und wird es dann über
./mein_skript.sh
aufgerufen, dann ist dieser Aufruf äquivalent hierzu:
/bin/bash ./mein_skript.sh
Im Shebang muss ein absoluter oder relativer Pfad angegeben werden, da die $PATH-Umgebungsvariable nicht beachtet wird. Es genügt also nicht, hier nur #!bash zu schreiben. Das bedeutet:
| #!/bin/bash ./selfhostlogin.sh <---- wie oben beschrieben
#############################################
/home/raspberry/xmacroplay -d 5000 :0.0 < selfhost-login
|
Bei der Eingabe von raspberry@raspberry-desktop:~$ sudo selfhostlogin.sh wird die Datei nicht gefunden.
Bei der Eingabe von raspberry@raspberry-desktop:~$ selfhostlogin.sh wird die Datei gefunden jedoch habe ich dazu keine Berechtigung. | raspberry@raspberry-desktop:~$ sudo selfhostlogin.sh
/bin/bash: ./selfhostlogin.sh: Datei oder Verzeichnis nicht gefunden
raspberry@raspberry-desktop:~$
raspberry@raspberry-desktop:~$ selfhostlogin.sh
bash: /usr/local/bin/selfhostlogin.sh: Keine Berechtigung
raspberry@raspberry-desktop:~$
|
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12823
|
Baschdi schrieb: user_unknown schrieb: Hast Du den Wikiartikel shebang gelesen?
Ja hab ich.
| #!/bin/bash/selfhostlogin.sh <---- wie im Text beschrieben
|
Das ist keine gültige Shebang-Zeile - allein schon, weil /bin/bash kein Verzeichnis ist. Du musst den Namen des Interpreters angeben (siehe shebang).
| #!/bin/bash ./selfhostlogin.sh <---- wie oben beschrieben
|
Nein! Der Name des Skriptes wird automatisch übergeben und steht da nicht.
Bei der Eingabe von raspberry@raspberry-desktop:~$ sudo selfhostlogin.sh wird die Datei nicht gefunden.
Bei der Eingabe von raspberry@raspberry-desktop:~$ selfhostlogin.sh wird die Datei gefunden jedoch habe ich dazu keine Berechtigung.
Dann musst Du die Datei ausführbar machen, z.B. mit chmod -c a+rx /usr/local/bin/selfhostlogin.sh .
|
Baschdi
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2013
Beiträge: 63
Wohnort: Sinsheim
|
rklm schrieb: Baschdi schrieb: user_unknown schrieb: Hast Du den Wikiartikel shebang gelesen?
Ja hab ich.
| #!/bin/bash/selfhostlogin.sh <---- wie im Text beschrieben
|
Das ist keine gültige Shebang-Zeile - allein schon, weil /bin/bash kein Verzeichnis ist. Du musst den Namen des Interpreters angeben (siehe shebang).
| #!/bin/bash ./selfhostlogin.sh <---- wie oben beschrieben
|
Nein! Der Name des Skriptes wird automatisch übergeben und steht da nicht.
Bei der Eingabe von raspberry@raspberry-desktop:~$ sudo selfhostlogin.sh wird die Datei nicht gefunden.
Bei der Eingabe von raspberry@raspberry-desktop:~$ selfhostlogin.sh wird die Datei gefunden jedoch habe ich dazu keine Berechtigung.
Dann musst Du die Datei ausführbar machen, z.B. mit chmod -c a+rx /usr/local/bin/selfhostlogin.sh .
Faustregeln,
Soweit nicht anders verordnet, nimmt man
1 #!/bin/bash
als erste Zeile des Skripts. ich hab die Zeile jetzt angepasst in #!/bin/bash also ohne ./self.....
Das habe ich wohl immer falsch verstanden !! wenn ich jetzt folgendes eingebe kommt folgender Fehler:
| raspberry@raspberry-desktop:~$ sudo selfhostlogin.sh
/usr/local/bin/selfhostlogin.sh: Zeile 3: /home/raspberry/xmacroplay: Datei oder Verzeichnis nicht gefunden
raspberry@raspberry-desktop:~$
|
Mein Code sieht wie folgt aus:
| #!/bin/bash
#############################################
/home/raspberry/xmacroplay -d 5000 :0.0 < selfhost-login
|
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
ich hab die Zeile jetzt angepasst in #!/bin/bash also ohne ./self.....
Endlich! Er hat's! ☺
Das habe ich wohl immer falsch verstanden !!
Ja. Das ist sehr mühsam, so einen Thread zu verfolgen, wenn das Frage/Antwortspiel nicht zügig hin- und hergeht. Ich müsste jetzt den ganzen Thread von vorne lesen, um mir in Erinnerung zu bringen, welche Fragen schon geklärt sind. Das mache ich nicht, sondern riskiere was zu fragen, was schon beantwortet wurde: Was ergibt der Befehl: | ls -l /home/raspberry/xmacroplay
|
Die Meldung:
/usr/local/bin/selfhostlogin.sh: Zeile 3: /home/raspberry/xmacroplay: Datei oder Verzeichnis nicht gefunden
besagt ja, dass selfhostlogin.sh in Zeile 3 xmacroplay aufrufen will, aber xmacroplay in /home/raspberry nicht gefunden wird. Das versucht man zu überprüfen - ist die Datei nicht da, wieso ist sie nicht da, ist sie woanders, heißt sie anders, ... einen offensichtlichen Tippfehler sehe ich nicht. Was ergibt:
Das Verzeichnis gibt es?
|
Baschdi
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2013
Beiträge: 63
Wohnort: Sinsheim
|
user_unknown schrieb: ich hab die Zeile jetzt angepasst in #!/bin/bash also ohne ./self.....
Endlich! Er hat's! ☺
Das habe ich wohl immer falsch verstanden !!
Ja. Das ist sehr mühsam, so einen Thread zu verfolgen, wenn das Frage/Antwortspiel nicht zügig hin- und hergeht. Ich müsste jetzt den ganzen Thread von vorne lesen, um mir in Erinnerung zu bringen, welche Fragen schon geklärt sind. Das mache ich nicht, sondern riskiere was zu fragen, was schon beantwortet wurde: Was ergibt der Befehl: | ls -l /home/raspberry/xmacroplay
|
Die Meldung:
/usr/local/bin/selfhostlogin.sh: Zeile 3: /home/raspberry/xmacroplay: Datei oder Verzeichnis nicht gefunden
besagt ja, dass selfhostlogin.sh in Zeile 3 xmacroplay aufrufen will, aber xmacroplay in /home/raspberry nicht gefunden wird. Das versucht man zu überprüfen - ist die Datei nicht da, wieso ist sie nicht da, ist sie woanders, heißt sie anders, ... einen offensichtlichen Tippfehler sehe ich nicht. Was ergibt:
Das Verzeichnis gibt es?
Befehl ls:
raspberry@raspberry-desktop:~$ ls -ld /home/raspberry
drwxr-xr-x 19 raspberry raspberry 4096 Aug 11 11:42 /home/raspberry
raspberry@raspberry-desktop:~$ Befehl $SHELL:
paspberry@raspberry-desktop:~$ echo $SHELL
/bin/bash
raspberry@raspberry-desktop:~$ folgenden Befehl führe ich im Terminal aus (Programm xmacroplay läuft dann ab):
xmacroplay -d 5000 :0.0 < selfhost-login
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
Immer noch konfus. Oben hieß der Befehl: | #!/bin/bash
#############################################
/home/raspberry/xmacroplay -d 5000 :0.0 < selfhost-login
|
Am 29.10. startetst Du noch | /bin/bash/xmcroplay -d 5000 :0.0 < selfhost-login
|
Siehst Du den Unterschied? Jetzt startest Du nur
| xmcroplay -d 5000 :0.0 < selfhost-login
|
Mach mal bitte:
| which xmacroplay
echo $PATH
ls -l /home/raspberry/xmacroplay
|
Das letzte habe ich im letzten Post schon erbeten, war Dir zu viel oder wieso antwortest Du darauf nicht? Hälst Du das für Schikane?
|
Baschdi
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2013
Beiträge: 63
Wohnort: Sinsheim
|
Das letzte habe ich im letzten Post schon erbeten, war Dir zu viel oder wieso antwortest Du darauf nicht? Hälst Du das für Schikane?
Nein, da ist nur etwas beim copy und paste schiefgegangen. Oben hieß der Befehl:
#!/bin/bash
#############################################
/home/raspberry/xmacroplay -d 5000 :0.0 < selfhost-login
Am 29.10. startetst Du noch
/bin/bash/xmacroplay -d 5000 :0.0 < selfhost-login
Siehst Du den Unterschied? Ja das ist mir beswusst. Da ich auch ein paar Seite zum Thema Script gelesen habe, würden dort verschiedene Lösungen/Probleme aufgezeigt. Aus diesme Grund habe ich das auch mal versucht. Jetzt startest Du nur
xmacroplay -d 5000 :0.0 < selfhost-login Das gebe ich schon die ganze Zeit im Terminal ein, um das Script von xmacroplay zu starten. Den Befehl
| which xmacroplay
echo $PATH
ls -l /home/raspberry/xmacroplay
|
hole ich heute abend nach, da ich nicht von ausserhalb auf meinen PI zugreifen kann.
|
Baschdi
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2013
Beiträge: 63
Wohnort: Sinsheim
|
| raspberry@raspberry-desktop:~$ which xmacroplay
/usr/bin/xmacroplay
raspberry@raspberry-desktop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
raspberry@raspberry-desktop:~$ ls -l /home/raspberry/xmacroplay
ls: Zugriff auf '/home/raspberry/xmacroplay' nicht möglich: Datei oder Verzeichnis nicht gefunden
raspberry@raspberry-desktop:~$
|
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
Gut, und wo stehst Du nun? Ich hoffe Du hast gelernt, dass
| #!/bin/bash
#############################################
/home/raspberry/xmacroplay -d 5000 :0.0 < selfhost-login
|
nicht klappen kann, wenn xmacroplay in /usr/bin liegt, nicht in /home/raspberry. Vielleicht ist der zugrunde liegende Irrtum in vormaliger Windowstätigkeit zu suchen - da wird das aktuelle Verzeichnis immer in die Suche nach ausführbaren Dateien aufgenommen. Unter Linux nicht. Vielleicht hast Du das Programm bei der Fehlersuche hin und hergeschoben und es lag da mal, unter /home/raspberry, vielleicht Dich vertippt bei Pfad oder Namen.
|
Baschdi
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2013
Beiträge: 63
Wohnort: Sinsheim
|
user_unknown schrieb: Gut, und wo stehst Du nun? Ich hoffe Du hast gelernt, dass
| #!/bin/bash
#############################################
/home/raspberry/xmacroplay -d 5000 :0.0 < selfhost-login
|
nicht klappen kann, wenn xmacroplay in /usr/bin liegt, nicht in /home/raspberry. Vielleicht ist der zugrunde liegende Irrtum in vormaliger Windowstätigkeit zu suchen - da wird das aktuelle Verzeichnis immer in die Suche nach ausführbaren Dateien aufgenommen. Unter Linux nicht. Vielleicht hast Du das Programm bei der Fehlersuche hin und hergeschoben und es lag da mal, unter /home/raspberry, vielleicht Dich vertippt bei Pfad oder Namen.
Vielen Dank hat perfekt geklappt.
habe es in /usr/bin geändert. ☺ jetzt noch eine frage. Ich wollte das Script per cronjob starten. Jedoch hat sich der Mauszeiger in der Zeit des Startes nicht bewegt sudo crontab -e 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 | # Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
#-----------------------------------------------------------------
# Shell variable for cron
SHELL=/bin/bash
# PATH variable for cron
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
#M S T M W Befehl
#-----------------------------------------------------------------
15 18 * * 0 root /usr/local/bin/Selfhostlogin.sh
#-----------------------------------------------------------------
|
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
Erst mal eine Frage: selfhostlogin.sh selfhost-login.sh selfhostlogin selfhost-login Selfhostlogin.sh Selfhost-login.sh Selfhostlogin Selfhost-login
Welche davon gibt es wirklich? a) Unter Linux spielt Groß-/Kleinschreibung eine Rolle. b) Wenn ein Programm selfhostlogin.sh heißt, dann darf man nicht wie bei Windows das .exe, .com oder .bat das .sh weglassen. c) Bindestriche sind nicht optional d) Aritificial Intelligence ist noch weit vom Desktop entfernt - der Rechner macht stur, was man ihm sagt und erkennt nicht, was gemeint ist, auch wenn es noch so offensichtlich ist. Diese 8 Namen da oben kann es alle nebeneinander in einem Verzeichnis geben und keiner davon ist mehrdeutig. Auf der Seite cron, Abschnitt "Häufige Fehler", Absatz "Fenster öffnet sich nicht" ist zudem nachzulesen, dass sich der Zugriff auf x11-Programme via crontab kompliziert gestaltet. Was zu tun ist, ist erklärt. Wenn dann noch Fragen offen sind geht es hier weiter.
|
Baschdi
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2013
Beiträge: 63
Wohnort: Sinsheim
|
user_unknown schrieb: Erst mal eine Frage: selfhostlogin.sh selfhost-login.sh selfhostlogin selfhost-login Selfhostlogin.sh Selfhost-login.sh Selfhostlogin Selfhost-login
Welche davon gibt es wirklich? a) Unter Linux spielt Groß-/Kleinschreibung eine Rolle. b) Wenn ein Programm selfhostlogin.sh heißt, dann darf man nicht wie bei Windows das .exe, .com oder .bat das .sh weglassen. c) Bindestriche sind nicht optional d) Aritificial Intelligence ist noch weit vom Desktop entfernt - der Rechner macht stur, was man ihm sagt und erkennt nicht, was gemeint ist, auch wenn es noch so offensichtlich ist. Diese 8 Namen da oben kann es alle nebeneinander in einem Verzeichnis geben und keiner davon ist mehrdeutig. Auf der Seite cron, Abschnitt "Häufige Fehler", Absatz "Fenster öffnet sich nicht" ist zudem nachzulesen, dass sich der Zugriff auf x11-Programme via crontab kompliziert gestaltet. Was zu tun ist, ist erklärt. Wenn dann noch Fragen offen sind geht es hier weiter.
Danke für den Tipp. Aber leider hat es nicht funktioniert. Ich glaub ich hab da was falsch verstanden :/ 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 | # Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
#-----------------------------------------------------------------
LANG=de_DE.utf8
XAUTHORITY=/home/root/:Xautohority <-- muss ich hier statt home, usr eingeben?
DISPLAY=:0
# Shell variable for cron
SHELL=/bin/bash
# PATH variable for cron
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
#M S T M W Befehl
#-----------------------------------------------------------------
15 9 * * * root /usr/local/bin/selfhostlogin.sh
#-----------------------------------------------------------------
|
|