Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Skript aus /bin automatisch nach boot starten [gelöst]

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Znarf
Member
Member
Beiträge: 182
Registriert: 26. Jan 2010, 10:44

Skript aus /bin automatisch nach boot starten [gelöst]

Beitrag von Znarf » 18. Jan 2018, 10:20

Hallo Leute
ich habe hier ein altes opensuse 11.2 "standalone" (ohne Internet etc.), das ich als Faxserver nutze und gelegentlich für Druckaufträge benötige. Hierfür habe ich Turboprint vs. 2.37.1 installiert, damit auch etwas neuere Drucker genutzt werden können. Das funktioniert soweit auch, allerdings lässt sich der Turboprint-Dämon tpdaemon mit dem normalen Startbefehl nicht starten

Code: Alles auswählen

/etc/init.d/tpdaemon start
TPDAEMON_START not set - TurboPrint daemon not started
use instead: tpdaemon forcestart
.
Mit dem Befehl

Code: Alles auswählen

/etc/init.d/tpdaemon forcestart
TP-Daemon Version 2.37-1
Debug Level set to 0
TurboPrint daemon started
läuft der Dämon und ich kann die diversen Drucküberwachungs- und wartungsfunktionen von Turboprint nutzen.

Also habe ich ein kleines Skript in /bin geschrieben und mit chmod a+rwx für alle ausführbar gemacht:

Code: Alles auswählen

#!/bin/sh
#startet Turboprint tpdaemon manuell
/etc/init.d/tpdaemon forcestart
. Das funktioniert, allerdings kommt immer die Passwortabfrage. Diese kann man zwar mit Enter übergehen (der Daemon startet ohne Eingabe des root-Passworts), aber leider kann ich das dann so nicht in den KDE-Autostart eingeben.

Hat mir jemand einen Tipp, wie ich den automatischen Start einrichten kann (ich dachte evtl. in /etc/boot.local, aber da bin ich mir nicht sicher, ob mir das den Bootprozess (zer)stören kann, weil ggf. notwendige andere Dienste noch nicht geladen sind; eine /etc/after.local gibt es bei openSUSE 11.2 leider noch nicht).

Danke für jeden Tipp. Gruß Z.
Zuletzt geändert von Znarf am 22. Jan 2018, 20:25, insgesamt 2-mal geändert.
openSUSE 11.4 x86_64 AMD 4x3,2GHz 8GBRAM Nvidia GF 9600GT KDE 4.3.5
openSUSE 13.1 x86_64 Intel Core i5 4GBRAM
openSUSE 13.1 x_86_64 IntelCore i5 4GBRAM Ultrabook
openSUSE 42.2 x_86_64 IntelCorei7 8GBRAM Infinitybook Tuxedo Plasma5

Werbung:
josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5038
Registriert: 23. Sep 2008, 17:09

Re: Skript aus /bin automatisch nach boot starten

Beitrag von josef-wien » 18. Jan 2018, 11:38

Zweitens könntest Du /etc/init.d/after.local ja anlegen. Erstens solltest Du herausfinden, welcher Inhalt in der Variable TPDAEMON_START erwartet wird, und diesen entweder in einer Turboprint-Konfigurationsdatei oder zur Not in /etc/init.d/boot.local (das meines Wissens vor den Skripten des jeweiligen runlevel ausgeführt wird) setzen.

Znarf
Member
Member
Beiträge: 182
Registriert: 26. Jan 2010, 10:44

Re: Skript aus /bin automatisch nach boot starten

Beitrag von Znarf » 18. Jan 2018, 13:18

...hmm, das weiß ich leider nicht was TPDAEMON_START erwartet..
Aber betr. boot.local: Ich hatte mir laienhaft vorgestellt, hier in etwa so etwas einzutragen

Code: Alles auswählen

sleep 120
/bin/Turboprint_Forcestart.sh
um sicherzugehen, dass der Dienst nicht "zu früh" startet. Aber du meinst, ich könnte das auch in eine neu angelegte after.local schreiben, und das System macht das dann auch ?

Viele Grüße
openSUSE 11.4 x86_64 AMD 4x3,2GHz 8GBRAM Nvidia GF 9600GT KDE 4.3.5
openSUSE 13.1 x86_64 Intel Core i5 4GBRAM
openSUSE 13.1 x_86_64 IntelCore i5 4GBRAM Ultrabook
openSUSE 42.2 x_86_64 IntelCorei7 8GBRAM Infinitybook Tuxedo Plasma5

abgdf
Guru
Guru
Beiträge: 3073
Registriert: 13. Apr 2004, 21:15

Re: Skript aus /bin automatisch nach boot starten

Beitrag von abgdf » 18. Jan 2018, 16:55

Znarf hat geschrieben:
18. Jan 2018, 10:20

Code: Alles auswählen

/etc/init.d/tpdaemon forcestart
Das funktioniert, allerdings kommt immer die Passwortabfrage. Diese kann man zwar mit Enter übergehen (der Daemon startet ohne Eingabe des root-Passworts), aber leider kann ich das dann so nicht in den KDE-Autostart eingeben.
Dem solltest Du wohl nachgehen, warum diese Passwortabfrage (nicht für das root-Passwort) kommt, und ob es eine Möglichkeit gibt, diesen Dämon (den ich leider nicht kenne) auch ohne zu starten (z.B. mit einer speziellen Option über eine Pipe; oder etwa über eine sudo-Einrichtung).

Taucht der Dienst eigentlich in Yast in "System/Runlevel-Editor" oder "System/Diensteverwaltung" auf?
Da kann man sonst auch einstellen, ob der Dienst beim Systemstart gestartet werden soll. Die Vorgaben von Yast für den Zeitpunkt sind meistens ok. "Runlevel 3" wäre bei brauchbarem System, aber vor der grafischen Oberfläche. "Runlevel 5" wäre dann, wenn die grafische Oberfläche schon verfügbar ist.

josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5038
Registriert: 23. Sep 2008, 17:09

Re: Skript aus /bin automatisch nach boot starten

Beitrag von josef-wien » 18. Jan 2018, 17:07

Der einzige Erfolg Deines "so etwas" wird sein, daß der Startvorgang an dieser Stelle um 2 Minuten angehalten wird. Hier braucht es schon ein Konstrukt wie:

Code: Alles auswählen

(
sleep 30
/etc/init.d/tpdaemon forcestart
) &
Aber davor solltest Du einen Versuch mit /etc/init.d/after.local machen. Und an erster Stelle scheint mir ein Blick in die Datei /etc/init.d/tpdaemon zweckmäßig zu sein.

Znarf
Member
Member
Beiträge: 182
Registriert: 26. Jan 2010, 10:44

Re: Skript aus /bin automatisch nach boot starten

Beitrag von Znarf » 18. Jan 2018, 19:16

Danke für den Tipp. Darf ich fragen was die Klammern bzw, das endständige & bewirken ?

Ich werde das mit der after.local versuchen. Aber vorher schau ich, ob ich mit einem passenden Eintrag in der crontab nicht auch zum Ziel komme (der Rechner rebootet 1x täglich, und danach mach ich den Eintrag). Werd schauen obs morgen funktioniert hat und berichten. Erstmal besten Dank.
openSUSE 11.4 x86_64 AMD 4x3,2GHz 8GBRAM Nvidia GF 9600GT KDE 4.3.5
openSUSE 13.1 x86_64 Intel Core i5 4GBRAM
openSUSE 13.1 x_86_64 IntelCore i5 4GBRAM Ultrabook
openSUSE 42.2 x_86_64 IntelCorei7 8GBRAM Infinitybook Tuxedo Plasma5

Znarf
Member
Member
Beiträge: 182
Registriert: 26. Jan 2010, 10:44

Re: Skript aus /bin automatisch nach boot starten

Beitrag von Znarf » 18. Jan 2018, 19:23

Nachtrag: Ja, der tpdaemon ist im Runlevel-Editor eingestellt (enabled) und aktiviert (Runlevel 2,3,5) - aber die Statusabfrage sagt trotzdem "not running". Turboprint ist eine kommerzielle, aber wenig kostspielige Linux-Druckertreiber-Sammlung http://www.turboprint.de, womit man auch neue Drucker relativ problemlos auf älteren "Linuxen" betreiben kann.

Gruß Z.
openSUSE 11.4 x86_64 AMD 4x3,2GHz 8GBRAM Nvidia GF 9600GT KDE 4.3.5
openSUSE 13.1 x86_64 Intel Core i5 4GBRAM
openSUSE 13.1 x_86_64 IntelCore i5 4GBRAM Ultrabook
openSUSE 42.2 x_86_64 IntelCorei7 8GBRAM Infinitybook Tuxedo Plasma5

josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5038
Registriert: 23. Sep 2008, 17:09

Re: Skript aus /bin automatisch nach boot starten

Beitrag von josef-wien » 18. Jan 2018, 22:38

Die Klammern bewirken, daß die enthaltenen Befehle in einer Sub-Shell ausgeführt werden. Wenn Du an einen beliebigen Befehl ein & anhängst, wird nicht auf die Erledigung des Befehls (im vorliegenden Fall auf die Erledigung der in der Sub-Shell auszuführenden Befehle) gewartet.

Mich würde trotzdem die Datei /etc/init.d/tpdaemon interessieren, denn dort liegt die eigentliche Ursache Deines Problems (und lösen ist immer besser als umgehen).


Znarf hat geschrieben:
18. Jan 2018, 19:23
die Statusabfrage sagt trotzdem "not running"
Nachdem der Dienst sofort mit einer Fehlermeldung beendet wird, ist die Aussage korrekt.

Znarf
Member
Member
Beiträge: 182
Registriert: 26. Jan 2010, 10:44

Re: Skript aus /bin automatisch nach boot starten

Beitrag von Znarf » 18. Jan 2018, 23:59

Bin erst morgen wieder am Rechner dann schick ich die Datei
openSUSE 11.4 x86_64 AMD 4x3,2GHz 8GBRAM Nvidia GF 9600GT KDE 4.3.5
openSUSE 13.1 x86_64 Intel Core i5 4GBRAM
openSUSE 13.1 x_86_64 IntelCore i5 4GBRAM Ultrabook
openSUSE 42.2 x_86_64 IntelCorei7 8GBRAM Infinitybook Tuxedo Plasma5

Benutzeravatar
panamajo
Guru
Guru
Beiträge: 2587
Registriert: 12. Feb 2005, 22:45

Re: Skript aus /bin automatisch nach boot starten

Beitrag von panamajo » 19. Jan 2018, 11:43

Znarf hat geschrieben:
18. Jan 2018, 13:18
...hmm, das weiß ich leider nicht was TPDAEMON_START erwartet..
Mutmaßlich

Code: Alles auswählen

TPDAEMON_START="yes"

Znarf
Member
Member
Beiträge: 182
Registriert: 26. Jan 2010, 10:44

Re: Skript aus /bin automatisch nach boot starten

Beitrag von Znarf » 21. Jan 2018, 10:27

Hallo zusammen

also mein Workaround mit dem crontab Eintrag für den "forcestart" Befehl klappt jetzt soweit. Ist keine saubere "Lösung" ich weiß.

Hier nochmals der Text der /etc/init.d/tpdaemon

Code: Alles auswählen

#!/bin/sh

############################################################################
# tpdaemon
#
# Script to start/stop TurboPrint printer port daemon 
# (c) ZEDOnet GmbH
# Created 15-Nov-07
# 22-12-08 added Required-Start / Required-Stop entries in header
# 19-01-12 removed "&" after "tprintdaemon" (start in background) 
#          as it caused problems with systemd
############################################################################
### BEGIN INIT INFO
# Provides:          tpdaemon
# Required-Start:
# Required-Stop:
# Should-Start:      $ALL
# Default-Start:     2 3 5
# Default-Stop:      0 1 6
# Short-Description: TurboPrint usb port daemon 
# Description:       monitor usb ports while no print jobs are active
#                    make printer status information available to
#                    turboprint-monitor and kde/gnome applets
### END INIT INFO

########
# get Turboprint settings
########
eval $(cat "/etc/turboprint/system.cfg")

# set default user if not set in system.cfg

if [ -z $TPDAEMON_USER ] ; then
	TPDAEMON_USER="lp"
fi

# set default start mode if not set in system.cfg

if [ -z $TPDAEMON_START ] ; then
	TPDAEMON_START="1"
fi


########
# get pid of tprintdaemon
########
pid=$(pgrep tprintdaemon)

case $1 in
	restart)
		killall tprintdaemon
		sleep 1
		su -s /bin/sh $TPDAEMON_USER -c "/usr/bin/tprintdaemon 0" || /usr/bin/tprintdaemon 0
		echo "TurboPrint daemon restarted"
		;;
	forcestart)
		su -s /bin/sh $TPDAEMON_USER -c "/usr/bin/tprintdaemon 0" || /usr/bin/tprintdaemon 0
		echo "TurboPrint daemon started"
		;;
	start)
		if [ $TPDAEMON_START -eq 1 ] ; then
			su -s /bin/sh $TPDAEMON_USER -c "/usr/bin/tprintdaemon 0" || /usr/bin/tprintdaemon 0
			echo "TurboPrint daemon started"
		else
			echo "TPDAEMON_START not set - TurboPrint daemon not started"
			echo "use instead: tpdaemon forcestart"
		fi
		;;
	stop)
		killall tprintdaemon
		echo "TurboPrint daemon stopped"
		;;
	status)
		if [ $pid ] ; then
			echo "TurboPrint daemon is running, pid=$pid"
		else
			echo "TurboPrint daemon is not running"
		fi
		;;
	*)
		echo "Usage: tpdaemon {start|stop|status|forcestart}"
esac

exit 0
Offensichtlich wurde in der Historie ab 2012 ein "&" an verschiedenen Stellen entfernt, weil es mit systemd nicht funktionierte. Mein System ist aber von 2011 und läuft noch mit sysvinit...aber ob ich jetzt da noch drangehen will...
openSUSE 11.4 x86_64 AMD 4x3,2GHz 8GBRAM Nvidia GF 9600GT KDE 4.3.5
openSUSE 13.1 x86_64 Intel Core i5 4GBRAM
openSUSE 13.1 x_86_64 IntelCore i5 4GBRAM Ultrabook
openSUSE 42.2 x_86_64 IntelCorei7 8GBRAM Infinitybook Tuxedo Plasma5

josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5038
Registriert: 23. Sep 2008, 17:09

Re: Skript aus /bin automatisch nach boot starten

Beitrag von josef-wien » 21. Jan 2018, 13:46

Ich verstehe nicht, wie
Znarf hat geschrieben:
21. Jan 2018, 10:27

Code: Alles auswählen

# get Turboprint settings 
######## 
eval $(cat "/etc/turboprint/system.cfg")
funktionieren soll, aber vielleicht war das früher anders. Wie sieht diese Datei aus?

abgdf
Guru
Guru
Beiträge: 3073
Registriert: 13. Apr 2004, 21:15

Re: Skript aus /bin automatisch nach boot starten

Beitrag von abgdf » 21. Jan 2018, 14:18

Znarf hat geschrieben:
21. Jan 2018, 10:27
also mein Workaround mit dem crontab Eintrag für den "forcestart" Befehl klappt jetzt soweit.
Ah, ok.
Verantwortlich für das Warten auf eine Passworteingabe dürfte die Zeile mit "su -s ..." hier sein:

Code: Alles auswählen

forcestart)
		su -s /bin/sh $TPDAEMON_USER -c "/usr/bin/tprintdaemon 0" || /usr/bin/tprintdaemon 0
		echo "TurboPrint daemon started"
Damit wird versucht, "/usr/bin/tprintdaemon" als der User, der in $TPDAEMON_USER gespeichert ist, auszuführen.
Dein cronjob wird wahrscheinlich als root ausgeführt. root kann mit "su" ohne Passworteingabe ein beliebiger Benutzer werden. Deshalb geht das wahrscheinlich, ohne daß es an einer Passworteingabe hängenbleibt.

Ich würde die Stelle - nach einem Backup - mal zu dem ändern:

Code: Alles auswählen

forcestart)
		# su -s /bin/sh $TPDAEMON_USER -c "/usr/bin/tprintdaemon 0" || /usr/bin/tprintdaemon 0
		/usr/bin/tprintdaemon 0
		echo "TurboPrint daemon started"
Wenn das auf der Konsole macht, was es soll, würde ich "/etc/init.d/tpdaemon forcestart" ans Ende von "/etc/init.d/boot.local" eintragen. Und dann prüfen, ob das wiederum geht.

Daß Dein System von 2011 ist, hat mit all dem nichts zu tun. Das ist schließlich nicht Steinzeit. ;)

spoensche
Moderator
Moderator
Beiträge: 7343
Registriert: 30. Okt 2004, 23:53
Wohnort: Siegen

Re: Skript aus /bin automatisch nach boot starten

Beitrag von spoensche » 21. Jan 2018, 15:21

Die Variable

Code: Alles auswählen

TPDSTART
findest du entweder in der Datei /etc/turboprint/system.cfg oder unter /etc/default/turboprint oder unter /etc/sysconfig/turboprint

Znarf
Member
Member
Beiträge: 182
Registriert: 26. Jan 2010, 10:44

Re: Skript aus /bin automatisch nach boot starten

Beitrag von Znarf » 21. Jan 2018, 18:29

Also ich poste hier mal die Datei /etc/turboprint/system.cfg

Code: Alles auswählen

TP_CUPS=1
TP_UNIT=1
TP_LANGUAGE=de
TP_CHARSET=de_DE
TP_INSTALLATIONSTATE=0
TPBIN_BROWSER=firefox
TPFILE_PRINTCAP=/etc/printcap
TPPATH_CONFIG=/etc/turboprint
TPPATH_SHARE=/usr/share/turboprint
TPPATH_SPOOL=/var/spool/lpd
TPPATH_BIN=/usr/bin
TPPATH_FILTERS=/usr/lib/turboprint
TPPATH_DOC=/usr/share/turboprint/doc
TPPATH_LOG=/var/log
TPPATH_VAR=/var/spool
TPPATH_TEMP=/tmp
TPPATH_MAN=/usr/share/man
TPPATH_CUPSDRIVER=/usr/share/cups/model
TPPATH_CUPSSETTINGS=/etc/cups/ppd
TPPATH_CUPSLIB=/usr/lib/cups
TPPATH_CUPSLIB64=/usr/lib64/cups
TPOWN_SPOOLDIR=lp
TPMOD_SPOOLDIR=0755
TPOWN_SPOOLFILE=lp
TPMOD_SPOOLFILE=0640
TPDAEMON_START=0
TPDAEMON_USER=lp
TPDAEMON_GROUP=lp
TPDAEMON_PORT=5552
TPDAEMON_SERVER=1
TPUSE_GSZEDO=1
Betr
# su -s /bin/sh $TPDAEMON_USER -c "/usr/bin/tprintdaemon 0" || /usr/bin/tprintdaemon 0
/usr/bin/tprintdaemon 0
echo "TurboPrint daemon started"
das funktioniert auf der Konsole weder als User noch als root...

Und: ja, cronjob hab ich als root angelegt, das ermöglicht aber problemloses Arbeiten mit den Printwerkzeugen für alle User.

Gruß Z.
openSUSE 11.4 x86_64 AMD 4x3,2GHz 8GBRAM Nvidia GF 9600GT KDE 4.3.5
openSUSE 13.1 x86_64 Intel Core i5 4GBRAM
openSUSE 13.1 x_86_64 IntelCore i5 4GBRAM Ultrabook
openSUSE 42.2 x_86_64 IntelCorei7 8GBRAM Infinitybook Tuxedo Plasma5

Znarf
Member
Member
Beiträge: 182
Registriert: 26. Jan 2010, 10:44

Re: Skript aus /bin automatisch nach boot starten

Beitrag von Znarf » 21. Jan 2018, 18:46

oh...nach dem Aufruf des Komandozeilen Befehls
/usr/bin/tprintdaemon 0
started der Daemon leider jetzt auch mit dem forcestart Kommando nicht mehr...das ist natürlich nun blöd und eine Verschlimmbesserung. Kann ich da was zurückdrehen ???
In den messages steht

Code: Alles auswählen

TUSB_Daemon: TP-Daemon already installed...quitting
openSUSE 11.4 x86_64 AMD 4x3,2GHz 8GBRAM Nvidia GF 9600GT KDE 4.3.5
openSUSE 13.1 x86_64 Intel Core i5 4GBRAM
openSUSE 13.1 x_86_64 IntelCore i5 4GBRAM Ultrabook
openSUSE 42.2 x_86_64 IntelCorei7 8GBRAM Infinitybook Tuxedo Plasma5

abgdf
Guru
Guru
Beiträge: 3073
Registriert: 13. Apr 2004, 21:15

Re: Skript aus /bin automatisch nach boot starten

Beitrag von abgdf » 21. Jan 2018, 22:12

Wenn er "already installed" ist, muß man ihn wohl zuerst stoppen:

Code: Alles auswählen

/etc/init.d/tpdaemon stop

josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5038
Registriert: 23. Sep 2008, 17:09

Re: Skript aus /bin automatisch nach boot starten

Beitrag von josef-wien » 21. Jan 2018, 22:21

Znarf hat geschrieben:
21. Jan 2018, 18:29
/etc/turboprint/system.cfg

Code: Alles auswählen

TPDAEMON_START=0
Auch wenn mir nicht klar ist, auf welchem Weg das Skript zu den Informationen aus dieser Datei kommt, dürfte eine Änderung von 0 auf 1 dazu führen, daß der Aufruf mit start funktioniert.

Znarf
Member
Member
Beiträge: 182
Registriert: 26. Jan 2010, 10:44

Re: Skript aus /bin automatisch nach boot starten

Beitrag von Znarf » 21. Jan 2018, 23:21

Der stop Aufruf bringt nichts startet jetzt danach weder mit start noch mit forcestart...
Das andere 1 statt 0 werd ich morgen ausprobieren
Gruß
openSUSE 11.4 x86_64 AMD 4x3,2GHz 8GBRAM Nvidia GF 9600GT KDE 4.3.5
openSUSE 13.1 x86_64 Intel Core i5 4GBRAM
openSUSE 13.1 x_86_64 IntelCore i5 4GBRAM Ultrabook
openSUSE 42.2 x_86_64 IntelCorei7 8GBRAM Infinitybook Tuxedo Plasma5

abgdf
Guru
Guru
Beiträge: 3073
Registriert: 13. Apr 2004, 21:15

Re: Skript aus /bin automatisch nach boot starten

Beitrag von abgdf » 22. Jan 2018, 01:20

Keine Panik. Man kann ja alles wiederherstellen.
Zeig' doch nochmal bitte den aktuellen Text von "/etc/init.d/tpdaemon".

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste