aus script an tty an und abmelden

pfau

pfau

Grünschnabel
Hallo zusammen. Ich bin noch ganz taufrisch hier im Board und auch bei Linux. Meine Distri ist openSUSE 10.2.
Eine Frage:
Ich will auf tty1 oder auch aus der grafischen Oberfläche heraus (als user) ein bash-script starten, das dann meinen Benutzernamen und das Passwort an bspw. tty2 übergibt und den login vollzieht.
Nach Abarbeitung verschiedener Befehle soll sich am Ende des Scripts ein befehl befinden, der mich auf tty2 wieder ausloggt. Wie kann ich das am besten bewerkstelligen?
Mit der Ein- und Ausgabeumleitung komm ich mittlerweile zurecht, das heißt, ich kann mit echo "username" > /dev/tty2 meinen namen an tty2 senden, dieser erscheint auch brav, nur dann erfolgt ein Zeilenumbruch und mingetty fordert mich nicht mehr zur PW Eingabe auf. Gibt es eine Möglichkeit, den Druck auf die <Enter> Taste zu simulieren und dann an tty2 zu senden(Wg. dieser Frage hab ich mehrere Nächte gegoogelt,alle Moderatoren sind dieser Frage, die schon von vielen usern gestellt wurde, anscheinend bewusst aus dem Weg gegangen)? Oder habt ihr vielleicht einen ganz anderen Lösungsansatz?
Nochmal in Kurzform: ich will mich über ein bash script auf einer beliebigen anderen tty(1-6) einloggen und wieder ausloggen können, ohne jemals auf dieser tty gewesen zu sein. Für Abhilfe wäre ich dankbar! :hilfe2:
 
Ich habe zwar momentan auch keine Lösung dafür, aber mich würde brennend interessieren, was der Zweck der ganzen Prozedur sein soll.

Warum sollte man sich auf einer tty einloggen, ohne diese interaktiv zu nutzen?
Irgendwie bleibt mir der Sinn dieser Aktion verborgen.
 
hallo grey,
ich habe in tcl/tk ein kurzes script geschrieben, das auf dem lappi meines freundes beryl und xgl beenden und starten soll. er wird sich in absehbarer zeit nicht mit der bash befassen können,deshalb ermögliche ich ihm, es über grafische oberflächen zu steuern.
das script beendet zuerst xgl mit dem gnome-xgl-switch, dann entfernt es,falls vorhanden, die autostartverknüpfung in kde für das beryl-startscript, killt beryl-manager und startet zu guter letzt xdm neu. letzteres hat anfangs nicht richtig funktioniert... xdm stoppte, startete aber nicht neu.erst als ich mich als user an tty6 angemeldet hab und das script so umschrieb, daß es den xdm restart auf tty6 ausführt, klappte es.
soweit funktioniert ja auch alles, nur muß man sich leider immer erst als user an tty6 anmelden, bevor man das script startet.
das ausloggen interessiert mich nur nebenbei...denn user soll angemeldet bleiben auf tty6..ich leite nämlich auch alle stdout auf tty6, dann kann man über einen tastendruck alle ausgaben sehen und nach dem neustart kontrollieren.
 
warum musst du das skript von einer tty ausführen?

das kannst du auch normal über die grafische oberfläche.
 
hi sinn3r,
da hast du schon recht, mach ich ja auch.ich hab ihm eine desktopverknüpfung gelegt, die das tcl script startet, dann kann er zb "beryl starten" oder "beryl stoppen" anklicken, das tcl script startet dann ein bash script auf tty6, das die aktionen durchführt. ohne diesen trick ist xdm beim aufruf von "xdm restart" nur gestoppt, vermutlich, weil mit dem x server auch das script terminiert wurde. wird das script aber auf tty6 ausgeführt, startet der xserver wieder ohne murren.
In diesem Fall wäre auch ein autologin ok..., nur hat Novell diese Funktionalität von mingetty schon seit langem weggelassen, wie ich nach einer weile googeln rausfand.. hatte folgendes versucht:
inittab folgendermaßen editiert:
....
5:2345:respawn:/sbin/mingetty tty5
6:2345:once:/sbin/mingetty -autologin pfau tty6

vielleicht fehlts auch nur an der falschen Syntax. Hab es jedenfalls so nicht hinbekommen.
Trotzdem würde mich sehr interessieren, wie man eine enter taste simuliert. Im vi zb hab ichs so gemacht: <strg+v> <enter>, das ergab dann ein blaues "^M", leider auch ohne Erfolg.
 
Zuletzt bearbeitet:
Hi!

Sorry ich kann dir auch nicht sagen wie du die Enter-Taste an ein tty schicken kannst. Ich tippe mal darauf das es allein mit einem Shellskript nicht geht.

Allerdings wäre es doch viel einfacher ein Startskript zu schreiben, das du entweder in einem runlevel automatisch oder manuell durch zwei Verknüpfungen auf dem Desktop startest bzw, stoppst.

Literatur und Beispiele dazu gibts genügend:
- http://www.galileocomputing.de/openbook/unix_guru/node103.html
- http://www.linuxnetmag.com/de/issue6/m6inits1.html
- http://www.linux-magazin.de/heft_abo/ausgaben/2004/06/startaufstellung
- http://www.linux-magazin.de/static/listings/magazin/2007/03/lpi-boot/startskript.txt

Gruß,
Philip
 
Zuletzt bearbeitet:
Ich denke mal es funktioniert nicht so einfach über die "grafische Oberfläche", da das Script ja ein Child-Process von X wäre. Wenn man nun X beendet killt man automatisch den Child mit. Aus diesem Grund wird auch der "restart" des Servers nicht mehr initiiert. (dies ist einfach nur eine Überlegung und es besteht keine Garantie für die Richtigkeit dieser)

Imho müsste man dieses Script vom Elternprozess lösen. Wie dies allerdings funktioniert, weiß ich nicht.

@SkydiverBS: Wie willst du den X-Server mit einer Verknüpfung auf dem Desktop neu starten, wenn der X-Server down ist?
Es geht nur begrenzt um das Theme "Init-Script" im vorliegenden Fall.
 
Zuletzt bearbeitet:
hallo @ SkydiverBS:
das script funktioniert ja wunderbar, man kann beryl starten und stoppen.das script erstell bei beryl und xgl start sogar eine verknüpfung in kde autostart(somit brauche ich keine weitere verkn. in init), damit beryl bis auf weiteres automatisch startet. wird beryl über das script abgeschaltet, wird die verknüpfung gelöscht, und beryl startet ab dann nicht mehr.diese probleme hab ich schon alle im griff.
nur wäre es schön, wenn man sich dafür ni/home/zencht immer auf tty6 anmelden müsste, sondern dies automatisch ginge. das ist mein problem.
@ grey:
ich stimme dir im vollem umfang zu. weil das script wahrscheinlich als elternprozess x (tty7) hatte, wurde es als dessen childprozess mit gekillt beim x neustart.
nur, das alles hab ich ja darüber gelöst, daß ich mich manuell auf tty6 eingeloggt habe und dann das vorher genannte subscript, das dann alle aktionen ausführt, auf tty6 ausgelagert habe.
fazit:
alles funktioniert wie vorgestellt, nur: ich muss mich vorher erst auf tty6 einloggen, dann läuft das script erst korrekt.
und das würde ich eben ganz gern noch automatisch haben.
zu "vom elternprozess lösen": das hab ich schon versucht indem ich ein "&" nach dem aufruf des subscripts eingegeben hab. vieleicht gibts da noch eine andere möglichkeit. vor dieser eingabe war es so, daß das grafische fenster zum anklicken solange offen blieb, bis sich das subscript beendete, jetzt koppelt es sich vom subscript ab und läuft weiter. daruf funktioniert auch alles.
nur eben dieses blöde anmelden auf tty6 vorher...
vielen dank für euere antworten! ich werd mal weiter dran bleiben
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

nochmal @ SkydiverBS
statt dem kde autostartscript könnte ich auch ein init- script schreiben, das ich dann von meinem hauptscript aus in rc5 verlinke oder den link lösche. aber dann müsste ich erst neustarten, um den effekt zu erzielen. denn init 3 und init 5 kann ich ja auch nicht mehr auf x ausführen, weil sich mit dem beenden des x servers auch das hauptscript terminiert. der effekt wäre also derselbe.
 
Zuletzt bearbeitet:
hallo SkydiverBS,
danke für deine antworten. ich hab mir alles angesehen. ein daemon hilft mir nicht weiter...auch er würde sich beenden, wenn x stoppt, denn er wäre ein weiterer childprocess von kdm. disown ist sehr interessant. ich habe jedoch eine andere lösung gefunden.
ich führe das subscript dann einfach im hintergrund aus, indem ich ein & nach einem leerzeichen hinter dem script- aufruf eingebe. das koppelt das subscript vom hauptscript ab. das subscript wird quasi vom hauptscript nur "angeschubbst", läuft dann allein weiter. das hauptscript beendet sich mit x, im code der tcl datei kann man das ausgabedisplay angeben, so startet es dann wieder in kdm, nachdem man x neu gestartet hat. dazu musste ich allerdings den sleep xx befehl einbauen, sonst würde das script versuchen, sofort auf das display auszulagern, was ja während des neustarts von x nicht klappen würde. so kommts eben erst danach. für das script, das die auswertungen (ob die nötigen prozesse laufen etc.) anzeigt, legt mir das hauptscript im kde eine autostartverknüpfung an, die nach dem öffnen des fensters jedoch sofort wieder terminiert wird. so startet alles wunderbar nach dem x neustart.
fazit:
ich habe jetzt ein komplett lauffähiges "gebilde" aus mehreren scripts, mit dem man beryl und xgl, sowie alle weiter benötigten komponenten mit einem klick starten oder stoppen kann. desweiteren legt es eine autostartverknüpfung an, damit beryl automatisch bei jedem systemstart wieder startet, oder nach dem deaktivieren nicht mehr startet.
außerdem wird nach dem umschalten automatisch angezeigt, ob beryl im autostart ist , ob xgl läuft, ob beryl-xgl läuft und ob beryl-manager läuft.
auch eine testfunktion hab ich eingebaut, mit der man einfach mal so schauen kann, ob alles den wünschen entsprechend ist. es testet die autostartverbindung und das vorhandensein aller für beryl wichtigen prozesse. vielen dank für euere mühen!
wie man sich von tty1 aus auf tty2 anmeldet, würde mich trotzdem noch interessieren...
 
Zuletzt bearbeitet:
Zurück
Oben