aus script an tty an und abmelden

Dieses Thema im Forum "SuSE / OpenSuSE" wurde erstellt von pfau, 23.03.2007.

  1. pfau

    pfau Grünschnabel

    Dabei seit:
    23.03.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Ort:
    nahe Bad Birnbach, Niederbayern
    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:
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. grey

    grey -=[GHOST]=-

    Dabei seit:
    28.07.2006
    Beiträge:
    303
    Zustimmungen:
    0
    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.
     
  4. pfau

    pfau Grünschnabel

    Dabei seit:
    23.03.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Ort:
    nahe Bad Birnbach, Niederbayern
    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.
     
  5. sinn3r

    sinn3r Law & Order
    Moderator

    Dabei seit:
    28.12.2006
    Beiträge:
    2.764
    Zustimmungen:
    0
    Ort:
    Wentorf
    warum musst du das skript von einer tty ausführen?

    das kannst du auch normal über die grafische oberfläche.
     
  6. #5 pfau, 24.03.2007
    Zuletzt bearbeitet: 24.03.2007
    pfau

    pfau Grünschnabel

    Dabei seit:
    23.03.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Ort:
    nahe Bad Birnbach, Niederbayern
    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.
     
  7. #6 SkydiverBS, 24.03.2007
    Zuletzt bearbeitet: 24.03.2007
    SkydiverBS

    SkydiverBS Tripel-As

    Dabei seit:
    15.01.2005
    Beiträge:
    207
    Zustimmungen:
    0
    Ort:
    Freising
    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
     
  8. #7 grey, 24.03.2007
    Zuletzt bearbeitet: 24.03.2007
    grey

    grey -=[GHOST]=-

    Dabei seit:
    28.07.2006
    Beiträge:
    303
    Zustimmungen:
    0
    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.
     
  9. #8 pfau, 24.03.2007
    Zuletzt bearbeitet: 24.03.2007
    pfau

    pfau Grünschnabel

    Dabei seit:
    23.03.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Ort:
    nahe Bad Birnbach, Niederbayern
    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.
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. #9 SkydiverBS, 24.03.2007
    SkydiverBS

    SkydiverBS Tripel-As

    Dabei seit:
    15.01.2005
    Beiträge:
    207
    Zustimmungen:
    0
    Ort:
    Freising
    Ok. Ich stand auf dem Schlauch :oldman.

    disown könnte dir evtl. helfen. Entweder führst du das Subskript im Tcl/Tk-Skript mit einem "&disown" dahinter aus oder du rufst "disown" im Subskript selber auf.

    Vielleicht hilft dir das auch noch weiter: http://linuxboxadmin.com/articles/bashdaemon.php.

    Gruß,
    Philip
     
  12. #10 pfau, 27.03.2007
    Zuletzt bearbeitet: 27.03.2007
    pfau

    pfau Grünschnabel

    Dabei seit:
    23.03.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Ort:
    nahe Bad Birnbach, Niederbayern
    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...
     
Thema:

aus script an tty an und abmelden

Die Seite wird geladen...

aus script an tty an und abmelden - Ähnliche Themen

  1. Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

    Bräuchte Hilfe bei Backupscript mittels Bash und cronjob: Es soll für bestimmte Ordner Archivierung aller Dateien(Logfiles), die älter als 30 Tage sind machen. Am besten einmal täglich nachts irgendwann....
  2. Bashscript aus Debian6 läuft nicht auf Debian7

    Bashscript aus Debian6 läuft nicht auf Debian7: Hallo an alle, nachdem ich ein Skript von squeeze auf wheezy kopiert habe und ausführte, erschienen gleich wilde Fehlermeldungen, nach denen ich...
  3. Shell Script Problem

    Shell Script Problem: Hallo zusammen, ich arbeite momentan mit einem Plagiat Tool, die ich über Git Bash ausführe. Es wird im Endeffekt ein Link generiert, die ich...
  4. Externes Programm mit Script ausführen?

    Externes Programm mit Script ausführen?: Hallo, ich würde gern ein Script zum klonen von festplatten schreiben z.B. mit dem Programm Mondo Rescue. Ist es möglich externen Programmen...
  5. sh Script zum Autostart

    sh Script zum Autostart: hallo liebe Mitglieder, wenn ich unter Linux eins meiner Shell Skripte im Autostart haben will nutze ich immer die @reboot Funktion im crontab....