Problem beim Autostart eines Programms

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

das ganze macht doch überhaupt keinen Sinn... (stand oben glaube ich auch schon ;-) ).

Warum realisierst du das nicht als Client-Server Applikation, z.B. mit einer HTML-basierten GUI? Das wäre vielleicht / wahrscheinlich wesentlich einfacher.

Was ist überhaupt der Sinn der Übung? Was macht dein Skript und was muss der Nutzer eingeben, damit es was macht?

Gruß, noisefloor
Black Panther
User
Beiträge: 27
Registriert: Samstag 11. Juni 2016, 19:09

@noisefloor...bin leider nicht in der Position zu urteilen, ob das Sinn macht oder nicht. Es geht mir eigentlich nur darum, dass es funktioniert.
Sinn der Übung:
1. Kommunikation mit einem Socket-Adapter , der wiederum mit einem Produktionsleitsystem sich austauscht
2. Eingabe von Seriennummer durch den User
3. Auswertung der Seriennummer durch Funktionsaufruf und Weitergabe an das Produktionsleitsystem

weiteres: Zwischendurch noch ein paar Ausgaben auf dem LCD und paar blinkend LEDs. Fertig.
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@Black Panther: dort, wo Du Dein Auto-Login eingestellt hast, hast Du doch auch einen Nutzer angegeben. Wo ist das Problem, den zu ändern?

@noisefloor: Black Panther hat im anderen Thread etwas von einem Barcode-Scanner geschrieben. Dieser agiert normalerweise als ganz normale Tastatur, so dass man den Input eines Terminals braucht.
BlackJack

@noisefloor: Irgendwie hatte ich im Hinterkopf das da ein Barcode-Scanner involviert ist der sich wie eine Tastatur verhält und der am Raspi angeschlossen ist. Das heisst das Programm auf dem Raspi muss nach dem automatischen starten die ”Tastatureingaben” des Scanners entgegennehmen können.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Black Panther hat im anderen Thread etwas von einem Barcode-Scanner geschrieben.
Axo. Na dann... Sollte dann aber per RPC gehen?

Gruß, noisefloor
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

oder um nochmal auf die Client-Server Lösung zurück zu kommen: https://serratus.github.io/quaggaJS/

Gruß, noisefloor
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@noisefloor: was hat denn nun RPC hier verloren? Es handelt sich um Hardware, die wahrscheinlich an einen USB-Port des Raspi angeschlossen ist und ein Terminal braucht.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
was hat denn nun RPC hier verloren?
Alternative Client-Server Lösung.
Es handelt sich um Hardware, die wahrscheinlich an einen USB-Port des Raspi angeschlossen ist und ein Terminal braucht.
Mag ja sein - aber wie soll dann der Login headless funktionieren? Auch per Barcode?

@Black Panther: klär' uns doch mal in der vollen Gesamtheit auf. Vielleicht gibt es ja wirklich eine bessere Lösung, als dass, was du gerade versuchts zu implementieren.

Gruß, noisefloor
BlackJack

@noisefloor: Der Login soll automatisch passieren. Liest doch erst mal die vorhandenen Beiträge. Darum geht es doch unter anderem die ganze Zeit.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@BlackJack: das ist schon klar. Auch, dass der Nutzer _nicht_ `pi` sein sollte. Nur hatte ich es bis dato so verstanden, dass es X andere Benutzer geben soll (und nicht nur _einen_ anderen).

Gruß, noisefloor
Black Panther
User
Beiträge: 27
Registriert: Samstag 11. Juni 2016, 19:09

vielen Dank erst einmal für die Mithilfe. Grundsätzlich war die .bashrc der richtige Gedanke aus meiner Sicht. Ich muss mein Programm noch etwas anpassen. Beim Bootup wurde das Programm immer gestartet, aber sofort wieder abgebrochen. Scheinbar war ein Hintergrunddienst nicht zeitnah fertig. Ab 3 Sekunden time.sleep() lief das Programm erst einmal so ab wie ich es wollte.

Problem weiterhin:
Jedesmal wenn ich mich über SSH verbinde oder ein Terminal über die GUI aufrufe läuft das Programm als erstes ab. Aus jetztiger Sicht noch nicht ganz so schlimm, könnte aber in ZUkunft nervig werden.
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@Black Panther: besser Du schreibst ein Exception-Handling, das auf den fehlenden Hintergrunddienst wartet, statt pauschal 3 Sekunden Pause einzubauen. Wie man einen neuen Nutzer mit alternativer Login-Shell erzeugt, habe ich ja schon geschrieben.
BlackJack

@Black Panther: Die `.bashrc` ist IMHO der falsche Platz, auch wenn der Benutzer sonst nichts weiter macht. Diese Datei wird *jedes mal* ausgeführt wenn unter dem Benutzer eine Bash gestartet wird. Sachen die nur beim Anmelden passieren sollen, also nur bei eine Login-Shell, gehören in die `.bash_profile`. Aber selbst das würde ich nicht machen. Leg einen neuen Benutzer an und verpasse dem Dein Programm *als* Login-Shell.
Black Panther
User
Beiträge: 27
Registriert: Samstag 11. Juni 2016, 19:09

@Black Jack.... die .bashrc ist wirklich kein guter Platz. *Das jedes mal* ausführen ist genau mein Problem.

@Sirius 3... ich würde auf alle deine Vorschläge gerne reagieren, aber sie bedingen auch immer ein ewig langes googeln. Bis jetzt weiß ich noch nicht einmal, welcher Dienst es ist, der mir Beschwerden macht. Desweiteren ist mir halt auch nicht klar auf welche login-shell du anspielstt. Ich muss wissen wie der konkrete Befehl dazu heißt. Ich kenne eben nur "sudo nano .bashrc" und "sudo nano /etc/profile". Bei beiden führten Einträge die ein Autologin vollziehen sollten nicht zu den gewünschten Ergebnissen. In "sudo nano ~/.login" steht bei mir z.B garnichts drin. Von dahe nehme ich an, das ich dort falsch bin.

@Sirius 3...zum Thema neuen Nutzer anlegen bin ich auch nicht ganz auf deiner Höhe:
1. Nutzer erstellen: useradd -m -s /dir/your_script.py username
2. Dann konfigurierst Du diesen User als Autologin.
Erstens verstehe ich noch. Legst ein neuen Nutzer an und das Verzeichnis, aber zweitens ist das Problem schlecht hin. DIe Tutorials im Internet beziehen sich alle darauf "sudo nano /usr/bin/raspi-config" abzuändern und "pi" gegen z.B "Black Panther" auszutauschen. Das möchte ich aber garnicht. Ich weiß was du mir sagen willst, aber ich kann es technisch nicht umsetzen.
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@Black Panther: welcher Fehler Dein Python-Programm abstürzen läßt, siehst Du am Traceback, den Dir Python freundlicherweise liefert.
Login-Shell ist das Programm das gestartet wird, sobald Du Dich einloggst, und da willst Du Dein Python-Programm starten und dafür willst Du einen eigenen Nutzer anlegen, und das macht useradd. BlackJack hat Dir noch den Link: Systemd Autologin without Display Manager gezeigt, wo beschrieben steht, wie man ein Auto-Login einrichtet. Was Du jetzt mit raspi-config willst, versteh ich nicht.
Antworten